Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Backendbench Parameter Optimierung bei Lc0
- - By Clemens Keck Date 2020-03-26 09:54 Upvotes 2
Hallo zusammen

Habe bei Discord was gefunden über verbesserte Einstellungen in Lc0 und teste es gerade. Sieht sehr vielversprechend aus.

Die batch size ist ein wichtiger Parameter in Lc0 der sowohl GPU-abhängig als auch Netztwerk-abhängig ist.
Die batch size beeinflusst die Qualität der Suche.
Es geht also um die
 
--minibatch-size=

Folgende Parameter wirken direkt auf das Befüllen der batch size mit ein:
--max-collision-events=
--max-prefetch=
--max-out-of-order-evals-factor=

In Lc0-24.1 gibt es ein benchmark, das die optimale mini batch size misst.
Die ist für jede GPU und für jede Netzwerk-Filter-Größe anders.

Hier
https://github.com/LeelaChessZero/lc0/pull/1101
finden sich Infos darüber.

Das backend benchmark lässt sich in der cmd ausführen (das weightfile muß im gleichen Ordner sein)

lc0.exe backendbench

Bei Sergio 3010 dauert das fast 10 Minuten.Es werden alle Größen von 1 bis 256 durchgebencht.
Hier ein Auszug aus meinem Bench RTX 2070 + SV_3010

Benchmark batch size 93 with inference average time 20.4035ms - throughput 4558.04 nps.
Benchmark batch size 94 with inference average time 20.435ms - throughput 4599.96 nps.
Benchmark batch size 95 with inference average time 20.4815ms - throughput 4638.34 nps.
Benchmark batch size 96 with inference average time 20.5198ms - throughput 4678.41 nps.
Benchmark batch size 97 with inference average time 24.6252ms - throughput 3939.05 nps.
Benchmark batch size 98 with inference average time 24.6854ms - throughput 3969.96 nps.
Benchmark batch size 99 with inference average time 24.8954ms - throughput 3976.63 nps.

Batchsize 96 ist die beste Einstellung.
Für
--max-collision-events=
--max-prefetch=
habe ich 45% von 96 genommen
--max-out-of-order-evals-factor= wurde mir auf discord mit 2 empfohlen.

--minibatch-size=96
--max-collision-events=43
--max-prefetch=43
--max-out-of-order-evals-factor=2

Ich teste diese Einstellungen gerade mit 10m+2s ponder on gegen Stockfish 11 (12cpu).
Da hab ich Vergleichswerte.

Sergio 3010-default +16 Elo zu SF 11 (180 Spiele)
Sergio_EXP nach 164 Spielen +25 Elo, Test läuft noch.

C.K.
Parent - - By Eduard Nemeth Date 2020-03-26 11:06
Hallo Clemens, die Voreinstellungen liegen höher. Du hast eine flotte GPU. Wenn Du schon die Werte reduzieren solltest, dann sollten die Voreinstellungen auch niedriger ausfallen. Oder?
Parent - - By Clemens Keck Date 2020-03-26 11:20
ich verstehe nicht was Du meinst.
Dachte ich hab es erklärt worum es geht.
Das backendbench ermittelt individuell für jeden User die optimalen Werte für die batch size.
Die default Werte können nicht optimal sein, weil die batch size von der GPU und dem Netzwerk abhängt, und diese Faktoren kennt die aktuelle Lc0 Version nicht, deswegen das backendbench.

Mit dem Sergio 3010 ist es bei meiner Hardware messbar stärker. +16 elo ohne setting, +28 Elo mit setting (170Spiele)
Weis nicht ob das auch bei kleineren Netzen auch so effektiv ist.
Mein nächster Test könnte Leenelstein 14 sein.
C.K.
Parent - - By Eduard Nemeth Date 2020-03-26 14:13
Ok. Aber wie konnte man vor der 0.24 Version herausfinden was das Beste ist?

Da ich nicht daheim bin teste ich gerade auf meinem Core Duo mit 128x20 Netz die Blas Version. Mal schauen was herauskommt.

Für die anderen Werte, gibt es dafür eine Faustformel für die jeweils ermittelte Grösse der batch size?
Parent - By Eduard Nemeth Date 2020-03-26 14:25 Upvotes 1
Also für die CPU Version mit 2 Intel i3 Kernen mit 128x10 Netz ist der beste Wert bei mir 9. Jetzt sollte ich wissen welcher Wert für Max Prefech dafür am besten passt?
Parent - By Clemens Keck Date 2020-03-26 16:09
ich denke das ist nur interessannt bei performanten GPUs, und Netzten ab 256 Filtergröße.
Also T40, T60 oder Leelenstein oder Sergio 3000

Mein Test jedenfalls begeistert mich, auch wenn 12 Elo mehr zu default jetzt nicht so viel erscheinen.
https://docs.google.com/spreadsheets/d/1rS9dw2WebiCIhyMH4L7YH2ZB2b_Bi8Ac9UahuPBoQa8/edit#gid=208381013

C.K.
Parent - - By Werner Schüle Date 2020-03-26 14:09
Danke Clemens für die Info;

ich habe den Test hier auch mal gemacht mit den GTX 1650 (super) Grafikkarten, die etwas gebremst werden müssen für die Tests der 1CPU Liste.
Hier wird der höchste nps Wert bei 256 angezeigt (das ist default).
Allerdings fällt mir auf, das die Werte mehrfach von einem niedrigen Wert aufsteigen zu einem Höchstwert, dann geht das wieder von vorne los.
Das sieht für mich etwas komisch aus - also erklären kann ich mir das nicht.
viele Grüße
Werner
Parent - - By Clemens Keck Date 2020-03-26 16:05
Hallo Werner

die Seite
https://github.com/LeelaChessZero/lc0/pull/1101
zeigt, das es normal ist, das der Wert sog. peaks hat, die in unterschiedlicher Höhe wiederkehren. Sieht man dort sehr gut wenn man scrollt.

Mit welchen Netzwerk hast Du 256 batchsize ermittelt?

Meine Erfahrung stützt sich momentan ausschließlich auf die großen Sergio 3000er Netze.
Da allerdings habe ich eine klare Steigerung gemessen.

C.K.
Parent - - By Werner Schüle Date 2020-03-26 16:26
Hallo Clemens,
ich habe das t40-1541 Netzwerk genommen, das ich gerade teste mit 0.24.1.
Jetzt wäre noch interessant, welcher dieser peaks der beste ist. Evtl auch einer mit einer kleineren batchsize aber in der Nähe (10 oder 20% höchstens kleiner ?).
Habe ich das richtig verstanden?

Werner
Parent - - By Clemens Keck Date 2020-03-26 17:02
Es richtet sich nach der höchsten nps Zahl.
Die zweithöchste geht auch noch, wenn ich das im Forum richtig verstanden habe.

Im cccc Turnier ist
--max-collision-events=
--max-prefetch=
etwa 45% der batchsize.

Übrigens, bei backend demux muß der ermittelte wert mit der anzahl der GPU multipliziert werden.
also 88 x 4 = 352
so kommt es zu den Zahlen dort.
Hätte man backend multiplexing wäre es batchsize=88, collision und prefetch auf 40.

--max-out-of-order-evals-factor=2 gibt nochmal einen push, weil die batch mit weniger Leerlauf gefüllt wird.

C.K.
Parent - - By Eduard Nemeth Date 2020-03-26 17:05 Edited 2020-03-26 17:08
Bei mir ist das ähnlich wie bei Werner. Die Spitzen sehen so aus.
Ich habe lange gewartet, und ich habe das große Sergio Netz getestet. Hier das Endergebnis:

GTX 1050 Ti und t60 384x30 3070 Sergio Netz:
Batch Size   64 - - >457 nps
                     96 - - >479 nps
                   128 - - >489 nps
                   160 - - >500 nps
                   192 - - >505 nps
                   224 - - >506 nps
                   256 - - >511 nps
                                 
Bester Wert ist 256 mit 511 nps. Das ist auch die Voreinstellung.

Was läuft hier falsch?
Parent - - By Clemens Keck Date 2020-03-26 17:22
nur weil es einem Default Wert entspricht muß es nicht falsch sein.
ich würde mal  probieren
--minibatch-size=256
--max-collision-events=115
--max-prefetch=115
--max-out-of-order-evals-factor=2

C.K.
Parent - - By Werner Schüle Date 2020-03-28 18:09
Hallo Clemens,
ich habe mal 2 matches gemacht
default
--minibatch-size=256
--max-collision-events=32
--max-prefetch=32
--max-out-of-order-evals-factor=1

mit deinen Werten (256 war der beste Wert)
--minibatch-size=256
--max-collision-events=115
--max-prefetch=115
--max-out-of-order-evals-factor=2

Der Unterschied war minimal; etwa 15 Punkte besser mit deinen Werten.

Ich habe mal weitergelesen, kann es sein, dass der zweithöchste peak noch stärker ist?
256 mit 2625 nps
224 mit 2616 nps
viele Grüße
Werner
Parent - - By Clemens Keck Date 2020-03-28 21:14
Werner Schüle schrieb:

Hallo Clemens,
ich habe mal 2 matches gemacht
default
--minibatch-size=256
--max-collision-events=32
--max-prefetch=32
--max-out-of-order-evals-factor=1

mit deinen Werten (256 war der beste Wert)
--minibatch-size=256
--max-collision-events=115
--max-prefetch=115
--max-out-of-order-evals-factor=2

Der Unterschied war minimal; etwa 15 Punkte besser mit deinen Werten.

Ich habe mal weitergelesen, kann es sein, dass der zweithöchste peak noch stärker ist?
256 mit 2625 nps
224 mit 2616 nps
viele Grüße
Werner


Hallo Werner

15 Punkte besser, meinst Du 15 Elo?
Wenn ja, fände ich das top.

Ich habe bei 2 Karten Typen und dem Großen Sergio 3010 eine Verbesserung erreicht.
Mit der RTX 2060 (minibatchsize=80) waren es 12 Elo, was echt viel ist bei meinem Test.
Die RTX 2070 (minibatchsize=96) habe ich nicht getestet, aber ich spiele täglich ein Turnier damit, und oft noch über Nacht bei Playchess. Die Karte spielt saustark mit den Einstellungen.

Mit meiner neusten Errungenschaft komme ich nicht zurecht. Die teuerste Karte, spielt nur remis oder verliert.
RTX 2080super, der erste peak ist bei 64 der zweite ganz knapp drunter bei 256.
Also mit 64, da tut sich gar nichts. Mit 256 auch nicht. Ich habe die Karte jetzt tatsächlich ausgebaut und spiele sie vorerst nicht mehr.
Die kommt jetzt in meine Testmaschine. Und da versuche ich zu ermitteln (mit einem konstanten Gegner -SF11-12cpu) welche Werte stark sind.
Das kann dauern (

Und was die Empfehlungen bei Discord betrifft, manche sagen der 2 Peak soll genommen werden, andere sagen der mit den höchsten nps.

Es gibt auch keine Faustformel für max collison und max prefetch.  Da hab ich alles schon gehört. Gleicher Wert wie batchsize, 45% der batch size, default lassen....
Nicht wirklich hilfreich.
Max out of order evals factor 2 bringt was bei kleineren batchsize.

Gruß, Clemens
Parent - - By Tom Paul Date 2020-03-28 21:38
Die Entwickler sollten einen passenden Testdurchlauf erstellen, welcher automatisch die wahrscheinlich besten Werte ermittelt.
Parent - By Walter Knobloch Date 2020-03-29 18:06 Upvotes 1
User mit Extrawünschen sollten wenigstens zum Training beitragen. Irgendwann ist auch ein neuer Trainingsserver nötig. Auch dafür kann man spenden.
Up Topic Hauptforen / CSS-Forum / Backendbench Parameter Optimierung bei Lc0

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill