Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Leela Zero (Lc0) - NVIDIA Geforce RTX 2060
- - By Andreas Strangmüller Date 2019-01-29 16:24 Upvotes 7
Leela Zero (Lc0) auf einer NVIDIA Geforce RTX 2060

GUI:       Arena 3.5.1
Engine:    Lc0 v0.20.1 CUDA
Netz:      32900
Stellung:  Grundstellung - FEN: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1


Nachfolgend einige Benchmarks mit unterschiedlichen Settings nach ca. 60 Sekunden Bedenkzeit aus der Grundstellung:

Default Settings, backend=cudnn

                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:01   469.006          7.681
Nach einer Minute:  01:01   469.006          7.681


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

Default Settings, backend=cudnn-fp16

                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 00:18     404.929       22.276
Nach einer Minute:  01:01   1.224.396       19.995


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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000

                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:01   1.503.121       24.499
Nach einer Minute:  01:01   1.503.121       24.499


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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=512

                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:02   1.596.595       25.446
Nach einer Minute:  01:02   1.596.595       25.446


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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=1024

                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:03   1.624.881       25.413
Nach einer Minute:  01:03   1.624.881       25.413


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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=512, MaxCollisionsEvents=512

                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:00   1.560.655       25.669
Nach einer Minute:  01:00   1.560.655       25.669


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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=512, MaxCollisionsEvents=512, Threads=4

                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:02   1.563.849       25.115
Nach einer Minute:  01:02   1.563.849       25.115


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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=512, MaxPrefetch=256, MaxCollisionsEvents=512

                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:02   1.583.994       25.497
Nach einer Minute:  01:02   1.583.994       25.497


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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=512, MaxPrefetch=512, MaxCollisionsEvents=512

                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:01   1.513.198       24.625
Nach einer Minute:  01:01   1.513.198       24.625

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

Hier die vermeintlich besten Einstellungen mit 10 Minuten:

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=512, MaxCollisionsEvents=512

                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 02:21    3.842.955      27.127
Nach zehn Minuten:  10:36   14.997.015      23.545


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

Default Settings, backend=cudnn-fp16, NNCacheSize=20000000, MiniBatchSize=512, MaxCollisionsEvents=512

                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 10:01   16.980.960      28.219
Nach zehn Minuten:  10:01   16.980.960      28.219

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

Default Settings, backend=cudnn-fp16, NNCacheSize=20000000, MiniBatchSize=512, MaxCollisionsEvents=512, Threads=4

                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 10:03   17.459.570      28.927
Nach zehn Minuten:  10:03   17.459.570      28.927


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

Und zum Schluss noch eine Analyse von über einer Stunde mit dem Maximalwert der NNCacheSize:

Default Settings, backend=cudnn-fp16, NNCacheSize=999999999, MiniBatchSize=512, MaxCollisionsEvents=512, Threads=4

                    Zeit      Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl:   32:50    60.231.582     30.559
Nach einer Stunde:  1:08:52   124.111.072     30.033


Bei dieser langen Bedenkzeit/Analyse wird die Schallmauer von 30.000 Knoten pro Sekunde durchbrochen!

34/76  1:15:57   137.939.747  30.268  +0,49  1.e4 e5 2.Sf3 Sc6 3.Lb5 Sf6 4.0-0 Sxe4 5.Te1 Sd6 6.Sxe5 Le7 7.Lf1 Sxe5 8.Txe5 0-0 9.d4 Lf6 10.Te1 Te8 11.Lf4 Txe1 12.Dxe1 Se8 13.c3 d5 14.Sd2 Lf5 15.Sb3 Sd6 16.De2 c6 17.Te1 b6 18.Sd2 Dd7 19.Dd1 Se4 20.Sf3 Lg4 21.Ld3 Df5 22.Dc1 Lxf3 23.gxf3 Lg5 24.Le3 Dxf3 25.Lxe4 dxe4 26.Lxg5 Dg4+ 27.Kf1 Dh3+ 28.Kg1 Dg4+ 29.Kh1 Df3+ 30.Kg1 Dg4+

Fazit:
Die Option backend=cudnn-fp16 erhöht die Knotenzahl drastisch, ca. um den Faktor 3 zu den Standardeinstellungen!
cudnn-fp16 (Nvidia CUDA Deep Neural Network Library, 16-bit half-precision floating point) unterstützen derzeit allerdings nur die NVIDIA Grafikkarten der neuesten Generation, die Geforce RTX 20-Serie (RTX 2060, RTX 2070, RTX 2080 und RTX 2080 Ti), sowie die NVIDIA Titan-Serie.

Die Standardeinstellung der Option NNCacheSize=2000000 ist für kurze Bedenkzeiten (unter 20 Sekunden pro Zug) ausreichend. Bei längeren Bedenkzeiten füllt sich der Cache schnell und die Knotenzahlen werden nach dem Erreichen der 100% Marke kontiunierlich geringer.
Dieser Wert sollte also bei Bedenkzeiten über 20 Sekunden pro Zug unbedingt erhöht werden. Siehe die 10 Minuten Tests.

Die beiden Optionen MiniBatchSize=512 und MaxCollisionsEvents=512 erhöhen die Knotenzahl ebenfalls nochmal leicht.
Eine Erhöhung der Threads (Standard=2) ist nicht unbedingt erforderlich, bei längeren Analysen bringt es aber scheinbar noch ein paar zusätzliche Knoten.
Parent - - By Stefan Pohl Date 2019-01-29 17:00 Edited 2019-01-29 17:02
Eine tolle Meßreihe! Etwas anderes hatte ich von dir auch nicht erwartet. Vielen Dank.

Andreas Strangmüller schrieb:

Fazit:
Die Option backend=cudnn-fp16 erhöht die Knotenzahl drastisch, ca. um den Faktor 3 zu den Standardeinstellungen!


Das ist bekannt und der größte Vorteil der neuen RTX-Karten für die Nutzung von LC0.

Andreas Strangmüller schrieb:

Die Standardeinstellung der Option NNCacheSize=2000000 ist für kurze Bedenkzeiten (unter 20 Sekunden pro Zug) ausreichend. Bei längeren Bedenkzeiten füllt sich der Cache schnell und die Knotenzahlen werden nach dem Erreichen der 100% Marke kontiunierlich geringer.
Dieser Wert sollte also bei Bedenkzeiten über 20 Sekunden pro Zug unbedingt erhöht werden. Siehe die 10 Minuten Tests.


Das ist das doofe bei Lc0: Die Engine kennt das UCI-Kommando "Hash" nicht. Weist man also Lc0 über die GUI irgendwelche Gigabytes an Hash zu, ist das völlig sinnlos, da Lc0 das Kommando schlicht nicht kennt. Trügerischerweise ist es bei vielen GUIs so, daß diese den Hash-Speicher selbst bei Windows für die Engine reservieren, sodaß es in der Speicherverwaltung so aussieht, als würde Lc0 eben so viel Hash nutzen. Das ist aber leider eine Fata Morgana!
Das Kommando NNCacheSize ist also das, was dem Hashkommando bei anderen Engines entspricht. Da eine Bewertung einer Stellung per NeuralNetz sehr aufwendig und langsam ist, ist es klar, daß man den Cache unbedingt so groß wählen sollte, daß es zu Bedenkzeit und GPU-Speed paßt. Bei gut 25000 rollouts pro Sekunde auf einer RTX-2060 ist es somit klar, daß man mit 200000 (default) nicht weit kommt (reicht nicht mal für 10 Sekunden Rechenzeit).

Andreas Strangmüller schrieb:

Die beiden Optionen MiniBatchSize=512 und MaxCollisionsEvents=512 erhöhen die Knotenzahl ebenfalls nochmal leicht.
Eine Erhöhung der Threads (Standard=2) ist nicht unbedingt erforderlich, bei längeren Analysen bringt es aber scheinbar noch ein paar zusätzliche Knoten.


Das ist gut zu wissen.
Parent - By Andreas Strangmüller Date 2019-01-29 19:39
Hallo Stefan,

vielen Dank für Deine ergänzenden Infos zum Thema Hash!

Lieber die Einstellung der NNCacheSize zu hoch als zu niedrig wählen.
Am besten einfach ausprobieren. Arena zeigt die Hashnutzung wohl korrekt an.

Grüße,
Andreas
Parent - - By Lothar Jung Date 2019-01-29 17:09
Sehr gute Arbeit.
Herzlichen Dank!
Bei der RTX 2060 ist mit Deinen Einstellungen doch noch einige Luft nach oben.
Und das ohne Übertacktung!
Parent - - By Andreas Strangmüller Date 2019-01-29 22:19
Ich habe mich nochmals mit den Einstellungen beschäftigt. Folgende Optionen erzielen nun fast 32.000 Knoten/Rollouts und sind auch nach einer bzw. zehn Minuten am besten.

Default Settings, backend=cudnn-fp16, NNCacheSize=20000000, MiniBatchSize=1024, MaxCollisionsEvents=1024, Threads=4

                     Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl:  26:58   51.530.869      31.844
Nach einer Minute:   01:02    1.640.545      26.109
Nach zehn Minuten:   10:12   18.748.776      30.593
Parent - - By Dieter Kraft Date 2019-01-30 16:46 Edited 2019-01-30 17:30
Andreas Strangmüller schrieb:

Ich habe mich nochmals mit den Einstellungen beschäftigt. Folgende Optionen erzielen nun fast 32.000 Knoten/Rollouts und sind auch nach einer bzw. zehn Minuten am besten.

Default Settings, backend=cudnn-fp16, NNCacheSize=20000000, MiniBatchSize=1024, MaxCollisionsEvents=1024, Threads=4

Kannst Du diese Einstellungen auch für FS-Analysen von einer bis mehreren Stunden empfehlen?
Parent - - By Andreas Strangmüller Date 2019-01-30 22:24 Upvotes 1
Ja, diese sind für eine NVidia Geforce RTX 2060 die bisher besten gefundenen Parameter für lange FS-Analysen.
Denke sie sind aber auch für eine RTX 2070 oder 2080 verwendbar.

Den Parameter für die Größe der Hashtabellen (NNCacheSize) würde ich auf das Maximum von 999.999.999 setzen.
Bei den beiden anderen Parametern MiniBatchSize=1024, MaxCollisionsEvents=1024 gilt der maximal einstellbare Wert 1024.
Parent - - By Hauke Lutz Date 2019-02-13 21:15
32kN/s sind echt unglaublich.
Ich habe in meinem Laptop leider nur eine sehr schwache GT 740M.
Wie viele 2060 können angesprochen werden?
Parent - By Lothar Jung Date 2019-02-13 21:37 Edited 2019-02-13 21:43
2, d.h. Anzahl der PCI-Slots auf Motherboard.
Parent - By Tom Paul Date 2019-01-30 17:45
Andreas Strangmüller schrieb:

Ich habe mich nochmals mit den Einstellungen beschäftigt. Folgende Optionen erzielen nun fast 32.000 Knoten/Rollouts und sind auch nach einer bzw. zehn Minuten am besten.

Default Settings, backend=cudnn-fp16, NNCacheSize=20000000, MiniBatchSize=1024, MaxCollisionsEvents=1024, Threads=4

<code>                     Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl:  26:58   51.530.869      31.844
Nach einer Minute:   01:02    1.640.545      26.109
Nach zehn Minuten:   10:12   18.748.776      30.593</code>


Also kommst du quasi mit einer RTX 2060 auf die Leistung einer RTX 2080 Ti.

Da stellt sich doch die Frage wie viel mehr an ELO das ganze bringt?
Um wie viel Knoten pro Sekunde würde eine RTX 2070, 2080, 2080 Ti zulegen?
Müsste das ganze nicht mehr oder weniger von dem Programm automatisch erkannt werden, welche Einstellungen im Durchschnitt die meisten Knoten pro Sekunde bringen?
Gibt es Richtwerte oder Einstellungen an denen man sich orientieren kann ohne ständig je nach Bedenkzeit die Parameter ändern zu müssen?
Parent - By Andreas Strangmüller Date 2019-01-31 06:15
Die Grafikkarte die ich für die Tests verwendet habe ist eine Palit XpertVision GeForce RTX 2060 GamingPro OC

http://eu.palit.com/palit/vgapro.php?id=3125&lang=de&pn=NE62060T18J9-1062A&tab=sp
Parent - - By Clemens Keck Date 2019-02-06 22:01
Hallo

sind das alles UCI Parameter die über die GUI beim engine-erstellen eingegeben werden?
Ich habe mir heute eine RTX 2070 bestellt.
Gestern im daily Infinitychess Turnier hat mein 12core Brainfish beeindruckend verloren gegen RTX 2060.

C.K.

Andreas Strangmüller schrieb:

Leela Zero (Lc0) auf einer NVIDIA Geforce RTX 2060

<code>GUI:       Arena 3.5.1
Engine:    Lc0 v0.20.1 CUDA
Netz:      32900
Stellung:  Grundstellung - FEN: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1</code>

Nachfolgend einige Benchmarks mit unterschiedlichen Settings nach ca. 60 Sekunden Bedenkzeit aus der Grundstellung:

Default Settings, backend=cudnn

<code>                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:01   469.006          7.681
Nach einer Minute:  01:01   469.006          7.681</code>

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

Default Settings, backend=cudnn-fp16

<code>                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 00:18     404.929       22.276
Nach einer Minute:  01:01   1.224.396       19.995</code>

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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000

<code>                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:01   1.503.121       24.499
Nach einer Minute:  01:01   1.503.121       24.499</code>

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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=512

<code>                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:02   1.596.595       25.446
Nach einer Minute:  01:02   1.596.595       25.446</code>

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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=1024

<code>                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:03   1.624.881       25.413
Nach einer Minute:  01:03   1.624.881       25.413</code>

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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=512, MaxCollisionsEvents=512

<code>                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:00   1.560.655       25.669
Nach einer Minute:  01:00   1.560.655       25.669</code>

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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=512, MaxCollisionsEvents=512, Threads=4

<code>                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:02   1.563.849       25.115
Nach einer Minute:  01:02   1.563.849       25.115</code>

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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=512, MaxPrefetch=256, MaxCollisionsEvents=512

<code>                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:02   1.583.994       25.497
Nach einer Minute:  01:02   1.583.994       25.497</code>

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

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=512, MaxPrefetch=512, MaxCollisionsEvents=512

<code>                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 01:01   1.513.198       24.625
Nach einer Minute:  01:01   1.513.198       24.625
</code>
---------------------------------------------------------------

Hier die vermeintlich besten Einstellungen mit 10 Minuten:

Default Settings, backend=cudnn-fp16, NNCacheSize=2000000, MiniBatchSize=512, MaxCollisionsEvents=512

<code>                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 02:21    3.842.955      27.127
Nach zehn Minuten:  10:36   14.997.015      23.545</code>

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

Default Settings, backend=cudnn-fp16, NNCacheSize=20000000, MiniBatchSize=512, MaxCollisionsEvents=512

<code>                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 10:01   16.980.960      28.219
Nach zehn Minuten:  10:01   16.980.960      28.219
</code>
--------------------------------------------------------------

Default Settings, backend=cudnn-fp16, NNCacheSize=20000000, MiniBatchSize=512, MaxCollisionsEvents=512, Threads=4

<code>                    Zeit    Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl: 10:03   17.459.570      28.927
Nach zehn Minuten:  10:03   17.459.570      28.927</code>

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

Und zum Schluss noch eine Analyse von über einer Stunde mit dem Maximalwert der NNCacheSize:

Default Settings, backend=cudnn-fp16, NNCacheSize=999999999, MiniBatchSize=512, MaxCollisionsEvents=512, Threads=4

<code>                    Zeit      Knoten Gesamt   Knoten pro Sekunde
Höchste Knotenzahl:   32:50    60.231.582     30.559
Nach einer Stunde:  1:08:52   124.111.072     30.033</code>

Bei dieser langen Bedenkzeit/Analyse wird die Schallmauer von 30.000 Knoten pro Sekunde durchbrochen!

34/76  1:15:57   137.939.747  30.268  +0,49  1.e4 e5 2.Sf3 Sc6 3.Lb5 Sf6 4.0-0 Sxe4 5.Te1 Sd6 6.Sxe5 Le7 7.Lf1 Sxe5 8.Txe5 0-0 9.d4 Lf6 10.Te1 Te8 11.Lf4 Txe1 12.Dxe1 Se8 13.c3 d5 14.Sd2 Lf5 15.Sb3 Sd6 16.De2 c6 17.Te1 b6 18.Sd2 Dd7 19.Dd1 Se4 20.Sf3 Lg4 21.Ld3 Df5 22.Dc1 Lxf3 23.gxf3 Lg5 24.Le3 Dxf3 25.Lxe4 dxe4 26.Lxg5 Dg4+ 27.Kf1 Dh3+ 28.Kg1 Dg4+ 29.Kh1 Df3+ 30.Kg1 Dg4+

Fazit:
Die Option backend=cudnn-fp16 erhöht die Knotenzahl drastisch, ca. um den Faktor 3 zu den Standardeinstellungen!
cudnn-fp16 (Nvidia CUDA Deep Neural Network Library, 16-bit half-precision floating point) unterstützen derzeit allerdings nur die NVIDIA Grafikkarten der neuesten Generation, die Geforce RTX 20-Serie (RTX 2060, RTX 2070, RTX 2080 und RTX 2080 Ti), sowie die NVIDIA Titan-Serie.

Die Standardeinstellung der Option NNCacheSize=2000000 ist für kurze Bedenkzeiten (unter 20 Sekunden pro Zug) ausreichend. Bei längeren Bedenkzeiten füllt sich der Cache schnell und die Knotenzahlen werden nach dem Erreichen der 100% Marke kontiunierlich geringer.
Dieser Wert sollte also bei Bedenkzeiten über 20 Sekunden pro Zug unbedingt erhöht werden. Siehe die 10 Minuten Tests.

Die beiden Optionen MiniBatchSize=512 und MaxCollisionsEvents=512 erhöhen die Knotenzahl ebenfalls nochmal leicht.
Eine Erhöhung der Threads (Standard=2) ist nicht unbedingt erforderlich, bei längeren Analysen bringt es aber scheinbar noch ein paar zusätzliche Knoten.
Parent - By Stefan Pohl Date 2019-02-07 04:00
Ja. Alle diese Parameter (und noch viele mehr) können wie gewohnt z.B. in der FritzGUI eingestellt werden, nachdem Lc0 dort als UCI-Engine erzeugt wurde.
- By Dieter Kraft Date 2019-01-29 16:47
Danke, sehr interessant  und hilfreich.
Dieter Kraft
- - By Guenter Stertenbrink Date 2019-02-09 09:13
9:11sparrow_88: i think there will be an explosion in the hardware that works well for Lc0 ...
expect 10x the performance within 3 year
Parent - By Lothar Jung Date 2019-02-09 09:54
Diese Entwicklung ist wahrscheinlich.
Auch in der Vergangenheit hat sich die GPU-Entwicklung schneller vollzogen, als im CPU-Bereich.
Das Problem wird jedoch der Energieverbrauch und die Wärmeentwicklung sein.
Up Topic Hauptforen / CSS-Forum / Leela Zero (Lc0) - NVIDIA Geforce RTX 2060

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill