Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / TCEC-Hardware
- - By Benno Hartwig Date 2020-02-22 06:10
Beim Betrachten der TCEC-Hardware fiel mir die ungleiche RAM-Verteilung bei AB- und NN-Engines auf:
AB : RAM: 128 GB DDR4 (available to engines)
NN : RAM: 16 GB DDR3-2133

https://wiki.chessdom.org/TCEC_Season_17_Further_information

Ist es so, dass NN-Engines mit besonders viel Speicher eh nichts anfangen können?
Oder wie sonst mag gerechtfertigt sein, dass sie hier viel kürzer gehalten werden?
Parent - - By Tom Paul Date 2020-02-22 07:25
Das kommt auf die Netzgröße an.
Die kleinen Netze rechnen viel schneller, somit füllt sich der RAM schneller.
Deshalb wird eine Aufrüstung auf 64 GB RAM empfohlen.
Diese benutze ich auch bei großen Netzen und dadurch wird der RAM viel viel seltener als früher voll.
Endlich keine Abstürze mehr und endlich hängt sich der Rechner nicht mehr auf.
Und keine verschenkte ELO mehr durch zu wenig RAM.

Sofern TCEC vor hat Sergios 30x384 oder 40x512 Netze zu verwenden, ist alles gut.
Ansonsten wird es lustig bei einem kleinen Netz in einer komplizierten Stellung, an der lange gerechnet wird .
Parent - - By Reinhold Stibi Date 2020-02-22 08:31 Edited 2020-02-22 08:36
Lc0 soll hauptsächlich nur den RAM von der Grafikkarte nutzen können und es würde nicht auf den
RAM im Rechner ankommen.

Glaube nicht, dass TCEC bei Lc0 bei der Super-Hardware am RAM sparen würde, wenn der wichtig wäre.
Parent - - By Horst Sikorsky Date 2020-02-22 09:22
der RAM ist für LCO wichtig, das Weis doch Jeder. 4096 MB einstellen OK aber der Große wird auch gebraucht!
schon wieder Wettbewerbsverzerrung
Parent - - By Peter Weise Date 2020-02-22 09:42
LC0 verwendet das RAM der Grafikkarte. Die Einstellung wird via NNCacheSize vorgenommen und sollte deutlich höher als default sein, am besten eine Null (0) an den Wert anhängen. Das RAM des PCs ist nebensächlich, LC0 erkennt auch keine Hasheinstellungen welche via GUI vorgegeben werden! Also nix da von wegen Wettbewerbsverzerrung!
Parent - By Reinhold Stibi Date 2020-02-22 09:49
Ja, das stimmt.

Stefan Pohl hat das schon mehrfach erklärt. Er kann es besser darlegen als ich.
Parent - By Tom Paul Date 2020-02-22 09:55
Peter Weise schrieb:

LC0 verwendet das RAM der Grafikkarte. Die Einstellung wird via NNCacheSize vorgenommen und sollte deutlich höher als default sein, am besten eine Null (0) an den Wert anhängen. Das RAM des PCs ist nebensächlich, LC0 erkennt auch keine Hasheinstellungen welche via GUI vorgegeben werden! Also nix da von wegen Wettbewerbsverzerrung!


Meinst du nebensächlich oder überflüssig?
Bei 16 GB RAM des PCs kann man nicht von überflüssig sprechen und wenn 16 GB RAM benötigt werden, dann ist das auch schon etwas mehr als nur nebensächlich.
Parent - - By Lothar Jung Date 2020-02-22 10:18 Upvotes 1
NNCacheSize verwendet das PC-RAM.
Parent - - By Peter Weise Date 2020-02-22 10:36
Nur beim Backend Blas, also LC0 @ CPU, wir reden hier aber über LC0 @ GPU! Und hierbei brauchen "nur" die Worker-Threads etwas RAM.
Parent - - By Eduard Nemeth Date 2020-02-22 10:56
Ich weiss inzwischen auch dass Lc0  den NNCache nutzt. Was passiert jedoch wenn ich unter der Fitz GUI den Hash zB. auf 7 GB stelle? Wird die GUI diesen Wert vom RAM beschlagnahmen, um ihn für eine Engine zur Verfügung zu stellen, auch wenn die Engine ihn nicht nutzen kann? Weil, dann hätte man weniger RAM übrig für den NNCache.
Parent - - By Peter Weise Date 2020-02-22 11:31
Was bedeutet: "wenn ich unter der Fitz GUI den Hash zB. auf 7 GB stelle"
Ich kenne Fritz-GUI nicht.
Falls gemeint ist: 7 GB einer (einer!) Engine zuzuteilen, dann wäre dies im Falle LC0 bedeutungslos, da es den Befehl Hash nicht kennt und somit den Default vom NNCacheSize verwenden würde. Eine andere Engine jedoch würde diese 7 GB sicherlich nutzen, so denn das Gesamtsystem es hergibt und diese Engine solch eine Menge an Hash allokieren kann.
Parent - - By Eduard Nemeth Date 2020-02-22 11:39 Edited 2020-02-22 12:00
"Ich kenne Fritz-GUI nicht." Ich meinte Fritz von ChessBase (Fritz 15, 16, 17), das kennst Du doch, oder? Wenn nicht, mit welcher GUI spielst Du?

Edit: Habe es soeben nachgeprüft am Laptop. Die GUI kann soviel oder sowenig Hash anzeigen wie sie kann (bei mir sind mit 8 GB RAM, 5 GB Hash möglich), Lc0 nutzt nur den angegebenen NN Cache.
.
Parent - By Peter Weise Date 2020-02-22 12:08
Entschuldigung, unpräzise von mir. Ich kenne Fritz, verwende ich aber nicht. Bei mir laufen nur Shredder + CutechessCli. Da fällt mir ein: es gibt FatFritz, einen Nachbau von LC0. Da könnte ich mir vorstellen, daß es mit Hash geht, falls der "Autor" dies dann intern in NNCacheSize umwandelt?! Daß es mit LC0 nicht geht hast du ja gerade selbst geprüft.
Parent - By Thomas Plaschke Date 2020-02-22 12:46 Upvotes 1
Lässt sich doch leicht überprüfen: NNCacheSize auf einen niedrigen Wert einstellen (bspw. 200), damit Speicheranforderungen von lc0 sofort erkennbar werden. Ein Netz nehmen, dass möglichst hohe Knotenzahlen ermöglicht (bspw. 11258-64x6-se von dkappe oder ein T59-Netz). Syzygy-Zugriffe nicht erlauben (die fordern selbst laufend Speicher ab) und eine beliebige Mittelspielstellung (ein Matt in 1 o.ä. würde ich aber nicht nehmen) analysieren lassen und vorher den Windows-Taskmanager starten und im Register "Leistung" auf die Grafik für "Arbeitsspeicher" klicken. Einige Zeit laufen lassen und dabei sporadisch kontrollieren (das Ganze kann schon über eine Stunde dauern - je nach Grafikkarte und RAM-Ausstattung). Parallel dazu die nps mit dem Wert vom Anfang der Analyse vergleichen. Dann hat es mit den Spekulationen ein Ende.

Ich glaube an der Diskussion erkennen zu können, wer sich damit tatsächlich noch nicht befasst hat und nur Hörensagen wiedergibt.

Viele Grüße
Th. Plaschke
Parent - - By Walter Knobloch Date 2020-02-23 13:40 Edited 2020-02-23 14:09
Das ist falsch. RAM "Verbrauch" ist unabhängig vom backend.
Je mehr nodes/move, desto mehr RAM. Für die aktuelle Saison wird TCEC mit Sicherheit mehr als 16GB zur Verfügung stellen.
Der RAM der GPU wird weder für den Suchbaum noch den NN-Cach verwendet. Erstaunlich, wie sich solche Gerüchte entwickeln.
Unbedingt notwendig ist, daß der RAM groß genug für den Suchbaum ist. Dies läßt sich abschätzen, wenn man pro Knoten 250 bytes veranschlagt.
Für 8 MNodes/move also 2GB.
Eine 12h Analyse mit T59 auf RTX 2070 benötigt danach ca. 1TB RAM.
Im NNCache belegt ein Eintrag ca. 350 bytes.
Parent - - By Peter Weise Date 2020-02-23 16:30
LC0 und Suchbaum? Das RAM der GPU wird nicht für den NNCacheSize verwendet? Alles klar, ich muß hier nicht zwingend mein Wissen darlegen. Viel Spaß noch beim "Gerüchte verstreuen".
Parent - - By Lothar Jung Date 2020-02-23 16:57
Cache size for Leela but this has nothing to do with the usual cache for AlphaBeta engines. It greatly affects nodes searched per time and it stores NN evaluations, which can be reused if the same positions is reached by transposition..
E.g for setting 400000 we use: 
--nncache=400000     (default: 200000  min: 0  max: 999999999)
Putting this parameter is also optional as if we don't put anything it will use default number, i.e 200000.

Es wird PC-RAM verwendet.
Parent - By Peter Weise Date 2020-02-23 17:04
Dies bezieht sich auf die Worker-Threads (Default=2). Hatte ich weiter oben erwähnt.
Parent - - By Walter Knobloch Date 2020-02-23 20:26
Peter Weise schrieb:

LC0 und Suchbaum? Das RAM der GPU wird nicht für den NNCacheSize verwendet? Alles klar, ich muß hier nicht zwingend mein Wissen darlegen. Viel Spaß noch beim "Gerüchte verstreuen".


eieiei. Es wäre in der Tat besser Du würdest Dein "Wissen" nicht verstreuen. Wenn Dir jemand recht genau sagt, wo Du falsch liegst, solltest Du vielleicht kontrollieren, ob Deine Überzeugung richtig ist.
Stattdessen so eine Antwort. Eigentor.

Wenn Du nicht mal weißt, daß auch Leela einen Suchbaum generiert - was auch sonst? - was weißt Du dann überhaupt?
Parent - - By Walter Knobloch Date 2020-02-23 21:08
für alle, die es genau wissen wollen (also nicht Peter "Weise"):

der NN-Cache ist nicht das Gleiche wie Hashtables, hat aber Ähnlichkeiten.
Er kann die Suche beschleunigen, belegt aber RAM (und nein, nicht GPU RAM).
Wenn man die richtige NN-Cache Größe für sich bestimmen will, sollte man zunächst sicherstellen, daß der Arbeitsspeicher für den Suchbaum ausreicht.
Wie bereits angegeben, fallen 250 bytes pro Knoten an.
Beispiel: Man verwendet ein T60 Netz auf RTX 2070, was vielleicht 12 kN/sec ergibt, und möchte zumindest vereinzelt mal ne Analyse über eine Stunde laufen lassen:
3600s * 12000 * 250 bytes = 10,8 GB. Dazu kommt noch der Speicherverbrauch des OS und evtl. anderer Programme. Also ist für diese Anwendung 16GB RAM schon das Minimum (ohne NN-Cache).
Hat man 32GB RAM, könnte man in obigem Beispiel noch ~ 10GB dem NNCache zuweisen. Dieser kann dann knapp 30 mio. Stellungen enthalten.
Parent - By Walter Knobloch Date 2020-02-23 23:23
vergessen zu erwähnen: eine Stellung im NN-Cache benötigt ~350 bytes.
Parent - - By Peter Weise Date 2020-02-24 09:40 Upvotes 1
Zuerst war ich ein wenig erstaunt daß Stefan Pohl hier das Handtuch geworfen hat als jemand welcher sich sehr viel und schon recht lange mit LC0 auf GPU beschäftigt hatte und auch sehr viel erklärt und dargelegt hat, teilweise mit äußerst(!!) viel Geduld. Nun verstehe ich seine Reaktion!
Parent - - By Walter Knobloch Date 2020-02-24 10:55 Upvotes 1
Soll ich Dir jetzt den relevanten Programmcode verlinken, Hardwarebasics oder Leela's Suche erklären?
Lies es einfach selber nach: https://en.wikipedia.org/wiki/Monte_Carlo_tree_search#Monte_Carlo_Tree_Search_(MCTS)
Leela verwendet UCT (Upper Confidence bounds applied to Trees) und der gesamte Baum muß im Speicher liegen.
Das läßt sich nicht auf den VRAM auslagern.
Parent - - By Jörg Oster Date 2020-02-24 11:01 Upvotes 1
Dann gebe ich auch noch meinen Senf dazu. 

Dies hier müsste der entsprechende Code für den NN-Cache sein:
https://github.com/LeelaChessZero/lc0/blob/master/src/utils/cache.h

Wenn mich nicht alles täuscht, wird da der normale Arbeitsspeicher des Geräts genutzt,
und nicht der VRAM der GPU ...

Edit: der NN-Cache ist in etwa vergleichbar mit einem Eval-Hash bei AB-Engines.
Parent - By Walter Knobloch Date 2020-02-24 12:05
Ich fürchte Peter Weise wird sich weder von Programmcode noch von einem der Entwickler überzeugen lassen .
Parent - - By Peter Herbst Date 2020-02-22 14:22 Upvotes 1
Peter Weise schrieb:

LC0 verwendet das RAM der Grafikkarte. Die Einstellung wird via NNCacheSize vorgenommen und sollte deutlich höher als default sein, am besten eine Null (0) an den Wert anhängen. Das RAM des PCs ist nebensächlich, LC0 erkennt auch keine Hasheinstellungen welche via GUI vorgegeben werden! Also nix da von wegen Wettbewerbsverzerrung!


Obwohl ich den NNCacheSize auf 20 mio eingestellt habe nimmt lc0 bei mir laut GPU-Z maximal 1.5 mb, also nur einen Bruchteil des vorhandenen Speichers. Zudem habe ich auch keinerlei Auswirkung der NNCacheSize Einstellung auf den tatsächlich benutzten Speicher feststellen können

Stattdessen rotzt lc0 sehr gut erkennbar die 32 Gb ram voll.

Habe ich falsche Einstellungen an anderer Stelle? 
Parent - - By Walter Knobloch Date 2020-02-24 11:56
Du hast völlig recht damit, daß der gesamte RAM belegt wird, wenn Du Leela lang genug rechnen läßt und auch mit der Minimalbelegung des VRAMs hast Du Recht.
Ignorier einfach das was Peter Weise geschrieben hat.
Parent - - By Jörg Oster Date 2020-02-24 12:02
Eventuell lohnt es sich, mit folgendem Parameter zu experimentieren, der wohl eine obere Grenze für die Speichernutzung setzt:

Zitat:
--ramlimit-mb   RamLimitMb   Maximum memory usage for the engine, in megabytes. The estimation is very rough, and can be off by a lot. For example, multiple visits to a terminal node counted several times, and the estimation assumes that all positions have 30 possible moves. When set to 0, no RAM limit is enforced.
Default value: 0
Minimum value: 0
Maximum value: 100000000
Parent - By Walter Knobloch Date 2020-02-24 12:13 Edited 2020-02-24 12:20
Ihr müßt nicht experimentieren:
Das RAM-Limit hat einfach die Funktion, sicherzustellen, daß das System reaktionsfähig bleibt (ausreichend Speicher hat).
Ist dieses Limit bei der Suche erreicht, wird die Suche einfach beendet. Absolut sinnvoll bei langen Analysen.
Wie gesagt: ein 10b Netz wie T59 auf ner RTX Karte würde in einer Über-Nacht-Analyse ca. 1TB Speicher belegen. Die wenigsten haben so viel RAM.
Wenn die Gefahr besteht, daß der Speicher "voll läuft" sollte man den NN-Cache auf 0 reduzieren. Das kostet zwar ein wenig Geschwindigkeit in der Suche, aber insgesamt kann der Suchbaum weiter wachsen und eine tiefere Suche erfolgen.
Parent - By Tom Paul Date 2020-02-22 09:57
Horst Sikorsky schrieb:

der RAM ist für LCO wichtig, das Weis doch Jeder. 4096 MB einstellen OK aber der Große wird auch gebraucht!
schon wieder Wettbewerbsverzerrung


Das ist eine Anpassung der Leela-Ratio und keine Wettbewerbsverzerrung.
Parent - - By Tom Paul Date 2020-02-22 09:53
Und was passiert, wenn der RAM der Grafikkarte voll ist?
Wird dann der normale RAM verwendet oder schaltet LC0 ab oder gibt es einen Systemcrash?
Und wieso zeigt Windows dann bei mir an, dass sich der normale RAM füllt und zwar deutlich füllt, also zwischen 32 und auch deutlich mehr GB, dass kann ja eigentlich nicht möglich sein, da meine beiden RTX 2080 Tis zusammen gerade mal auf 22 GB GPU RAM kommen.
Parent - By Peter Weise Date 2020-02-22 10:15
Tom Paul schrieb:

Und was passiert, wenn der RAM der Grafikkarte voll ist?
...


Das selbe wie bei A/B-Engines: der älteste Eintrag wird überschrieben.
Parent - - By Reinhold Stibi Date 2020-02-22 10:02
Mein Zweitcomputer Ryzen 5 hat nur 8 GB RAM und verwende 3.12 GB
für Engine Matches Lc0 gegen Stockfish, auch mit sehr großen Networks
und habe damit überhaupt keine Probleme, geschweige denn Abstürze.
Parent - By Horst Sikorsky Date 2020-02-22 11:24 Edited 2020-02-22 11:26
bei den kurzen Zeiten geht das. ich spielte auch schon mal 120min +30s und bei NN Cache 20000000, MAX COLL 256, Minibatch 1024, da wurde es mit 64GB Gesamtspeicher
Früher mit RTX 2070 + RTX 2060 ein großes Problem.
und die TCEC wird doch mit viel stärkerer Hardware spielen müssen.
Parent - - By Tom Paul Date 2020-02-22 17:12
Reinhold Stibi schrieb:

Mein Zweitcomputer Ryzen 5 hat nur 8 GB RAM und verwende 3.12 GB
für Engine Matches Lc0 gegen Stockfish, auch mit sehr großen Networks
und habe damit überhaupt keine Probleme, geschweige denn Abstürze.


Die kleinen Netze verursachen das RAM Problem, nicht die sehr großen Netze.
Von daher ist es kein Wunder das du kein Problem hast .
Das Problem dürfte TCEC haben, falls sie tatsächlich eines der kleinen schwachen Netze nehmen sollten, welche gerade trainiert werden bzw. wurden.

Außerdem merkt man das Problem vor allem bei langer Bedenkzeit und das trifft auf deine Matches auch nicht zu.

Somit kannst du unter diesen Bedingungen nichts feststellen .
Parent - - By Eduard Nemeth Date 2020-02-22 17:30
Ich gehe davon aus dass beim TCEC das T60 Netz spielt.
Parent - - By Lothar Jung Date 2020-02-22 17:42
Ich auch. Wird bei Discord stark vermutet.
Parent - By Tom Paul Date 2020-02-22 17:56
Es muss ja auch nicht immer das stärkste LC0 Netz bei TCEC teilnehmen.
- By Peter Herbst Date 2020-02-23 12:22
Zitat:
LC0 verwendet das RAM der Grafikkarte. Die Einstellung wird via NNCacheSize vorgenommen und sollte deutlich höher als default sein, am besten eine Null (0) an den Wert anhängen. Das RAM des PCs ist nebensächlich, LC0 erkennt auch keine Hasheinstellungen welche via GUI vorgegeben werden! Also nix da von wegen Wettbewerbsverzerrung!

Stefan Pohl hat das schon mehrfach erklärt. Er kann es besser darlegen als ich.


Mit der Suchfunktion habe ich die Erklärung leider nicht gefunden. Kann bitte jemand helfen.

Vielen Dank
PH
Up Topic Hauptforen / CSS-Forum / TCEC-Hardware

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill