Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / „Classic Ara“ Schachengine NN aus Deutschland
- - By Lothar Jung Date 2021-04-05 17:44 Edited 2021-04-05 17:57 Upvotes 2
Hallo!

Seit heute gibt es die Schachengine “Classic Ara” mit MCTS, NN und Hashtables.
Ara ist  zunächst nur als GPU-Variante verfügbar. Es wird wohl auch eine CPU-Variante für den MAC geben.

Bisher hat “Crazy Ara” die erheblich komplexere Crazyhouse-Schachvariante beherrscht. Jetzt auch den Schach-Standard.
Der Autor ist Johannes Czech von der TU Darmstadt.

Hier die Engine-Versionen auf Github (mit ausführlichen Erläuterungen):

https://github.com/QueensGambit/CrazyAra/releases

Hier eine wissenschaftliche Veröffentlichung des Autors in englischer Sprache:

https://arxiv.org/pdf/2012.11045v1.pdf

Viel Spaß beim Ausprobieren!

Lothar
Parent - By Thorsten Czub Date 2021-04-05 21:48
Cool. Schach das schlappe 1.12 GB Download benötigt.
Parent - - By Lothar Jung Date 2021-04-06 13:09
Unter Arena läuft die Engine einwandfrei.
Auch Tuniere laufen.
Bevor man die GUI startet, sollte man Ara im Terminal rd. 1 Minute laufen und offen lassen.
Ara spricht zur Zeit eine GPU an.

Bei mir wird die RTX 3080 40% bis 60% ausgelastet.
Ich nehme an, dass die Engine auf eine RTX 2070 ausgerichtet wurde.
Bei den Parameter kann man u.a. die Cores und den MoveOverhead einstellen.

Seit heute gibt es auch eine CPU-Version für den MAC.
Ara erreicht eine sehr gute Tiefe und macht auf einer RTX 3080 12 - 16 kN/sec.

Lothar

PS: Tests sind sehr willkommen.
Parent - By Dietmar Klinger Date 2021-04-06 15:31
Lothar Jung schrieb:

Bevor man die GUI startet, sollte man Ara im Terminal rd. 1 Minute laufen und offen lassen.
Ara spricht zur Zeit eine GPU an.
Bei mir wird die RTX 3080 40% bis 60% ausgelastet.

Wie kann man eine Engine nur für hochwertige GPU's programmieren?
Da will wohl jemand wieder einmal richtig Kasse machen?
Mir müsste da schon ein Fuß fehlen nur, um eine Engine zu betreiben, mir eine Graka für >1000 € einzubauen.
Aber wer, das unbedingt braucht, soll es ja ruhig machen.

MfG Dietmar
- - By Rainer Maikowski Date 2021-04-06 13:40
Ich kann ara zwar unter Arena installieren. Es wird auch angezeigt, dass die engine installiert ist, aber es kommt die Meldung "no engine file found". Wo muss der file hin?
R.Maikowski
Parent - - By Lothar Jung Date 2021-04-06 14:52
Du solltest zuerst Ara im Terminal starten und 2 Minuten warten und offen lassen.
Dann unter Arena starten und wieder warten bis Ara ready ist.
Nebenbei, hast Du eine Nvidia GPU und wenn ja welche?

Grüße

Lothar
Parent - - By Rainer Maikowski Date 2021-04-06 15:42
Wenn ich Ara im terminal starten will, erscheint das zwar mit dem papagei, aber auch nach mehr als zwei Minuten gibt es keine Berechnungen und nach dem Befehl "go" schließt sich das Fenster. Und bei Arena erscheint, dass er eine Tensor engine bilden will, aber kein engine file findet. Ich habe eine Nvidia 2060 Super mit neuestem Treiber.
R.Maikowski
Parent - - By Jörg Oster Date 2021-04-06 17:22
Nach dem Start im Konsolenfenster oder Terminal "uci" eingeben,
dann werden alle UCI-Optionen angezeigt.
Danach wird mit "isready" sowas wie eine Initialisierung gestartet.
Das kann ein paar Minuten dauern.

Danach kann die Engine dann wie gewohnt in einem GUI verwendet werden.
Parent - By Lothar Jung Date 2021-04-06 22:03 Edited 2021-04-06 22:05
Danke,

das ist ein zuverlässigeres Vorgehen.

Ich hatte nach dem Terminalaufruf, nach 2 Minuten Arena mit Ara gestartet und wieder gewartet.

Danach funzte es und ich konnte unter Arena selbst spielen sowie Tuniere starten.
Dann habe ich den ERET-Test laufen lassen, mit 60 Lösungen.

Lothar
Parent - - By Rainer Maikowski Date 2021-04-06 22:42
Komisch. Bei mir kommen nach Eingabe con "isready" im Terminalfenster folgende zeilen:
info string onnx file: model/chess/model-1.23453-0.572-0537-bsize-1.onnx
info string no engine file found
info string Building TensorRT engine...
info string This may take a few minutes...
...und dann auch nach vielen Minuten nichts mehr??
Wie sehen die Ordner aus?
R.Maikowski
Parent - - By Rainer Maikowski Date 2021-04-06 22:44
und dann:
info string Elapsed time for building TensorRT engine: 3[min] 31.448[s]
info string serialize engine: model/chess/model-bsize16-fp16-0.trt
info string onnx file: model/chess/model-1.23453-0.572-0537-bsize-16.onnx
info string no engine file found
info string Building TensorRT engine...
info string This may take a few minutes...
??? Warum findet er mein engine file nicht?
Parent - - By Jörg Oster Date 2021-04-07 12:14
Ich habe die Prozedur heute wiederholt (ZIP-Datei in einem neuen Ordner entpackt).
Hier der komplette Output:
Code:
uci
id name ClassicAra 0.9.0 (Apr  5 2021)
id author Johannes Czech, Moritz Willig, Alena Beyer et al.
option name Allow_Early_Stopping type check default true
option name Batch_Size type spin default 16 min 1 max 8192
option name Centi_CPuct_Init type spin default 250 min 1 max 99999
option name Centi_Dirichlet_Epsilon type spin default 0 min 0 max 99999
option name Centi_Dirichlet_Alpha type spin default 20 min 1 max 99999
option name Centi_Epsilon_Checks type spin default 1 min 0 max 100
option name Centi_Epsilon_Greedy type spin default 5 min 0 max 100
option name Centi_Node_Temperature type spin default 170 min 1 max 99999
option name Centi_Q_Value_Weight type spin default 100 min 0 max 99999
option name Centi_Quantile_Clipping type spin default 25 min 0 max 100
option name Centi_Random_Move_Factor type spin default 0 min 0 max 99
option name Centi_Temperature type spin default 170 min 0 max 99999
option name Centi_Temperature_Decay type spin default 92 min 0 max 100
option name Centi_U_Init_Divisor type spin default 100 min 1 max 99999
option name Centi_Virtual_Loss type spin default 100 min 0 max 99999
option name Context type combo default gpu var gpu
option name CPuct_Base type spin default 19652 min 1 max 99999
option name First_Device_ID type spin default 0 min 0 max 99999
option name Fixed_Movetime type spin default 0 min 0 max 99999999
option name Last_Device_ID type spin default 0 min 0 max 99999
option name Log_File type string default
option name Max_Search_Depth type spin default 99 min 1 max 99999
option name MCTS_Solver type check default true
option name Model_Directory type string default model/chess
option name Move_Overhead type spin default 20 min 0 max 5000
option name MultiPV type spin default 1 min 1 max 99999
option name Nodes type spin default 0 min 0 max 99999999
option name Precision type combo default float16 var float32 var float16 var int8
option name Reuse_Tree type check default true
option name Temperature_Moves type spin default 0 min 0 max 99999
option name Use_NPS_Time_Manager type check default true
option name Use_TensorRT type check default true
option name Search_Type type combo default mcgs var mcgs var mcts
option name Simulations type spin default 0 min 0 max 99999999
option name SyzygyPath type string default <empty>
option name Threads type spin default 2 min 1 max 512
option name UCI_Variant type combo default chess var chess var chess
option name Use_Raw_Network type check default false
uciok
isready
info string onnx file: model/chess/model-1.23453-0.572-0537-bsize-1.onnx
info string no engine file found
info string Building TensorRT engine...
info string This may take a few minutes...
info string Elapsed time for building TensorRT engine: 2[min] 32.416[s]
info string serialize engine: model/chess/model-bsize1-fp16-0.trt
info string inputDims: (1, 39, 8, 8)
info string valueOutputDims: (1, 1)
info string policyOutputDims: (1, 4864)
info string No auxiliary outputs detected.
info string onnx file: model/chess/model-1.23453-0.572-0537-bsize-16.onnx
info string no engine file found
info string Building TensorRT engine...
info string This may take a few minutes...
info string Elapsed time for building TensorRT engine: 1[min] 49.726[s]
info string serialize engine: model/chess/model-bsize16-fp16-0.trt
info string onnx file: model/chess/model-1.23453-0.572-0537-bsize-16.onnx
info string deserialize engine: model/chess/model-bsize16-fp16-0.trt
info string inputDims: (16, 39, 8, 8)
info string valueOutputDims: (16, 1)
info string policyOutputDims: (16, 4864)
info string No auxiliary outputs detected.
readyok


Wichtig ist, dass am Ende der Prozedur "readyok" erscheint.

Wartest du lange genug?
Welche CPU und GPU hast du?
Parent - By Jörg Oster Date 2021-04-07 12:17
Im Anschluss habe ich dann von der Startposition eine 10 Sekunden lange Suche gestartet.
Code:
ucinewgame
info string newgame
isready
readyok
position startpos
info string position rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
go movetime 10000
info string create new tree
info string run mcts search
info depth 16 seldepth 20 multipv 1 score cp 33 nodes 1765 nps 1719 tbhits 0 time 1027 pv e2e4 c7c5 g1f3 d7d6 d2d4 c5d4 f3d4 g8f6 b1c3 a7a6 c1e3 e7e5 d4b3 c8e6 f2f3 f8e7
info depth 15 seldepth 21 multipv 1 score cp 43 nodes 3711 nps 1789 tbhits 0 time 2074 pv d2d4 g8f6 c2c4 e7e6 g1f3 b7b6 g2g3 c8a6 b2b3 f8b4 c1d2 b4e7 f1g2 c7c6 d2c3
info depth 16 seldepth 23 multipv 1 score cp 46 nodes 5617 nps 1800 tbhits 0 time 3121 pv d2d4 g8f6 c2c4 e7e6 g1f3 b7b6 g2g3 c8a6 b2b3 f8b4 c1d2 b4e7 f1g2 c7c6 d2c3 d7d5
info depth 16 seldepth 23 multipv 1 score cp 47 nodes 7554 nps 1812 tbhits 0 time 4168 pv d2d4 g8f6 c2c4 e7e6 g1f3 b7b6 g2g3 c8a6 b2b3 f8b4 c1d2 b4e7 f1g2 c7c6 d2c3 d7d5
info depth 16 seldepth 23 multipv 1 score cp 46 nodes 9500 nps 1816 tbhits 0 time 5230 pv d2d4 g8f6 c2c4 e7e6 g1f3 b7b6 g2g3 c8a6 b2b3 f8b4 c1d2 b4e7 f1g2 c7c6 d2c3 d7d5
info depth 16 seldepth 25 multipv 1 score cp 47 nodes 11417 nps 1819 tbhits 0 time 6277 pv d2d4 g8f6 c2c4 e7e6 g1f3 b7b6 g2g3 c8a6 b2b3 f8b4 c1d2 b4e7 f1g2 c7c6 d2c3 d7d5
info depth 17 seldepth 26 multipv 1 score cp 47 nodes 13318 nps 1822 tbhits 0 time 7308 pv d2d4 g8f6 c2c4 e7e6 g1f3 b7b6 g2g3 c8a6 b2b3 f8b4 c1d2 b4e7 f1g2 c7c6 d2c3 d7d5 b1d2
info depth 17 seldepth 28 multipv 1 score cp 47 nodes 15203 nps 1826 tbhits 0 time 8326 pv d2d4 g8f6 c2c4 e7e6 g1f3 b7b6 g2g3 c8a6 b2b3 f8b4 c1d2 b4e7 f1g2 c7c6 d2c3 d7d5 b1d2
info depth 17 seldepth 28 multipv 1 score cp 47 nodes 17102 nps 1828 tbhits 0 time 9357 pv d2d4 g8f6 c2c4 e7e6 g1f3 b7b6 g2g3 c8a6 b2b3 f8b4 c1d2 b4e7 f1g2 c7c6 d2c3 d7d5 b1d2
info depth 17 seldepth 28 multipv 1 score cp 48 nodes 18964 nps 1827 tbhits 0 time 10380 pv d2d4 g8f6 c2c4 e7e6 g1f3 b7b6 g2g3 c8a6 b2b3 f8b4 c1d2 b4e7 f1g2 c7c6 d2c3 d7d5 b1d2
info string rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
bestmove d2d4
info string apply move to tree
quit
Parent - - By Rainer Maikowski Date 2021-04-07 18:28
Nach 2 Durchläufen (erster in 5 min, zweiter in 3 min) sind die Durchläufe mit readyok beendet worden. Aber dennoch kann ich Ara nach Installation weder unter chessbase 16, noch unter Arena starten.
R.Maikowski
Parent - By Lothar Jung Date 2021-04-07 18:33
CB funktioniert nicht.
Bei mir und bei Jörg läuft Arena ohne Probleme.
Versuch es mal mit der BanksiaGUI.

Grüße

Lothar
Parent - By Rainer Maikowski Date 2021-04-07 18:33
ich hjabe einen ryzen 7 3800x und eine nvidia 2060 super
Parent - - By Lothar Jung Date 2021-04-07 08:31
Seit heute steht auch eine CPU/MKL Windows Version zur Verfügung.
Parent - - By Johannes Czech Date 2021-04-07 13:37 Edited 2021-04-07 14:01 Upvotes 4
Hallo zusammen,

da es ein paar Unklarheiten zur Installation gibt, möchte ich ein paar Hintergrundinformationen liefern.
Die Generation der trt-Engine Dateien wird zwei mal ausgeführt, einmal für Batch-Size 1 und einmal für Batch-Size 16.
Dies kann zugegebenermaßen nach den Konsolenausgaben etwas missverständlich aussehen.
Ich werde für die Zukunft dies etwas benutzerfreundlicher darstellen.
Die trt-Dateien werden dynamisch für die jeweilige verwendete GPU und Infernez-Präzision (float16 (standard), float32, int8) generiert, d.h. es werden verschiedene Optimierungstechniken für die GPU-Generation getestet und ausgewählt. Aus diesem Grund, kann ich diese Dateien leider nicht mitliefern.

Der Prozess, der die trt-Dateien generiert, lässt sich auch etwas beschleunigen, indem man die Option maxWorkspace verringert.
Aktuell ist diese Variable fest auf 1_GiB codiert und nicht über die UCI-Optionen verfügbar.
Wenn man den maxWorkspace allerdings z.B. auf 128 MiB reduziert, resultiert dies in der Warnung, dass nicht alle Optimierungstechniken evaluiert werden konnten.
https://github.com/QueensGambit/CrazyAra/blob/master/engine/src/nn/tensorrtapi.cpp#L151

> Cool. Schach das schlappe 1.12 GB Download benötigt.


Ja, die Release files sind wirklich sehr groß, besonders die mit GPU Unterstützung.
Der Großteil wird dabei jedoch für die verwendeten Bibliotheken verwendet, die beim Bauen verlinkt wurden.
Alternativ, hätte ich die Dateien auch weglassen können, in diesem Fall müsste der Nutzer erst manuell die richtige CUDA, TensorRT und cuDNN Version installieren.
Das neuronale Netz an sich ist mit 19.4 MiB relativ klein verglichen zu den typischen AlphaZero / Lc0 Netzwerken.
Der Hauptgrund dafür ist, dass statt normalen Convolution Operationen, aktuell Grouped Depthwise Convolution Operationen verwendet werden.
Was an dieser Stelle allerdings noch nicht optimal ist, ist, dass für jede Batch-Size Konfiguration ein eigene ONNX-Datei existiert, obwohl die Gewichte identisch sind.

> Bei mir wird die RTX 3080 40% bis 60% ausgelastet.
> Ara erreicht eine sehr gute Tiefe und macht auf einer RTX 3080 12 - 16 kN/sec.


Ich bin etwas verwundert, dass die Auslastung und NPS so gering für eine RTX 3080 ausfällt.
Ich teste primär unter Linux und habe für meine RTX 2070 OC ca. 17 kN/sec bei > 90% Auslastung.
In der Vergangenheit hatte ich jedoch wahrgenommen, dass die Geschwindigkeit auf Windows bei gleicher Hardware geringer ausfällt.
Vielleicht ist beim Bauen hier auch etwas schief gelaufen, dass z.B. cuDNN gar nicht verwendet wird.

@Lothar: Liegt die GPU Auslastung auch für die anderen Präzisions-Optionen (float32, int8) ebenfalls nur bei 40-60%?
Was auch ein Problem sein könnte ist, dass ein veralteter Grafikkarten-Treiber auf dem Host-System verwendet wird.
Der neueste Treiber lässt sich über die offizielle CUDA Webseite installieren.

Wenn es jemand sehr interessiert, so kann man die Binaries von Hand bauen.
Die Compile Anleitung befindet sich in den Wiki-Pages.
https://github.com/QueensGambit/CrazyAra/wiki/Build-instructions

Eine Sache, die bei erstmaliger Nutzung vielleicht auch nicht ganz klar ist, wie man mehrere GPUs aktivieren kann oder zwischen verschiedenen GPUs auswählen kann.
Hierfür gibt es die UCI-Optionen First_Device_ID und Last_Device_ID. Diese erlauben es einen Bereich von First_Device_ID <= Device ID <= Last_Device_ID auszuwählen.
Einmalig muss dabei jedoch pro GPU und bei Wechsel der Präzision, die zugehörige trt-Datei neu generiert werden.

In Zukunft wird es hoffentlich auch AMD GPU Unterstützung geben, denn aktuell sind Release Dateien auf Nvidia GPUs und Intel MKL beschränkt.

Freundliche Grüße
Johannes Czech
Parent - - By Lothar Jung Date 2021-04-07 15:29 Edited 2021-04-07 15:31 Upvotes 2
Hallo Johannes,

zunächst mein Respekt zu Deinem Engineprojekt.

Ich stehe im engen Kontakt mit Jörg Burwitz. Wir tauschen uns bei den Tests ständig aus.
Und macht es Spaß zu Deiner Engine einen kleinen Beitrag zu leisten.
Ich verfüge über folgendes Testsystem: Ryzen 3900X und RTX 3080, 2080S und 2070S.
Unter Lc0 O.27 J94-100 hat es einen Durchsatz von 70 kN/sec.

Unter Windows laufen CPU und GPU Version auf Arena, BanksiaGUI und cutechess; bisher wird die Engine auf Chessbase nicht geladen. Bei BanksiaGUI kann man viele uci Parameter einstellen.

Vor einem Jahr hatte ich Dietrich Kappe mit Machinenpartien “versorgt”.

Zur Zeit habe ich Fragen zur Threadeinstellung bei der CPU-Version und zum Timemanagement.
Default sind 2 Kerne, aber ich bekomme keine Erhöhung hin. Erhöhe ich z.B. auf 12 ergibt sich keine Steigerung der Nodes.
Beim TM kommt Ara in Zeitnot da er die Rechentiefe nicht anpasst bzw. reduziert. Auf Discord wurde die Thematik schon angesprochen.

Eine letzte Frage zu den Grafikarten: welche „Divice ID“ für jede GPU einzugeben?

Falls Du Wünsche zum Testen hast, kannst Du sie gerne an Jörg, Forum oder mich übermitteln.

Viele Grüße

Lothar
Parent - - By Thorsten Czub Date 2021-04-07 18:48
Jörg burwitz lebt ?!
Parent - - By Lothar Jung Date 2021-04-07 19:00
Ja, ist sehr lebendig.
Parent - - By Martin Steinwandter Date 2021-04-07 19:41
„Classic Ara“ Schachengine NN aus Deutschland

Wie gut ist denn diese "Engine"? Wenn sie so gut ist, wie schwierig zu installieren, dann haben wir eine neue Nummer eins!
Parent - - By Lothar Jung Date 2021-04-07 19:57
Schöne Mädchen dürfen auch schwierig sein….
Parent - By Martin Steinwandter Date 2021-04-08 09:09
Lothar Jung schrieb:

Schöne Mädchen dürfen auch schwierig sein….

Ob sie schön ist, kann ich nicht sagen, aber schwierig!
Parent - - By Tobias Lagemann Date 2021-04-07 20:09
Hallo Martin,

es ist doch nicht schwierig, Geduld zu haben 

Auf meinem Rechner war Ara nach 10min in Spiellaune  Okay, der Download hat etwas länger gedauert.

Erste Beobachtung: Trotz "nur" 15-16kn/s (auf RTX 2060) eine große Suchtiefe. Und: Opferfreudig

Viele Grüße
Tobias
Parent - By Benno Hartwig Date 2021-04-07 22:00

> Und: Opferfreudig


Mit Opfern, die wirklich Sinn machen? Zum Erfolg führen?
Parent - - By Ingo Althöfer Date 2021-04-07 22:29
Auch seine alte Emailadresse funktioniert nach wie vor.
Ingo Althöfer.
Parent - - By Johannes Czech Date 2021-04-08 00:54 Edited 2021-04-08 01:04
Hallo,

> Zur Zeit habe ich Fragen zur Threadeinstellung bei der CPU-Version und zum Timemanagement.
> Default sind 2 Kerne, aber ich bekomme keine Erhöhung hin. Erhöhe ich z.B. auf 12 ergibt sich keine Steigerung der Nodes.


Ja, die UCI-Option "Threads" bedarf für das CPU-Backend etwas Erklärung.
Die Option "Threads" bezieht sich akutell nur auf die Anzahl der verwendeten Suchthreads.
Beim CPU-Backend ist der Bottlekneck allerdings bei der Inferenz des neuronalen Netzes, da die GPU- und CPU-Version derzeit das gleiche Netz verwenden.
Um hier die Anzahl der Threads einzustellen, lässt sich die Umgebungsvariable neu setzen, (z.B. OMP_NUM_THREADS=1).
Standarmäßig ist die Variable auf 4 gesetzt.

GitHub-Issue: https://github.com/QueensGambit/CrazyAra/issues/35

Für die Zukunft könnte man dies vielleich auch über eine eigene UCI-Option einstellen.

> Beim TM kommt Ara in Zeitnot da er die Rechentiefe nicht anpasst bzw. reduziert. Auf Discord wurde die Thematik schon angesprochen.


Das muss ich mir noch näher anschauen.
Was helfen sollte ist die Option Move_Overhead zu erhöhen.
GitHub-Issue: https://github.com/QueensGambit/CrazyAra/issues/74

> Eine letzte Frage zu den Grafikarten: welche „Divice ID“ für jede GPU einzugeben?


Wenn man mehrere Grafikkarten gleichzeit einbindet, so wird jeder GPU ein Index zugeordnet.
Auf Linux lässst sich der Device Index direkt über `nvidia-smi` auslesen.
Für Windows liegt nvidia-smi.exe z.B. unter C:\Program Files\NVIDIA Corporation\NVSMI.

> Erste Beobachtung: Trotz "nur" 15-16kn/s (auf RTX 2060) eine große Suchtiefe. Und: Opferfreudig


Mir ist auch aufgefallen, dass ClassicAra aggressiver spielt als die meisten anderen Engines und teilweise Positionen mit starken Materialdefizit überberbewertet.
Dies folgt primär daher, dass die Evalueringsunktion nicht direkt vom Material abhängt und aktuell nur auf menschlichen Schachpartien basiert.

> Wie gut ist denn diese "Engine"? Wenn sie so gut ist, wie schwierig zu installieren, dann haben wir eine neue Nummer eins!


Spieltstärketechnisch ist die Version für Schach noch sehr verbesserungswürdig.
Das aktuelle Modell basiert "nur" auf menschlichen Partien.
Für Crazyhouse ist das Modell etwas besser.

> Falls Du Wünsche zum Testen hast, kannst Du sie gerne an Jörg, Forum oder mich übermitteln.


Vielen Dank für das Angebot.
Was Engine-Testing für Standard Schach betrifft bin ich ein Neuling.

Ein paar Dinge, würden mich tatsächlich interessieren:
* Wie gut skaliert die Engine für Standard Schach?
* Gibt es größere Probleme auf Mutli-GPU Systemen (Speicher, Crashes, mangelnde GPU-Auslastung, ...)
* Gibt es spezielle Probleme für bestimmte Plattformen? Primär habe ich nur auf Linux getestet.
* Hat die Engine generelle systematische Schwächen / Stärken?
* Mit der Option "Use_RawNetwork" führt die die Engine nur eine einzige Netzwerk-Evaluation durch und spielt nach dem argmax der Policy.
   Für Crazyhouse und andere Schachvarianten ist mir dabei aufgefallen, dass das NN meist Probleme bei Zügen oder Konzepten hat, die über einen große Brettbereich vorliegen (z.B. ein diagonaler Zug von A1 nach H8).
   Können Sie diesen Eindruck bestätigen?

Freundliche Grüße
Johannes Czech
Parent - By Horst Sikorsky Date 2021-04-08 08:31
Und das dumme Volk schaut ist die Röhre.
Parent - By Torsten Schoop Date 2021-04-08 09:18
Johannes Czech schrieb:

Ein paar Dinge, würden mich tatsächlich interessieren:
* Wie gut skaliert die Engine für Standard Schach?



Hallo Johannes,

auf meinem System (WIN10 4 Core Maschine mit RTX 2070) liegt Classic Ara nach ersten Tests zwischen Equinox 3.20 und Schooner 2.2, also um die 3100 ELO.

Mir ist aufgefallen, dass die syzygy-Tabelbases in der Suche nicht genutzt werden. Ist das Bug oder Feature?

LG
Torsten
Parent - - By Lothar Jung Date 2021-04-08 12:27 Edited 2021-04-08 13:24
Hallo Johannes,

ich habe mir heute das GPU-Problem vorgenommen:

1. Neuester NVIDIA Treiber ist und war installiert.

2. Die ERET-Test Performance stieg unter int8 gegenüber fp16 von 60/111 auf 63/111

3. Die kN/sec liegen unverändert bei sehr stabilen 14 kN/sec.

4. Die Auslastung der RTX 3080 liegt bei durchschnittlich 55%.

5. Gleich werde ich versuchen die 3 GPUs einzubinden.

6. Die Divise-ID der GPUs werden mir jeweils über nividiainspector.exe angezeigt.

7. UCI-Parameter dazu sind wie folgt:

option name First_Device_ID type spin default 0 min 0 max 99999
option name Fixed_Movetime type spin default 0 min 0 max 99999999
option name Last_Device_ID type spin default 0 min 0 max 99999
option name Log_File type string default

Bei den ersten drei kann ich nur ganze Zahlen einsetzen: z.B. 0 und 2 für 3 GPUx

Welchen File-Namen soll ich bei Log_File auswählen?

8. Mit einer vollen Auslastung aller GPSs käme Ara in eine andere Performance-Liga.

Gruß

Lothar
Parent - - By Johannes Czech Date 2021-04-08 17:20
Hallo Torsten und Lothar,

> auf meinem System (WIN10 4 Core Maschine mit RTX 2070) liegt Classic Ara nach ersten Tests zwischen Equinox 3.20 und Schooner 2.2, also um die 3100 ELO.


vielen Dank für den Test. Darf ich fragen mit welcher Zeitkontrolle getestet wurde?

> Mir ist aufgefallen, dass die syzygy-Tabelbases in der Suche nicht genutzt werden. Ist das Bug oder Feature?


Ja, das Laden der syzygy-Tabelbases ist tatsächlich defekt.
Ich habe gerade einen Issue dazu angelegt (https://github.com/QueensGambit/CrazyAra/issues/79).
Während der Entwicklung habe ich teilweise mit hard-codierten Standardwert für SyzygyPath getestet, wo dieses Problem nicht aufgetreten ist.

> Unter Windows laufen CPU und GPU Version auf Arena, BanksiaGUI und cutechess; bisher wird die Engine auf Chessbase nicht geladen. Bei BanksiaGUI kann man viele uci Parameter einstellen.


Auf Chessbase habe ich ClassicAra noch nicht getestet. Ich vermute, dass das Problem daran liegt, dass Chessbase ein anderes Arbeitsverzeichnis setzt, welches nicht relativ zur Binary liegt. Dies würde folglich zu Problemene beim Laden des neuronalen Netzes führen. Wenn man der Option Model_Directory den absoluten Pfad für das Verzeichnis angibt, könnte es das Problem beheben.

> 2. Die ERET-Test Performance stieg unter int8 gegenüber fp16 von 60/111 auf 63/111


Interessant, damit habe ich nicht gerechnet.
In meinen lokalen Tests hat bisher int8 nur für ältere Nvidia GPU Generationen (z.B. Pascal: GTX 1070, GTX 1080 ti, ...) besser als fp16 abgeschnitten.
Die neueren Nvidia GPU-Generation besitzen sogenannte Tensor Cores, welche Matrizenmultiplikation für fp16 beschleunigen.

> 7. UCI-Parameter dazu sind wie folgt:


> option name First_Device_ID type spin default 0 min 0 max 99999
> option name Fixed_Movetime type spin default 0 min 0 max 99999999
> option name Last_Device_ID type spin default 0 min 0 max 99999
> option name Log_File type string default


> Bei den ersten drei kann ich nur ganze Zahlen einsetzen: z.B. 0 und 2 für 3 GPUx


Ja, den GPUs sollten die IDs 0, 1 und 2 zugeordnet worden sein.
Um alle GPUs auszuwählen, müsste man  First_Device_ID = 0 und Last_Device_ID = 2 setzen.
Um z.B. nur die letzte GPU auszuwählen müsste man First_Device_ID = 2  und Last_Device_ID = 2 setzen.
Eine Sache, die aktuell jedoch nicht auf diesem Setup funktioniert, ist nur GPU 0 und GPU 2, ohne GPU 1 auszuwählen.
Alternativ könnte ich z.B. First_Device_ID und Last_Device_ID mit einer neuen Option namens Device_IDs oder Active_GPU_IDs ersetzen.
Diese würde einen String erwarten bei welchem man die verwendeten Device-IDs mit Komma oder Leerzeichen trennt (z.B. "0, 2")

Leider sieht das UCI-Protocoll keine Integer Liste als Datentyp vor.
http://wbec-ridderkerk.nl/html/UCIProtocol.html

Im Multi-GPU Setup muss übrigens nicht zusätzlich die Option Threads erhöht werden.
Die Option Threads wird als Threads per Device verstanden, d.h. es werden derzeit pro verwendeter GPU im Standard zwei Threads verwendet.
Da Threads ein Standard-UCI-Parameter ist, wollte ich die Bezeichnung nicht ändern.

Heute habe ich ebenfalls die Dokumentation der UCI-Optionen für Release 0.9.0 aktualisiert:
https://github.com/QueensGambit/CrazyAra/wiki/Engine-settings

> Welchen File-Namen soll ich bei Log_File auswählen?


Das Log_File Feature ist aktuell leider deaktiviert (s. https://github.com/QueensGambit/CrazyAra/issues/78).

Die Bugs "Verlieren auf Zeit" (#74), "Log File" (#78) und "Laden der Syzygy-Tablebases" (#79) sollten sich schnell beheben lassen.
Bis 18.04 plane ich ein Post-Fix Release für Version 0.9.0 zu veröffentlichen.

Freundlich Grüße
Johannes Czech
Parent - By Lothar Jung Date 2021-04-08 17:43
Hallo Johannes,

Danke für Deine ausführliche Antwort.

Ich habe den ERET Test mit 1 Minute pro Stellung durchgeführt und unter int8 66 Lösungen erreicht. Also ein Wert wie mit meinen 3 GPUs bei 15 sec.

Ich glaube, dass Ara auf CB deshalb nicht geladen wird, weil CB zu lange warten muss. Ist aber nur eine Vermutung.

Viele Grüße

Lothar
Parent - - By Lothar Jung Date 2021-04-09 10:48 Edited 2021-04-09 10:51
Hallo Johannes,

über die Deviceangaben lassen sich bei mir keine weiteren GPUs einbinden.

Falls ich in Last_Device einen Wert anders als "0" zuweise, startet die Engine nicht oder aktiviert keine GPU.

Die Knotenzahlen der RTX 3080 bei fp16 mit 14-16 lassen darauf schließen, dass die GPU nicht mit tensorcores rechnet.

Bei lc0 und Ceres treten diese Probleme nicht auf, also Multi-GPU klappt und fp16 ist wesentlich schneller.

Viele Grüße

Lothar
Parent - - By Johannes Czech Date 2021-04-09 13:35
Hallo Lothar,

klappt es, wenn man versucht nur eine einzelne andere GPU anzusprechen?

setoption name First_Device value 1
setoption name Last_Device value 1
isready

Für jede GPU wird eine eigene trt-Datei in der Model_Directory generiert und wie folgt beschriftet:
model-bsize-<batch-size>-<precision>-<device-id>.trt
Am besten ist es dies einmal via Terminal durchzuführen, um zu verhindern, dass die Binary in einen Time-Out läuft.

GitHub issue: https://github.com/QueensGambit/CrazyAra/issues/76

Als Bemerkung zu den ERET-Test ist zu erwähnen, dass das aktuelle Schach-Modell als Eingabemerkmale auch den 50-Zug-Counter und den Move-Counter verarbeitet. Bei dem ERET-Test sind diese Information nicht gesetzt und werden folglich auf 0 und 1 gesetzt. Wenn man also alle "- -" Informationen im ERET-Test z.B. mit einem plausibleren Wert von "1 20" ersetzt, erhalte ich leicht bessere Ergebnisse.
Die Grundidee auch die 50-Zugregel mit in die Bewertung einzubeziehen, ist es nicht erst bei 50 durch den Terminal Knoten einen drastische Änderung in der Evaluierung zu sehen.
Vollständig abschließende Experimente dazu habe ich jedoch noch nicht durchgeführt. Für Crazyhouse ist die 50-Zug Regel nahezu irrelevant, da Remis praktisch nur durch Zugwiederholngen auftreten können.
Weiterhin, werden dem Neuronalen Netz die Trajektorie der letzten 8 Züge über 16 Planes mitgegeben.
Die Motivation hier war dem Netz auch eine Information über mögliches Shuffeling mitzugeben. In der Praxis verbessert sich dadurch aber eher der Policy-Loss, da es die Information über den letzen Zug des Gegners nutzen kann.
Menschliche Spieler nutzen auch häufig den letzten Zug des Gegners zur Aufmerksamkeit.
Grundsätzlich bin ich mir noch unsicher, ob es nicht besser ist die Information zu den letzten Zügen nicht doch herauszunehmen, da es Overfitting begünstigt und für die Analyse weniger geeignet ist.
Für das Crazyhouse Modell wird derzeit keinne Zughistorie verwendet.

Die Idee Test-Suites zu verwenden gefällt mir sehr.
Für die andere Schachvarianten exsitieren diese leider noch nicht.
Aber vor allem für Unit-Tests können diese meiner Meinung nach sinnvoll sein.

Freundliche Grüße
Johannes Czech
Parent - By Lothar Jung Date 2021-04-09 14:51
Danke Johannes,

ich probiere Dein vorgeschlagenes Prozedere.

Eine größere und schwierigere Testsuite stellt die „Stockfish Test Suite“ dar. Aber dazu ist es zu früh.

Im Lc0-Bereich werden Tests im wesentlichen mit Engine/Engine-Tunieren mit voreingestellten Nodesanzahl durchgeführt.
Damit kann man eine wesentlich höhere Partienanzahl generieren (Geringerer bias) und man vermeidet Hardwareverwerfungen.
Indem man einheitliche und größere Eröffnungbücher verwendet (z.B. Cerebellum), kann man die Tests auf das Mittelspiel fokussieren.

Grüße

Lothar
Parent - By Lothar Jung Date 2021-04-09 18:53
Hallo Johannes,

ich habe Deinen Vorschlag probiert:

Es klappt bei O O und 1 1.
Andere Versuche scheiterten.

Wir könnten uns auch telefonisch kurzschließen.

Wenn Du willst kannst Du mir eine private Nachricht schicken.

Grüße

Lothar
Parent - By Lothar Jung Date 2021-04-10 19:29
Hallo Johannes,

ich habe Dir den Output des Terminals mit Deinen Befehlen als Antwort zugesandt.

Bei anderen Einstellungen als 0 , 0 kommt „Engine Not found“.

Grüße

Lothar
Parent - By Johannes Czech Date 2021-04-10 20:02
Edit: In obiger Nachricht müsste es eigentlich

Code:
setoption name First_Device_ID value 1
setoption name Last_Device_ID value 1
isready


heißen, um GPU 1 anstatt statt GPU 0 zu verwenden.
Parent - - By Torsten Schoop Date 2021-04-09 12:49 Upvotes 1
Hallo Johannes,

ich habe mit 5 Minuten plus 2 Sekunden Zeitbonus pro Zug getestet.

LG
Torsten
Parent - By Lothar Jung Date 2021-04-09 12:57
Die Einstellung bei Blitz wähle ich auch. Vermeidet Zufallssiege und Zeitnotsiege.

LG

Lothar
Parent - By Lothar Jung Date 2021-04-09 14:39
Hier sind die Engine-Parameter von Ara übersichtlich aufgelistet. Sehr hilfreich!!

https://github.com/QueensGambit/CrazyAra/wiki/Engine-settings

Lothar
Up Topic Hauptforen / CSS-Forum / „Classic Ara“ Schachengine NN aus Deutschland

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill