Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Lc0 Tuning
- - By Robert Bauer Date 2022-02-05 19:33
Hallo,

ich verfolge manchmal die Discord Tuning Results und lese auch immer gerne die Beiträge von Lothar Jung.
Ich habe jedenfalls die auf Discord veröffentlichten und von Lothar auch in CSS geposteten Tuning Einstellungen ausprobiert und muss sagen, dass ich eher enttäuscht war, als ich diese an ein paar Stellungen ausprobierte. Ich habe selbst manuell an den Parametern geschraubt und bekomme schnellere Lösungszeiten für diese paar Stellungen. 
Wie lässt sich das besser vergleichen?
Mit der HTC-Suite? Allerdings könnte es sein, dass einfach die gleiche Zahl von gelösten Stellungen rauskommt.
Daher wären eher die Lösungszeiten ein Indiz, welche Tuning Parameter besser wären.

Bisher habe ich mich noch nicht an die Chess Tuning Tools (CTT) von "Kiudee" herangetraut: https://github.com/kiudee/chess-tuning-tools
Gehen die CTT ganz anders vor?
Man kann sich damit schöne Grafiken mit dem jeweiligen Optimum anschauen.
Da ich aber auf ganz andere Parameter komme, könnte es nicht sein, dass es mehrere Senken d.h. mehrere Optima gibt?

PS: ich habe in einem Beitrag von Lothar gelesen, dass CPuct lower bound 1.1 und upper bound 2.2 habe. Man kann aber den Wert auch noch höher schrauben und erhält auch ein ordentliches Ergebnis.
Wieso ist upper bound bei 2.2?

Gruß,
Robert
Parent - By Lothar Jung Date 2022-02-05 21:44
Hallo Robert,

Du gehst in die Tiefe und triffst den Punkt.

Es ist schon spät und antworte gerne morgen.

Guten Abend

Lothar
Parent - - By Lothar Jung Date 2022-02-06 09:57 Edited 2022-02-06 10:25
So jetzt bin ich ausgeschlafen.

Zunächst die Ausgangsposition des Tunings:

**Tune of search parameters (T78)**
**LC0 version:** v0.28.2
**LC0 options:** Network: 780554, MinibatchSize=32, Backend=cuda-fp16, MoveOverheadMs=0, StrictTiming=true, CPuctFactor=3.973, CPuctBase=45669
**SF options:** SF-dev, Threads=7, Hash=128, "Move Overhead"=0, SyzygyProbeDepth=10
**Tuning ranges:** CPuct: [0.5,2.5], FpuValue [0.0,1.0], PolicyTemperature [1.0,2.0]
**Tuning configuration:** acq function: mes, 600 iterations/6000 rounds/12000 games
**Hardware:** Ryzen 7 5800H (4.4GHz) + RTX 3070M
**Time control:** 47.04s/game+0.784s/move (LC0), 7.02s/game+0.117s/move (SF)
**Speed:** ≈10 Knodes/move (LC0)
**Book:** unbalanced 3-move book (60-90cp)
**Tablebases:** 6-man
**Adjudication:** 6-man TBs, -resign movecount=3 score=400, -draw movenumber=20 movecount=5 score=10
**Software:** chess-tuning-tools 0.8.1, Cutechess (restart=on)

Also das Tuning bezieht sich auf ein bestimmtes Netz, hier: 780554, auf eine bestimmte Hardware, hier RTX 3070M und eine bestimmte Engine, hier: Lc0 0.28.2.

Verändert man die Ausgangslage insbesondere das Netz oder die Netzgröße z.B. 30b Netze oder die Hardware z.B. 2 x RTX 3080, verändert sich das Optimum.

Ich setze z.B RTX 3060M und Lc0 0.29dev. ein.
Also etwas langsamer und etwas schneller.
Also passten die optimalen Werte.
Die default Werte waren bei mir deutlich schlechter, d.h. weniger Lösungen bei HCT114.

Für veränderte Bedingungen sind lower und upper bound da. Sie markieren die Bandbreite der 3 Such-Parameter.
Man sieht, das die früheren default dazwischen liegen.
Also für starke Hardware und längeren Bedenkzeiten könnten höhere Werte besser sein.
Unter TCEC Bedingungen sind die Upper Bound Werte eindeutig besser.
Da kann man mit Tests verifizieren. Zum Beispiel mit der HCT114 Suite.

Erhöht man ein Such-Parameter, sind die anderen beiden Parameter anzupassen.
Die Parameter sind nämlich voneinander abhängig.

Viele Grüße

Lothar
Parent - By Peter Martan Date 2022-02-06 10:04
Lothar Jung schrieb:

Also das Tuning bezieht sich auf ein bestimmtes Netz, hier: 780554, auf eine bestimmte Hardware, hier RTX 3070M und eine bestimmte Engine, hier: Lc0 0.28.2.

Verändert man insbesondere das Netz oder die Netzgröße z.B. 30b Netze oder die Hardware z.B. 2 x RTX 3080, verändert sich das Optimum.

Und vor allem auch je nach Test, mit dem man das Optimum dann bestimmt. Wie Robert schon so richtig schrieb, für jede Stellung ein eigenes (Optimum), das ist bestimmbar, sonst schlicht und einfach nix, Freunde. Schon gar nicht bei Settings, die in der "overall performance", wie diese alte Elosion auch so gern genannt wird, so eng beisammen liegen.
Wie ich immer schon so schön schrieb in grauen Vorzeiten, Spielstärkenbestimmungen von Menschen und Maschinen sind immer streng stellungsabängig zu betrachten.

Natürlich kommt's auch auf andere Umstände als auf die Stellungen an, bei Maschinen (bei Menschen natürlich erst recht, bei denen kommen dann halt noch Dinge dazu wie Nerven und Tagesverfassung) z.B. auf die Hardware- TC und den bzw. die Gegner, fasst wieder mal zusammen
Parent - - By Robert Bauer Date 2022-02-06 21:00
Hallo Lothar,

ich habe eine NVIDEA RTX 2080 Ti und mittlerweile auch eine v0.29 dev, da ich deinem Rat gefolgt bin, dass man für die T78 Netze am besten die dev-Version nimmt.

Zitat:
Erhöht man ein Such-Parameter, sind die anderen beiden Parameter anzupassen.
Die Parameter sind nämlich voneinander abhängig.


Welche sind wie voneinander abhängig? Die CPuct...?

Der FpuValue führt zu heftigsten Reaktionen in den Lösungszeiten. Das habe ich an einer einzigen Stellung manuell probiert.
Ich habe dabei drei Werte-Minima in den Lösungszeiten bekommen!

Besonders schwierig finde ich auch das Herauspicken eines T78 Netzes.

Gruß, Robert
Parent - By Lothar Jung Date 2022-02-06 21:11
Hallo Robert,

Setze erstmal die default Parameter ein und dann die optimierten für einen Test mit der HTC Suite.

Dann siehst Du die Unterschiede.

Die 3 Parameter beeinflussten die PUNC Suche.
Deshalb werden sie gemeinsam optimiert.

Zum Herausfinden der besten T78 Netze habe ich einen Thread geschrieben.
Einen anderen zur Nutzung der parallelen  Lösung von Suits unter der BanksiaGUI.

Du sollest Schritt für Schritt vorgehen.

Viele Grüße

Lothar
Parent - - By Peter Martan Date 2022-02-06 21:14 Edited 2022-02-06 21:20
Robert Bauer schrieb:

Der FpuValue führt zu heftigsten Reaktionen in den Lösungszeiten. Das habe ich an einer einzigen Stellung manuell probiert.
Ich habe dabei drei Werte-Minima in den Lösungszeiten bekommen!

Besonders schwierig finde ich auch das Herauspicken eines T78 Netzes.

Und du bist dir schon im Klaren darüber, Robert, dass die Werte, die du für deine GPU und für das eine Netz und für die eine Stellung ermittelst, für das nächste Netz und die nächste Stellung wieder völlig andere sind, um die besten Lösezeiten zu bekommen?
Hast du eine Vorstellung davon, was ich schon alles bei A-B-Engines an Schrauben verstellt habe, von denen man wenigstens eine Ahnung hatte und hat, was welche Schraube an der Suche (und oder der hard coded Eval) verändert?
Das macht Sinn, wenn man für eine einzelne bestimmte Stellung die optimalen Einstellungen einer Engine finden will, oder gleich die beste Engine für die eine Stellung, aber darüber hinaus, wie soll ich jetzt sagen, damit's nicht zu lang wird, ich weiß schon, ich sag's wesentlich vereinfachend: darüber hinaus?
Nicht.

Etwas, was bei LC0 noch dazu völlig fehlt, sogar den Entwicklern, man spricht nicht ohne Grund von black boxes bei NN- gestützten Anwendungen, der Einblick, was welche Engine- Parameter bei LC0 eigentlich wirklich an der Suche (eventuell auch an der Eval, wie sie in die Suche eingeht, aber davon hat man natürlich noch weniger Ahnung) verändert.
Ich sag's ja nur, sagt ja nur
Parent - By Robert Bauer Date 2022-02-06 21:40
Hallo Peter,

ja, selbstverständlich verstehe ich deine Aussagen.
Ich konnte deinen Erklärungen der Parameter der A/B-Engines schon nicht ganz folgen 
Und bei Lc0 grenzt das an Alchemie. Es sind zwei bis drei Dutzend Parameter.
Da man aktuell nicht versteht, wie man schrauben muss, bleibt zu sagen: das Ergebnis zählt.

Meine Frage ist ja gerade, wie ich die optimalen Parameter über viele Stellungen hinweg ermitteln kann.
Dabei würde es mir ausreichen, wenn ich diese für meine Grafikkarte, die dev-Version und ein bestimmtes Netz ermitteln könnte.
Es wäre dann natürlich ein momentanes Optimum und mit neuer Lc0 Version und neuem Netz wieder zu revidieren.

Lothar scheint mit den Chess Tuning Tools arbeiten zu können. Wahrscheinlich sind diese aktuell das Instrument der Wahl.

Gruß,
Robert
Parent - - By Jörg Oster Date 2022-02-06 22:49 Upvotes 1
Eben. Wenn die vergangenen Jahre/Jahrzehnte eines gezeigt haben, dann dass es in aller Regel
keine gute Idee ist, eine Engine mit/auf einige Teststellungen hin zu optimieren. 
Parent - By Lothar Jung Date 2022-02-06 22:54
Genau!!
Parent - By Peter Martan Date 2022-02-06 23:10 Edited 2022-02-07 00:01
Naja, andererseits könnte man es auch genau umgekehrt sehen, die Eröffnungssets werden immer unausgeglichener, um überhaupt noch ganze Punkte einzuspielen und schau' dir mal an, wie die Stellungstests, die auch unter diesem Namen gemacht werden wieder an Beliebtheit gewonnen haben, einfach, weil sie halt überhaupt diskriminierbare Ergebnisse in machbarem Hardware- Zeitaufwand bringen.

Eng-Eng ist sowieso auch "nur" ausgespielter Stellungstest immer gewesen, mittlerweile werden halt auch diese Teststellungen (Eröffnungen) immer weniger grundstellungsnahe, was den Vorteil einer Seite angeht, und immer weniger "Praxis"- nahe, wenn man die menschliche Turnierpraxis als Richtschnur nimmt.

Dass es keinen Sinn hat, Engines auf einzelne Stellungen hin zu optimieren, außer für genau diesen Zweck, das beste Setting oder die beste Engine für die eine Stellungen zu finden (durchaus auch sinnvoll, wenn man weiß, wozu man was macht), ist ja eh immer Allen klar gewesen.
Aber dass man zu Zeiten, in denen der Fortschritt (zumindest bei den LC0- artigen Engines) darin besteht, immer größere, immer mehr willkürlich ausgesuchte Unmengen von Stellungen ins Training einzuspeisen, nicht wirklich davon reden kann, schon gar nicht in dem Zusammenhang, wie wir es hier jetzt mit Tuning Tools für LC0 machen, dass das Lernen durch Stellungen und das Testen mit Stellungen keine Bedeutung mehr hätte, hat halt schon auch seine willkürlich bis scheuklappenartige mehr quantitative als qualititate Sicht zugrunde.

Dass es immer mehr Partiematerial wird, das fürs Testen notwendig ist, wenn man an "Stellungtests" nicht glaubt, wie auch immer (und da gibt's halt einfach auch wirklich viel mehr Phantasie  dahinter, als es sich die Phobiker dieses Ausdrucks immer schon vorstellen wollten) man die durchführen will, heißt ja nicht unbedingt, dass die Partien und Stellungen, die dann wieder fürs Training herhalten, nicht auch selektiert werden sollten, könnten und werden. Warum zum Beispiel wird es für so nützlich gehalten, LC0- Netze mit SF- Partien zu trainieren und umgekehrt?
Es geht immer bis zu einem bestimmten Punkt ohne menschliche Einmischung, aber dass es ohne sie automatisch besser geht, ist auch mit dem "Zero- Prinzip", das ja noch nie wirklich konsequent verfolgt wurde und jetzt schon ziemlich lange gar nicht mehr, eher widerlegt als bewiesen, und wie sich der Mensch am besten einmischt, das war immer schon sehr Ansichtssache und Sache der Möglichkeiten, die der Mensch hatte. Mittlerweile schaut's eigentlich mehr und mehr danach aus, dass der Mensch kaum noch überhaupt viel beitragen kann, außer die Stellungen, die trainiert werden, und anhand derer getestet wird, auszusuchen. Dass es einfach nur möglichst viele seien sollen, lässt sich vielleicht sogar auch noch irgendwann gegen "welcher Art und wie" abwägen und relativieren, wägt ab und relativiert
Parent - - By Lothar Jung Date 2022-02-06 22:54
Ja Peter,

das Netz ist eine „black box”.

Suche und Bewertungen unterliegen darüberhinaus Wahrscheinlichkeiten.

Alpha Zero ist die Quantentheorie des Schachs.

philosophiert

Lothar
Parent - By Peter Martan Date 2022-02-06 23:29 Edited 2022-02-06 23:41
Lothar Jung schrieb:

das Netz ist eine „black box”.

Suche und Bewertungen unterliegen darüberhinaus Wahrscheinlichkeiten.

Suche und Bewertung von LC0 unterliegen dem Netz- Training mehr als dem, was man an der Engine sinnvoll und gezielt manuell parametrisieren kann, sag' ich mal so, ich vermute das aber z.B. einfach deshalb, weil es sonst nicht soviel mehr Netze als Engine- Versionen gäbe, und wenn der Mensch mehr und mehr ins Netz- Training sinnvoll eingreifen will und kann, dann über die Auswahl des Stellungs- und Partiematerials, dass das Netztraining noch weiterbringt.
Das mit einfach immer größeren Netzen war vorgestern, die Hardware ist schon teuer und stromfressend genug, da stellt vielleicht doch auch irgendwann mal die Ökonomie und die Ökologie eine Grenze dar.
Nix gegen Tuning- Tools, aber du wirst dir  bei ihrer Anwendung auch nicht ersparen können, die Ergebnisse anhand bestimmter Stellungen (ob inform von "Stellungstests" oder inform von Eröffnungstestsets und -Büchern, ist zweitrangig, mit dem buchlosen Match von der Grundstellung allein wird's nix mehr werden) auszuwerten.
Mit wie vielen Stellungen welcher Art war immer schon die einzig relevante Frage, und sie wird halt immer schwerer beantwortbar, quantitativ und qualitativ, philosophiert seinerseits, wenngleich durchaus nicht ohne gewisse déjà vu- Erlebnisse,
Up Topic Hauptforen / CSS-Forum / Lc0 Tuning

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill