Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Obere Grenze für Speicherbedarf von Lc0?
- - By Dieter Kraft Date 2019-09-24 18:02
Hallo,

was ist der Grund für den Speicherhunger von Lc0?
Gibt es eine obere Schranke?

Gruß
Dieter
Parent - - By Stefan Pohl Date 2019-09-25 07:40
Dieter Kraft schrieb:

Hallo,

was ist der Grund für den Speicherhunger von Lc0?
Gibt es eine obere Schranke?

Gruß
Dieter


Der Grund ist, daß beim MCTS-Algorithmus der gesamte Suchbaum im Speicher gehalten wird. Je länger lc0 an einem Zug rechnet (und je schneller die Hardware ist), desto größer wird logischerweise der Speicherbedarf. Wird der Zug dann auf dem Brett gespielt, ist der Speicher wieder frei und es geht wieder von vorne los. Problematisch sind also nur lange Analysen einer Brettstellung (z.B. fürs Fernschach).
Parent - - By Peter Martan Date 2019-09-25 07:48 Edited 2019-09-25 07:51
Stefan Pohl schrieb:

Problematisch sind also nur lange Analysen einer Brettstellung (z.B. fürs Fernschach).

Oder große Hardware- Zeiten im Match, nein?
Auch spielt es dabei wohl eine Rolle, ob mit Ponder on gespielt wird, wenn der Gegner lange rechnet. Wird dann, wenn der Gegner zieht, der Hash von LC0 mit Ponder on auch gelöscht?
Parent - - By Horst Sikorsky Date 2019-09-25 09:11
wird voller und voller bis man das Partiefenster schließt.
Parent - By Peter Martan Date 2019-09-25 12:41
Ich nehme also an, bei Ponder on wird der Hash nicht mit jedem Zug gelöscht.
Parent - - By Stefan Pohl Date 2019-09-25 14:55 Edited 2019-09-25 15:09
Peter Martan schrieb:

Stefan Pohl schrieb:

Problematisch sind also nur lange Analysen einer Brettstellung (z.B. fürs Fernschach).

Oder große Hardware- Zeiten im Match, nein?


Hatte ich ja geschrieben: "Je länger lc0 an einem Zug rechnet (und je schneller die Hardware ist), desto größer wird logischerweise der Speicherbedarf"

Peter Martan schrieb:

Auch spielt es dabei wohl eine Rolle, ob mit Ponder on gespielt wird, wenn der Gegner lange rechnet. Wird dann, wenn der Gegner zieht, der Hash von LC0 mit Ponder on auch gelöscht?


Nein, das spielt keine Rolle: Auch, wenn mit Pondern gespielt wird, startet eine komplett neue Berechnung und ein komplett neuer MCTS-Baumaufbau, wenn lc0 gezogen hat. Ist pondern aktiviert wird dann einfach der erwartete Zug des Gegners zusätzlich auf dem internen Brett von lc0 ausgeführt und dann startet die MCTS-Baumsuche ab dort neu. Der gespeicherte MCTS-Baum wird immer gelöscht, sobald lc0 einen Zug macht. Was anderes ist der NNCache (dieser entspricht eher dem Hash-Begriff), hier bleiben die Einträge erhalten, so wie bei persistenten Hashtables auch. Es ist wichtig, zu verstehen, daß der gespeicherte MCTS-Suchbaum etwas ganz anderes ist, als der NNCache.
Der MCTS-Suchbaum wächst ja ganz anders und viel unsystematischer, als der Suchbaum einer AB-Engine. Daher muß seine komplette Struktur gespeichert werden. Der NNCache speichert (wie klassische Hahstables) nur eine bestimmte Brettstellung und die Bewertung durch das NeuralNetz. Wenn innerhalb der MCTS-Suche diese Stellung erneut vorkommt, wird viel Zeit gespart. Daher ist eine ausreichende NNCacheSize eminent wichtig. Zudem ist zu beachten, daß in der MCTS-Suche bereits bewertete Stellungen weit häufiger erneut auftauchen, als in der normalen AB-Minimax-Suche und zudem jede Stellung, die im Baum auftaucht komplett bewertet werden muß, was im AB-Suchbaum nicht der Fall ist (da reicht oftmals auch die reine Materialbilanz). Daher ist der NNcache auch sehr viel wirksamer als Hashtables bei AB-Engines.

Nochmal der Link zu der sehr informativen Grafik-Slideshow von crem:

https://slides.com/crem/lc0#/1

Da sieht man im Verlauf sehr schön, wie der MCTS-Suchbaum sich vom AB-Suchbaum grundlegend unterscheidet.
Parent - By Peter Martan Date 2019-09-25 16:15 Upvotes 1
Danke.
Parent - - By Walter Knobloch Date 2019-09-26 10:24 Edited 2019-09-26 10:27
es gibt leider (noch) ein großes Problem bezüglich des NN-Cache:
Die Stellungen werden zusammen mit ihrer history (also einer gewissen Zughistorie) gespeichert. Eine bereits vorher berechnete Stellung muß also in der Regel neu berechnet werden.
Dadurch ist der NN-Cache weit weniger wirkungsvoll als er sein könnte.
Gerade in Endspielen macht sich dies bemerkbar, aber auch bei langen Dauerschachsequenzen.
Parent - By Stefan Pohl Date 2019-09-26 11:55
Walter Knobloch schrieb:

es gibt leider (noch) ein großes Problem bezüglich des NN-Cache:
Die Stellungen werden zusammen mit ihrer history (also einer gewissen Zughistorie) gespeichert. Eine bereits vorher berechnete Stellung muß also in der Regel neu berechnet werden.
Dadurch ist der NN-Cache weit weniger wirkungsvoll als er sein könnte.
Gerade in Endspielen macht sich dies bemerkbar, aber auch bei langen Dauerschachsequenzen.


Aha. OK, das war mir nicht bewußt.
Up Topic Hauptforen / CSS-Forum / Obere Grenze für Speicherbedarf von Lc0?

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill