Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / LD2 / T58 Parametertuning
- - By Stefan Pohl Date 2019-11-30 21:36 Edited 2019-11-30 22:17
Jörg Burwitz hat mich gebeten, seine Tuning-Empfehlungen für LD2 und T58 Netze (gleiche Größe von 128x10) von discord hier mal zu posten, da er keinen Account hier hat.

Zunächst empfiehlt er für LD2 auf Smartphone/CPU die folgenden Einstellungen:
max-prefetch=2 und miniBatchSize=8

Dann hat er mit CLOP und cutechess die Parameter (für LD2 und T58418 auf RTX GPU) CPuct, FPUValue, Policy Temperature getunt, was bei einem großen Testrun des LD2 Netzes gegen Stockfish (s.u.) satte +39 Elo Zugewinn gebracht hat(!) - Allerdings mit extrem kurzen Bedenkzeiten, sodaß der Zugewinn bei längeren Bedenkzeiten sicher geringer ausfallen dürfte.
Meine beiden RTX2060 Notebooks sind zur Zeit mit Testruns beschäftigt, aber in 2.5 Tagen sollte ein Testrun enden, dann werde ich mal das LD2 Netz mit den getunten Parametern zumindest mal einen Testrun beginnen lassen und sehen, wie es läuft. Sollte es gut laufen, lasse ich den Testrun natürlich durchlaufen. Aber generell muß ich natürlich mit dem Testen von Spezialsettings sehr haushalten, da ich schon mit den "normalen" NN-Testruns kaum hinterherkomme. Aber diese Settings sehen hier im Ultrabullet-Test sehr gut aus, das ist also einen Versuch wert, meine ich. Und ich habe ja schon ein Testergebnis von LD2 mit default-Parametern, insofern habe ich da schon einen Vergleichswert. Den ich bei T58 nicht habe. Bei den T58 Netzen warte ich daher noch ab. Am besten, bis sie ausgelernt haben. Man muß bitte immer bedenken, daß ein voller 3000 Partien NN-Testrun bei mir gute 6 Tage dauert...

Tuning: CPuct / FpuValue / PolicyTemperature with LD2 and latest T58 net at ~5000 nodes/move vs. SF-dev
LC0-version: v0.22.0
LC0 options: Id58418 / LD2, Backend=cudnn-fp16, MoveOverheadMs=0
SF options: 16 threads, Contempt=0
Hardware: Ryzen 7 2700 + RTX 2080TI
Time control: LC0: 1.68s/game+0.028s/move, SF-dev: 1.20s/game+0.020s/move, time forfeits disabled
Speed: Nodes/move: ~5000 (LC0)
Book: Balanced 3-move-book
Tablebases: 6-man
Adjudication: 6-man TBs + -resign movecount=3 score=550 -draw movenumber=1 movecount=10 score=5, captures and pawn moves resetting counters
Software: CLOP + Cutechess-CLI
11000 games each:
Code:

                    default   tuned (LD2)   tuned (Id58418)
CPuct:                3.0        2.78            2.70
FpuValue:             1.2        0.43            0.50
PolicyTemperature:    2.2        1.87            1.53


Test gauntlet with LD2 and match conditions as in tuning (SF with 1.38s/game+0.023s/move):
Code:

   # ENGINE       :  RATING  ERROR  CFS(%)   GAMES  DRAWS(%)
   1 lc0-tuned    :    35.2   10.0   100.0    2650      43.6
   2 stockfish    :     0.0   ----    81.7    5300      42.9
   3 lc0          :    -4.5    9.8     ---    2650      42.2
Parent - - By Eduard Nemeth Date 2019-11-30 22:20
Danke für die settings! Werde es natürlich testen.

Habe neulich ein T58 Netz auf dem Smartphone installiert und wunderte mich zunächst dass es langsamer war als das LD2. Dann erst fiel mir ein dass ich MaxPrefetch nicht verändert hatte. Als ich es für T58 auch auf 4 setzte wie für LD2, gingen die nps ums mehrfache nach oben.
Parent - By Eduard Nemeth Date 2019-12-02 01:00
Habe als Experiment auf dem Server mit einem der neusten T58 Netze eine schöne 16+0 Partie gegen 32 Kerne Stockfish gespielt. T58 lief auf einer 1050 Ti.
Zuvor machte ich einige Analysen, und folgendes Setting hatte mich überzeugt. Ich glaube es ist für kleine GPUs gut.

Code:
[OPTIONS]
UCI_Chess960=true
Threads=2
MinibatchSize=64
MaxPrefetch=4
LogitQ=true
CPuct=2.700000
FpuValue=0.550000
PolicyTemperature=1.530000
MoveOverheadMs=75000
Slowmover=0.700000


Die Einstellung "LogitQ=true" ist neu seit der Version "Lc0 v0.23.0-rc2+git". Ich war sehr überrascht als ich diese Option eingeschaltet hatte.
Denn bei einigen Teststellungen platzte sozusagen die Bombe! Danach machte ich mich auf zum Server. Ich wusste dass dieses Setting im Mittelspiel gut sein würde,
aber im Endspiel dann, gegen einen der Besten auf dem Server zu bestehen? Aber ich habe das T58 Netz (es spielte 58462) ziemlich unterschätzt.

Event:
Ort:
Datum:

Weiss:
Schwarz:

Ergebnis
Board
Parent - - By Stefan Pohl Date 2019-12-13 12:40
Eduard Nemeth schrieb:

Danke für die settings! Werde es natürlich testen.

Habe neulich ein T58 Netz auf dem Smartphone installiert und wunderte mich zunächst dass es langsamer war als das LD2. Dann erst fiel mir ein dass ich MaxPrefetch nicht verändert hatte. Als ich es für T58 auch auf 4 setzte wie für LD2, gingen die nps ums mehrfache nach oben.


Erster Testrun mit LD2+ ist durch. +19 Elo zu LD2 mit default-Settings von lc0. Nice!

https://www.sp-cc.de/lc0-testing.htm

Zweiter Testrun von Netz 58573 (mit den T58 CLOP getunten Settings (s.o.)) läuft und sieht auch richtig gut aus. Wird nochmal deutlich besser als LD2+ werden! Und damit klar den besten Wert bei den kleinen Netzen mit 10x128 erreichen.
Parent - - By Guenter Stertenbrink Date 2019-12-15 03:39
moege mal jemand das kompilieren fuer Android mit den optimalen Parametern
(die ich in CfA nicht veraendern kann)
und mit dem Netz integriert in dem executable
(damit ich mehrere Netze in einem Turnier in CfA benutzen kann)

bisher gibt es nur lc0-48x5 , 17 MB

LD2 7 threads - armFish 9 1 thread , 7200+90 : 9:34
------------------------------
Lc0-48x5-59055 , beide 7 threads , 10+0 : 69.5-6.5
Lc0-48x5-59055 , beide 7 threads , 0+0.5 : 10-1 abgestuerzt
Lc0-48x5-59055 , beide 7 threads , 0+1 :
Lc0-48x5-59055 , beide 7 threads , 0+2 :
Lc0-48x5-59055 , beide 7 threads , 0+5 : 
Lc0-48x5-59055 , beide 7 threads , 60+1 :
Parent - - By Stefan Pohl Date 2019-12-16 14:15 Edited 2019-12-16 15:05
Guenter Stertenbrink schrieb:

moege mal jemand das kompilieren fuer Android mit den optimalen Parametern
(die ich in CfA nicht veraendern kann)
und mit dem Netz integriert in dem executable
(damit ich mehrere Netze in einem Turnier in CfA benutzen kann)

bisher gibt es nur lc0-48x5 , 17 MB

LD2 7 threads - armFish 9 1 thread , 7200+90 : 9:34
------------------------------
Lc0-48x5-59055 , beide 7 threads , 10+0 : 69.5-6.5
Lc0-48x5-59055 , beide 7 threads , 0+0.5 : 10-1 abgestuerzt
Lc0-48x5-59055 , beide 7 threads , 0+1 :
Lc0-48x5-59055 , beide 7 threads , 0+2 :
Lc0-48x5-59055 , beide 7 threads , 0+5 : 
Lc0-48x5-59055 , beide 7 threads , 60+1 :


Wozu? Das geht in Cfa doch alles völlig problemlos. Hab mir gerade Lc0 0.23.0 (openBlas aarch64) mit Netz 58613 installiert und die Parameter wie im Clop-Tuning gesetzt. Kein Problem. Wieso auch?

Ich fand das echt einfach.

1) https://github.com/LeelaChessZero/lc0/files/3909467/lc0-0.23-blas-aarch64.zip
nach dem Runterladen, die Datei entpacken. Das ergibt ein lc0-file. Dieses so oft kopieren und jede Kopie anders nennen, wie man verschiedene lc0 mit jeweils anderen Netzen benutzen will, also z.B.:
lc0_58613 und lc0_LD2 (keine Leerzeichen in dem Dateinamen!) usw. (Das ist der Witz dabei: Durch die unterschiedlichen Dateinamen sind die ganzen lc0 dann jeweils andere Engines für CfA)
Diese lc0-Dateien plus die dazugehörigen Netze auf das Android Smartphone/Tablet kopieren (mache ich per Google-Drive). Ich hab sie in den UCI-Ordner des Droidfish-Verzeichnisse gelegt. Aber das sollte eigentlich egal sein. Allerdings hab ich ehrlich gesagt den CfA-Ordner auf meinem Smartphone gar nicht gefunden...peinlich... Aber der Droidfish/Uci läßt sich leicht lokalisieren, da er direkt unter "Interner Speicher" steht, also sozusagen im Hauptverzeichnis. Insofern würde ich empfehlen, die lc0 Dateien plus die Netze dort abzulegen. Dann kann man sie auch gleich in Droidfish installieren und nutzen. Also doppelt vorteilhaft. Und dort findet man sie auch leicht wieder, wenn man sie löschen will.

2) Diesen Dateiexplorer auf dem Tablet/Smartphone installieren:
https://play.google.com/store/apps/details?id=com.mi.android.globalFileexplorer
Dort im Explorer die Datei-Details des gewünschten Netzes auswählen (z.B. des 58613 Netzes) (Dazu die Datei auswählen, auf "Mehr" gehen (rechts unten), dann auf "Details"). Dann wird u.a. der komplette Pfad zu dieser Datei angezeigt. Diesen Pfad (inklusive Dateinamen) komplett markieren und mit "kopieren" in die Android-Zwischenablage speichern.

3) Nun CfA starten und in "Uci und XBoard" "Motor von SD installieren" aufrufen und die erste der lc0-Dateien auswählen. Ich sag jetzt mal als Beispiel lc0_58613. WICHTIG: Habe gemerkt, daß CfA die Engines nur unterscheidet, wenn der Dateiname sich schon früh unterscheidet, nicht eine ellenlanger Name lc0_0.23.0_58613 oder so. Das geht nicht!!!. Also was kurzes. Wie eben lc0_58613. Damit geht es und CfA erkennt mehrere solcher lc0-Dateien als verschiedene Engines.
Dann "Motor aktivieren" aufrufen. Nun "UCI" auswählen.Dann poppt ein Fenster mit den UCI-Optionen auf. Nun gleich oben bei WeightsFile <autodiscover> löschen und per "einfügen" den eben in der Android-Zwischenablage gespeicherten Datei-Pfad einfügen. Nun die anderen UCI-Optionen noch wie gewünscht setzen. Dann ganz nach unten scrollen und mit "Fertig" bestätigen.

4) dies mit allen lc0.exe -Dateien, die man benutzen will (und den dazu passenden Netzen) wiederholen.

5) Falls man später die UCI-EngineOptionen noch mal ändern will, einfach "Motor Optionen zurücksetzen" anklicken und dann erneut "Motor aktivieren" anwählen. Dann wieder "UCI" auswählen usw (siehe oben).

Das ist doch nun echt nicht schwer?! Und jedes Lc0 wird von Cfa (oder auch Droidfish) aufgrund der unterschiedlichen Dateinamen auch als eigenständige Engine erkannt und behandelt, sodaß auch Matches zwischen diesen Engines kein Problem sein sollten.
Update: Habs ausprobiert. Klappte problemlos. Zwei lc0 spielten in CfA ein Turnier gegeneinander.
Parent - - By Guenter Stertenbrink Date 2019-12-16 15:51 Edited 2019-12-16 16:06
hmm, ich vermute mal das geht nur nur mit neueren Versionen von CfA,
solche wo man die Google Konditionen durchlesen und akzeptieren muss.
Bei mir erscheint kein "weights file"

-------------------------------

man kann uebrigens das Netz ganz normal als engine in CfA installieren , dann
braucht man den Pfad nicht, aber nur eins. Mit lc0-48x5 (Netz im executable) dann zwei.
Parent - - By Stefan Pohl Date 2019-12-16 16:02 Edited 2019-12-16 16:04
Guenter Stertenbrink schrieb:

hmm, ich vermute mal das geht nur nur mit neueren Versionen von CfA,
solche wo man die Google Konditionen durchlesen und akzeptieren muss.



Tja, dann musst du dich entscheiden, was dir wichtiger ist: CfA vollumfänglich zu nutzen oder deine Abneigung gegenüber Google zu pflegen. Wobei ich bei letzterem nicht verstehe, wie man dann überhaupt Android Geräte nutzen kann. Dazu fällt mir echt nichts mehr ein...
Und ich mach mir extra die Mühe eine Schritt für Schritt Anleitung zu schreiben, ich Idiot.
Vielleicht ist dieser direkte Download ja genehm:
https://apkpure.com/de/chess-for-android/com.google.android.chess/versions
Parent - By Guenter Stertenbrink Date 2019-12-16 16:26
ja danke, der apkure scheint zu funktionieren, hab's auf nem x86-tablet
installiert um das Arm-Turnier nicht zu unterbrechen.
Die Anleitung ist ja auch fuer andere ... dieses Forum wird mit Searchengine gut gefunden
Parent - By Tom Paul Date 2019-12-20 11:36
Ist sowas nicht immer abhängig von der jeweiligen Hardware?
Auf Smartphone X bringen diese Settings +19 ELO und auf Smartphone Y -19 ELO.

Oder sind diese neuen Settings immer ein +?
Und sollten dann die Entwickler nicht automatisch den Download mit diesem neuen Settings anbieten?
Up Topic Hauptforen / CSS-Forum / LD2 / T58 Parametertuning

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill