Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Shredders Triple Brain Effekt am Beispiel der neuen Top Chess Engines Testsuite
1 2 Previous Next  
- - By Dieter Brandhorst Date 2024-02-22 16:54 Upvotes 2
Shredder's "Triple Brain" basiert auf einem Entscheidungsalgorithmus, der entwickelt wurde, um zwischen den Zügen von zwei verschiedenen Schach-Engines zu wählen. Interessanterweise wird bei der Entscheidungsfindung nicht die eigentliche Bewertung der Züge berücksichtigt. Stattdessen kommt ein spezielles System zum Einsatz, das von Stefan Meyer-Kahlen entwickelt wurde.
http://www.mustrum.de/artikel/Triple%20Brain.pdf

Um den Effekt dieses Systems zu veranschaulichen, nehmen wir die neueste Top Chess Engines Testsuite des Jahres 2024 als Beispiel. Hier sehen wir, wie die Schach-Engine "Leptir" (eingestellt auf 31 Threads, MPV= 6, auf einem Threadripper 1950X mit 3.4 GHz) bei einer Zeitkontrolle (TC) von 3 Sekunden 96 von 234 Aufgaben löst und bei einer Zeitkontrolle von 1 Sekunde 60 von 234 Aufgaben. Eine andere Engine, "Lc0 mit BT3", löst bei einer Zeitkontrolle von 3 Sekunden 85 von 234 Aufgaben und bei einer Zeitkontrolle von 1 Sekunde 59 von 234 Aufgaben.

Beim direkten Vergleich der Lösungen dieser beiden Engines für eine Zeitkontrolle von 3 Sekunden sehen wir, dass 49 Aufgaben von beiden Engines gelöst wurden, 47 Aufgaben nur von "Leptir" und 38 Aufgaben nur von "Lc0 mit BT3". Theoretisch könnten diese beiden Engines zusammen 134 Lösungen liefern. Jedoch löste ein "Triple Brain", das aus diesen beiden Engines besteht, bei einer Zeitkontrolle von 3 Sekunden nur 120 Aufgaben. Dies deutet darauf hin, dass der Entscheidungsalgorithmus des "Triple Brain" noch verbesserungswürdig ist, da er nicht die theoretische Maximalanzahl von 134 Lösungen erreicht.
https://docs.google.com/spreadsheets/d/1L53k0kMqSoM38sE8SKf-Znw12m9UutpVB3tgZvGX36E/edit#gid=0

Die Frage ist nun, ob Stefan Meyer-Kahlen plant, Shredder oder das "Triple Brain" weiterzuentwickeln. Eine solche Entwicklung könnte sehr vielversprechend sein, insbesondere da andere multi-Engine-Systeme, die bekannt sind, deutlich schlechtere Ergebnisse zeigen.
Parent - - By Max Siegfried Date 2024-02-24 13:14
Vielleicht ist Leptir doch nicht so gut wie gedacht oder er muss etwas nachbessern.

Leptir:
1 Sekunde = 60 Aufgaben
3 Sekunden = 96 Aufgaben

LC0:
1 Sekunde = 59 Aufgaben
3 Sekunden = 85 Aufgaben

Bei 3 Sekunden:
49 Aufgaben von beiden gelöst
47 nur Leptir
38 nur LC0

Triple Brain:
120 gelöst

Theoretisch möglich wären 134 Lösungen.

Klar ist der Entscheidungsalgorithmus des "Triple Brain" verbesserungswürdig. Wann wurde da das letzte Mal nachgebessert/verbessert?
1985?
Gefühlt 40 Jahre her.

Meine Frage wäre, ob man Triple Brain noch braucht?
-Stockfish und Derivate laufen auf der CPU.
-LC0 läuft auf der GPU.
-Beide behindern sich nicht, was die Hardware angeht und ergänzen sich perfekt, was die Software angeht.

Das letzte was ich damals hörte war das er an der neuen Shredder NNUE Version arbeitet bis es (perfekt) ist. Was ja auch logisch ist für den Verkauf.
Es wäre sinnvoll Triple Brain gleich weiterzuentwickeln?

Andererseits wenn Triple Brain so toll ist, warum benutzt es dann kaum jemand?
Selbst BanksiaGUI wird deutlich öfters verwendet und ist deutlich bekannter.
Man hätte es übrigens auch dort integrieren lassen können, sofern man dem Entwickler bescheid gesagt hätte und es nicht illegal ist.

Ich kann nachvollziehen wenn du sagst, dass Triple Brain theoretisch mehr Züge finden sollte, welche von "entscheidender Bedeutung" sind, wie z.B. in Testsuites üblich.
Aber wie sieht das ganze in einer normalen Schachpartie mit normalen Zügen aus und wie sehr kann man sich auf die Bewertung in neutraleren Stellungen verlassen geschweige denn diese nachvollziehen?

Sind die Ergebnisse von Multi-Engine-Systemen wirklich deutlich schlechter?
Hast du eine Partie als Beispiel damit alle sehen können was Triple Brain kann?
Parent - - By Dieter Brandhorst Date 2024-02-25 11:19 Upvotes 1
Zitat:
Andererseits wenn Triple Brain so toll ist, warum benutzt es dann kaum jemand?
Selbst BanksiaGUI wird deutlich öfters verwendet und ist deutlich bekannter.
Man hätte es übrigens auch dort integrieren lassen können, sofern man dem Entwickler bescheid gesagt hätte und es nicht illegal ist.


TripleBrain funktioniert nur unter der Shredder GUI und kann nicht selbstständig als UCI-Engine eingebunden werden. Das bedeutet, es kann nicht leicht gegen andere Engines antreten oder online genutzt werden. Um TripleBrain gegen andere Engines spielen zu lassen, muss man umständlich zwei Shredder GUIs über eine alte Schnittstelle (auto232) verbinden. Diese Einschränkungen machen TripleBrain weniger attraktiv und erklären, warum es selten genutzt wird. Daher ja auch mein Wunsch nach Weiterentwicklung.

TripleBrain ist soviel ich weiß nicht open source, sondern wurde/wird mit der Shredder GUI kommerziell vertrieben. Von daher denke ich wäre die Einbindung in die BanksiaGUI illegal. Die in der Banksia GUI vorhandenen multi-Engine Möglichkeiten sind nach meinen Erfahrungen alle wesentlich schlechter als das TripleBrain von Stefan Meyer-Kahlen. Es fehlt dort einfach der ausgeklügelte Zugauswahlmechanismus.

Zitat:
Hast du eine Partie als Beispiel damit alle sehen können was Triple Brain kann?


In dieser Konstellation (Lc0_BT3+Leptir) (noch) nicht. Wie o.a. ist das ein wenig umständlich, aber machbar. Was ich gerade vorbereite ist das TripleBrain mit der TC=3sec/Zug (genau wie im Stellungstest), gegen Leptir allein antreten zu lassen, um zu sehen ob die Hilfe von Lc0 sich auch im praktischen Spiel niederschlägt. Das ganze über etwa 100 Partien mit den neuen UHO2024. Werde berichten, wenn es soweit ist.

VG Dieter
Parent - - By Peter Martan Date 2024-02-25 11:29 Upvotes 1
Dieter Brandhorst schrieb:

Was ich gerade vorbereite ist das TripleBrain mit der TC=3sec/Zug (genau wie im Stellungstest), gegen Leptir allein antreten zu lassen, um zu sehen ob die Hilfe von Lc0 sich auch im praktischen Spiel niederschlägt.

Darauf wär' ich auch neugierig, weil Triple Brain ja auch nicht direkt in einer automatischen Eng-Eng-Partie im Shredder funktioniert. Da lässt du ihn über Autoplayer 232 gegen einen anderen Rechner antreten oder wie oder was?
Parent - - By Dieter Brandhorst Date 2024-02-25 11:35 Upvotes 2
Zitat:
Da lässt du ihn über Autoplayer 232 gegen einen anderen Rechner antreten oder wie oder was?


Nein, ganz einfach über 2 Instanzen der Shredder GUI auf ein und demselben Rechner. Eine Instanz als master die andere als slave der auto232-Schnittstelle und dann über Netzwerk verbinden anklicken, nicht über com, das funktioniert recht gut.

VG Dieter
Parent - - By Peter Martan Date 2024-02-25 11:56 Upvotes 1
Prima Tipp, danke, muss ich auch mal die eine oder andere Partie probieren, dass das auch im Triple Brain- Mode so geht, wusste ich noch nicht
Parent - - By Dieter Brandhorst Date 2024-02-26 11:30 Upvotes 2
Damit es immer einwandfrei läuft, Timeout im auto232 auf eine Minute stellen und bei TripleBrain-Kombinationen mit Lc0, den beiden Lc0-Threads im Taskmanager von Windows immer dieselben Threads zuordnen, (ich nehme 30 und 31) und Lc0 die Priorität Echtzeit zuordnen. Geht beides über den Taskmanager=>Details und rechte Maustaste.

VG Dieter
Parent - - By Thomas Plaschke Date 2024-02-26 17:56 Upvotes 1
Als wir noch single-core-CPUs hatten, war das Einstellen eines Programms auf "Echzeit" ein sicherer Weg, den PC zum Absturz zu bringen oder "einzufrieren". Der Tip, die Priorität auf "Echtzeit" zu ändern, sollte deswegen nicht ohne Erklärung gegeben werden, weil eine höhere Einstellung als normal andere Prozesse - darunter auch welche des Betriebssystems - "nachrangiger" macht - selten mit guten Folgen. Auch sollte irgendein messbarer Vorteil dabei herausspringen. Bei einem sauber konfiguriertem System wird aber nicht viel dabei herausspringen.

Und ein letzter Hinweis. Benachbarte Threads in der Reihenfolge gerade-ungerade werden - unter Windows - von ein und dem selbem CPU-Kern abgearbeitet. Wenn schon sollte man verschiedene Kerne nutzen, also ungerade-gerade - oder am besten es gleich dem Betriebssystem überlassen, das diesen Fehler nicht macht, wenn genug logische CPUs vorhanden sind.

Viele Grüße
Th. Plaschke
Parent - - By Dieter Brandhorst Date 2024-02-26 20:06 Edited 2024-02-26 20:12 Upvotes 1
Wie auch immer, aber 2 von 32 threads, und zwar die von Lc0 verwendeten zu reservieren, hat das System enorm stabilisiert. Beim Starten zweier Instanzen der Shredder GUI, innerhalb derer jeweils noch mit 14 threads Stockfish16 und Leptir liefen, geschah es häufiger einmal, das die Instanz in der TripleBrain lief, also parallel Lc0 (2 threads) und Leptir (14 threads), abstürzte. Mit den von mir angegebenen Einstellungen ist das nicht mehr passiert und läuft rock solid. Reine Empirik, aber erfolgreich. Mag sein das es auf anderen Systemen nicht unbedingt nötig ist, bei mir war es so. Der Grundgedanke war halt dass Lc0 kontinuierlich auf die notwendigen CPU-Ressourcen zugreifen kann.

VG Dieter
Parent - - By Peter Martan Date 2024-03-13 00:01 Upvotes 1
Ponder off der beiden Instanzen geht nicht, oder?
Parent - - By Dieter Brandhorst Date 2024-03-13 19:34 Upvotes 1
Es geht natürlich, hat aber bei mir nicht so wesentlich zur Stabilität beigetragen. Instabil (d.h. die Instanz mit Triple Brain hat sich im Match einfach wortlos verabschiedet) wurde es erst mit den sehr großen Netzen BT3 und BT4. Mit BT4 im Triple Brain bekomme ich es momentan nur dann stabil, wenn beide Shredder-Instanzen miteinander in Sandboxie (https://github.com/sandboxie-plus/Sandboxie) isoliert vom Betriebssystem laufen. Das allerdings, funktioniert bei mir recht gut.

VG Dieter
Parent - - By Peter Martan Date 2024-03-13 19:43 Upvotes 1
Dieter Brandhorst schrieb:

Es geht natürlich

Wie?
Parent - - By Dieter Brandhorst Date 2024-03-15 13:51 Upvotes 1
In jeder Instanz der Shredder GUI unter Extras->Engines->Permanent Brain, das Häkchen wegmachen oder noch einfacher  Permanent Brain mit Strg+P im Wechsel ein und ausschalten.

VG Dieter
Parent - - By Peter Martan Date 2024-03-15 13:55 Upvotes 1
Danke! Aber wenn du sagst, es bringt für die Stabilität auch nichts, lass' ich das jetzt erst mal wieder sein, stürzt schon häufig ab. Sandbox hab' ich noch nicht probiert.
Parent - - By Peter Martan Date 2024-03-15 23:26 Upvotes 1
Jetzt musste ich mit ponder off natürlich doch nochmals zu probieren anfangen, und es mag Zufall sein, viele Partien sind's noch nicht, aber so weit bisher keine Abstürze mehr.
Parent - - By Peter Martan Date 2024-03-16 09:56 Upvotes 1
Hat allerdings nicht lange gedauert, die Freude

Was ich am unangenehmsten an den Crashes finde, nicht nur, dass auch immer wieder mal Blue Screens vorkommen, können die auch noch eine Weile, nachdem man die Shredder- Instanzen ordnungsgemäß geschlossen hat, passieren.
Parent - - By Dieter Brandhorst Date 2024-03-17 10:30 Upvotes 1
Blue Screens hatte ich zwar noch nicht, aber mit den großen BT4-Netzen in Lc0 und das dann im Triple Brain habe ich so noch keine 100 Partien am Stück hingekriegt. Auch nicht in der Sandbox, obwohl es erst so aussah. Irgendwo zwischen Partie 30 und 60 stürzt es immer wieder mal ab. Was mit Lc0+BT3 noch gut geklappt hat, klappt mit dem BT4-Netz nicht mehr. Frustrierend, würde gern mal mit dem TripleBrain  stabil Turniere spielen können.

VG Dieter
Parent - - By Lothar Jung Date 2024-03-17 18:54
LC0 mit 1 GPU braucht 2 Kerne, nicht Threads.
Falls es mit anderen Programmen manchmal zu Konflikten kommt, würde ich als Backend „Demux“ mit 1 Kern probieren.
Parent - - By Peter Martan Date 2024-03-17 19:02 Upvotes 1
Lothar Jung schrieb:

LC0 mit 1 GPU braucht 2 Kerne, nicht Threads.

Seit wann?
Heißt, ich darf Hyperthreading für Lc0 Cuda- Backend nicht nutzen?
Parent - By Lothar Jung Date 2024-03-17 19:15
Doch, natürlich Kerne, das CPU Verteilungszenario von Dieter scheint mir auf Kante genäht.
War ein Vorschlag, halt probieren.
Parent - By Max Siegfried Date 2024-03-17 19:21
Peter Martan schrieb:

Lothar Jung schrieb:

LC0 mit 1 GPU braucht 2 Kerne, nicht Threads.

Seit wann?
Heißt, ich darf Hyperthreading für Lc0 Cuda- Backend nicht nutzen?


Mit MacBook M Chip GPU reicht ein Kern und LC0 ist sogar schneller.
Parent - - By Lothar Jung Date 2024-03-18 20:02
Threads und Hyperthreads sind nicht das gleiche.
LC0 braucht 2 CPU Kerne um die Suche durchzuführen.
Wenn man die zur Verfügung stehen Resourcen mit anderen Engines durch Hyperthreads überreizt treten Konflikte auf, die zu Fehler führen.
Parent - - By Peter Martan Date 2024-03-18 21:08 Upvotes 1
Threads und "Hyperthreads" snd für mich das gleiche, wenn Hyperthreading aktiviert ist. Wenn ich mit HT on ein thread binding an bestimmte Kerne will, muss ich das eigens machen, hat aber bisher auch noch niemand außer dir dafür plädiert, das bei Lc0 prinzipiell so zu machen. Dass ich nicht mehr Threads (aber auch nicht mehr Kerne) als ich frei habe, zuweisen kann, ist klar, aber ohne eigenes thread binding kann ich das Verwenden von einem Kern für 2 Threads nur durch HT off verhindern.
Noch einmal: darf man HT on für Lc0 verwenden oder nicht?
Parent - - By Lothar Jung Date 2024-03-18 21:15
Nicht!
Wenn man Fehler in der Suche von LC0 verhindern will.
Parent - - By Peter Martan Date 2024-03-18 21:28 Upvotes 1
Kannst du das irgendwie statistisch belegen?
Wenn du so sicher bist, muss es ja wohl zumindest irgendjemand mal irgendwie mit und ohne HT probiert haben und du wirst dann solche Unterschiede sicher irgendwie quantifizieren können. Einzelne statisch relevante Unterschiede (mit ausreichend zahlreichen Versuchen, die Streuung von time to solution zu mitteln) anhand einzelner Teststellungen würde ich auch schon gelten lassen. Als ich das mit SF das letzte Mal probiert habe, konnte ich weder bei benchmarks noch bei Suiten signifikante Unterschiede feststellen.

https://talkchess.com/viewtopic.php?p=956003#p956003
Parent - - By Lothar Jung Date 2024-03-18 22:13
Es ist unter Windows nur unter Bedingungen relevant, die alle CPU Resourcen einschließlich Hyperthreading ausnutzen.
Hyperthreading ist nicht Threading im Anwendungsbereich.
Nicht umsonst wird es bei den offiziellen Turnieren nicht verwendet.
Parent - - By Peter Martan Date 2024-03-18 22:25 Edited 2024-03-18 22:28 Upvotes 1
Was verstehst du unter offiziellen Turnieren?
Dass TCEC und CCC, denen's auf ein paar mehr Kerne, wenn Lc0 eh nur wenige braucht, nicht ankommt, heißt ja nicht, dass ich am Heimrechner bei derselben GPU wirklich doppelt soviele Threads eingeben müsste in den UCI- Optionen um auf dieselbe schachliche Leistung zu kommen wie mit HT off.
Wenn dem so wäre, müsste Lc0 nicht Threads in den Optionen haben, sondern Kerne.

Bei A-B weiß ich, dass ich mit HT on und doppelt sovielen Threads wie bei HT off ähnliche benchmarks und ähnliche Knotenzahlen und ähnliche schachliche Leistungen bekomme (zumindest bei den Engines, bei denen ich das selbst probiert habe und mich im Übrigen auf das verlasse, was ich von anderen Engines lese. Dass eine bestimmte nicht mit HT ähnlich gute Performance wie ohne HT hätte, habe ich schon lange von keiner mehr gelesen, obwohl natürlich auch da immer noch die Gerüchte kursieren, HT off sei einfach "besser". Wie gesagt, aus jüngerer Zeit hab' ich dazu weder Untersuchungen anderer Leute gesehen, noch sprechen meine wie die am Link oben gezeigten dafür, dass das mit SF heutzutage wirklich noch so ist, dass HT off nicht durch doppelt soviele Threads und HT on ausgeglichen werden könnte.
Wenn du meinst, Threads bei Lc0 heißen nicht wie bei SF einfach doppelt soviele zu wählen wie bei HT on, hätte ich dazu nach wie vor gern mehr als deine Vermutung. Du bist doch sonst nie um Quellen verlegen, wo sind diejenigen, die belegen, dass Lc0 mit HT on 4 Threads braucht?

Das würde es aber einfach bedeuten, dass man bei Lc0, wenn man 2 HT- off- Threads braucht, 4 HT on- Threads wählen müsste. Ist dem so? Und wo steht das?
Und wieso stellen sich die Lc0- Binaries beim Installieren auf einem System, auf dem HT on gewählt ist, dann default auf 2 Threads ein und nicht auf 4?
Parent - - By Lothar Jung Date 2024-03-19 09:01
„Ponder on with two engines playing is always a gamble on multithreaded cpus. For lc0 you will likely need to set task workers to 0 for more consistent behavior, and I would advice only allocating threads equal to the number of cores for both engines.“
Parent - - By Peter Martan Date 2024-03-19 09:07 Edited 2024-03-19 09:23 Upvotes 1
Lothar, das ist ja alles gut und schön und irgendwie binsenweis, dass man (mit Ponder on ebenso wie mit Ponder off) die Zahl der Threads an das anpassen muss, was an Ressourcen da ist. Es beantwortet aber nach wie vor nicht meine Frage: soll man deiner Meinung nach, wenn man denn (aus welchen Gründen auch immer, vordergründig natürlich, um einfach mehr Instanzen zur Verteilung zu haben) Lc0 mit HT on betreibt, soll man dann 2 oder 4 Threads wählen? Würde "Threads" als UCI- Option bei Lc0 "Cores" heißen (was es bei keiner anderen Engine heißt, vielleicht mal von CSTal abgesehen, aber der die das macht mit entsprechend zwingend vorgeschriebenen Setting- Eigenarten darauf aufmerksam) müsste man mit HT on 4 Threads wählen. Bei CSTal ist's infofern umgekehrt, als man gar nicht mehr Threads einstellen kann, als Cores vorhanden sind, und selbst diese physikalischen Cores kann man nur mit Setting- Feinheiten ("setoption name RelaxThreadLimit value true") auslasten. Dergleichen hab' ich von Lc0 außer von  dir (und das auch erst nach längerer Zeit, in der du immer von 2 Threads geschrieben hast und nicht von 2 Cores), noch nie gehört, geschweige denn, dass man HT on einfach nicht wählen darf, wenn man Lc0 auf einem Rechner betreibt, der HT on anbietet.
Parent - - By Lothar Jung Date 2024-03-19 09:18
Gebe unter der Discord Suche „Hyperthreading“.
Dann kommt als Ergebnis meine Frage.
Klicke auf meine Frage und du erhältst meine Diskussion mit Borg.
Parent - - By Peter Martan Date 2024-03-19 09:21 Upvotes 1
Nein, Lothar, beantworte einfach du jetzt und hier meine einfache Frage: 2 oder 4 Threads für Lc0 mit einer 3070ti Nvidia GPU und Cuda Backend mit HT on?
Parent - - By Lothar Jung Date 2024-03-19 09:25
Eindeutig 4 Threads.
Parent - - By Peter Martan Date 2024-03-19 09:31 Upvotes 1
Na, wenn du's sagst.
Ist jedenfalls einfacher, als HT on gar nicht zu nutzen, worauf ich nur wegen Lc0 sicher nicht verzichten werde. Wenn ich mal wieder viel Zeit hab', werd' ich ein paar Versuche mit HT off machen im direkten Vergleich zu HT on und doppelt sovielen Threads. Wenn das dann ähnlich wie bei SF die praktisch gleiche Performance ist, danke ich für den Tipp. Irgendwie hättest du das ja auch gleich sagen können
Parent - - By Jörg Oster Date 2024-03-19 10:39 Upvotes 1
Ich bin skeptisch. 
Parent - - By Peter Martan Date 2024-03-19 10:49 Edited 2024-03-19 11:00 Upvotes 1
Ich auch
Bin gerade auf discord und versuche Lothar dort auf genau diesen Test, den er dort veröffentlicht hat, anzusprechen

https://discord.com/channels/425419482568196106/425419483016855563/1183363057632681994

EPD  : 1001.epd
    Time : ms
                                                Max   Total   Time   Hash
    Engine           Score   Found  Pos   ELO  Score   Rate    ms     Mb  Cpu
1  SF231202         81480    841  1001  4189  87540  93.1%    200   128   16
2  SF231202         81370    848  1001  4185  87540  93.0%    200   128    8
3  SF15             80930    836  1001  4158  87540  92.4%    200   128    8
4  SF15             79670    812  1001  4095  87540  91.0%    200   128   16
5  Lc0a4877961- HT  79255    813  1001  4072  87540  90.5%    200     2    2
6  Lc0a4877961 off  79215    810  1001  4072  87540  90.5%    200     2    2
7  Dragon3.3        78590    806  1001  4041  87540  89.8%    200   128    8
8  Dragon3.3        78570    806  1001  4041  87540  89.8%    200   128   16

                                    Created with MEA
                                          by
                                       Ferdinand
                                         Mosca


Die 1001 Stellungen schauen mir rein so von der Anzahl her, stark nach einer "meiner" MEA- Suiten aus, die ich in grauer Vorzeit mit Download- Link hier im Forum gepostet habe.

Edit: ja, da hat halt das tt mal wieder keinen Sinn, weil die Einrückung des Postings das Format wieder vernichtet, ist ja jetzt egal, auf Discord kann man's leider auch nicht lesen, weil sich Lothar dort ebenso wenig wie hier einer Foren- konformen Formatierung befleißigt


Edit edit: Vorläufig keine Antwort auf discord, bleibe noch 10 Minuten eingeloggt, dann bin ich dort erstmal wieder raus.
Parent - - By Jörg Oster Date 2024-03-19 12:05 Upvotes 1
Hallo Peter,

'borg' hat dir ja mittlerweile auf discord geantwortet.
Für die neueren, größeren Netze reicht also evtl. auch schon 1 Thread.

Generell verhält es sich wohl so, dass wenn du Lc0 alleine laufen hast,
das OS dir mit sehr großer Wahrscheinlichkeit auch immer 2 volle Threads für Lc0 zur Verfügung stellt.

Je mehr Threads von anderen Engines (Programmen) beansprucht werden, desto höher die Wahrscheinlichkeit, dass Lc0
auch mal ein Hyperthread zugewiesen bekommt. Dann könnte die Leistung von Lc0 theoretisch etwas leiden.
Zu 'Rechenfehlern' bzw. 'Fehlern in der Suche' führt dies sicherlich natürlich nicht.
Parent - By Peter Martan Date 2024-03-19 12:24 Upvotes 1
Danke, Jörg, hab borg's Antwort

https://discord.com/channels/425419482568196106/425419483016855563/1219589254791954532

Zitat:
Typically you need 2 search threads with lc0 for a single gpu, one thread is blocked waiting for the gpu to finish processing a batch and the second is preparing the next batch. Hyperthreading on or off shouldn't really matter unless another engine (e.g. stockfish) is running at the same time. With the current big (and thus slow) nets, we have some reports that a single thread may be faster, so if you have results I'm interested.


schon gelesen und mich bedankt.
Was meine eigenen Ergebnisse angeht, werden die ein bisschen dauern, weil ich nebenbei auch wieder etwas Fernschach spielen muss und drum nicht soviel Rechnerzeit frei hab'.
Parent - By Max Siegfried Date 2024-03-19 14:11
Jörg Oster schrieb:

Hallo Peter,

'borg' hat dir ja mittlerweile auf discord geantwortet.
Für die neueren, größeren Netze reicht also evtl. auch schon 1 Thread.

Generell verhält es sich wohl so, dass wenn du Lc0 alleine laufen hast,
das OS dir mit sehr großer Wahrscheinlichkeit auch immer 2 volle Threads für Lc0 zur Verfügung stellt.

Je mehr Threads von anderen Engines (Programmen) beansprucht werden, desto höher die Wahrscheinlichkeit, dass Lc0
auch mal ein Hyperthread zugewiesen bekommt. Dann könnte die Leistung von Lc0 theoretisch etwas leiden.
Zu 'Rechenfehlern' bzw. 'Fehlern in der Suche' führt dies sicherlich natürlich nicht.


Dies ist schon seit ungefähr 8 Monaten bekannt.
https://talkchess.com/viewtopic.php?p=951280#p951280
LC0 +35.94% SPEED UP on Apple devices
t1-smolgen-512x15x8h-distilled-swa-3395000

lc0 benchmark --threads=2
Total time (ms) : 351450
Nodes searched : 337404
Nodes/second : 960

lc0 benchmark --threads=1
Total time (ms) : 343945
Nodes searched : 448971
Nodes/second : 1305

Diese Apple Geräte sind einfach so gut
Parent - - By Frank Sanders Date 2024-03-18 09:51 Upvotes 1
Ich habe ein eigenes Triple Brain für Testpositionen (Zorrofish) und ich wollte vergleichen wie es sich im Vergleich zu Shredders Triple Brain schlägt. Dazu habe ich beiden ein Testset von 500 Positionen aus der STS Testsuite lösen lassen. Shredder war besser und darum habe ich mir alle Ergebnisse anhand der .dmp Files genauer angeschaut, und bin auf etwas merkwürdiges gestoßen:

Code:
2r2k2/R4bpp/2p2p2/1pN5/1n3PP1/1P2P2P/8/5BK1 w - -
           +---+---+---+---+---+---+---+---+
         8 |   |:::|*R*|:::|   |*K*|   |:::
           +---+---+---+---+---+---+---+---+
         7 | R |   |:::|   |:::|*B*|*P*|*P*
           +---+---+---+---+---+---+---+---+
         6 |   |:::|*P*|:::|   |*P*|   |:::
           +---+---+---+---+---+---+---+---+
         5 |:::|*P*| N |   |:::|   |:::|  
           +---+---+---+---+---+---+---+---+
         4 |   |*N*|   |:::|   | P | P |:::
           +---+---+---+---+---+---+---+---+
         3 |:::| P |:::|   | P |   |:::| P
           +---+---+---+---+---+---+---+---+
         2 |   |:::|   |:::|   |:::|   |:::
           +---+---+---+---+---+---+---+---+
         1 |:::|   |:::|   |:::| B | K |  
           +---+---+---+---+---+---+---+---+
             a   b   c   d   e   f   g   h
Triple Brain
Solution : e3-e4!
17+8    0:01   3%      1.e4    Stockfish 16.1
  8+18   0:01   7%      1.e4    Lc0 v0.31.0-dag+git.5c1051fe
  8+19   0:01   4%      1.e4    Lc0 v0.31.0-dag+git.5c1051fe
  8+19   0:01   1%      1.Bg2   Lc0 v0.31.0-dag+git.5c1051fe
  8+19   0:01   1%      1.e4    Lc0 v0.31.0-dag+git.5c1051fe
  9+19   0:01   3%      1.e4    Lc0 v0.31.0-dag+git.5c1051fe
  9+19   0:02   6%      1.Bg2   Lc0 v0.31.0-dag+git.5c1051fe
10+19   0:03   9%      1.Bg2   Lc0 v0.31.0-dag+git.5c1051fe
10+19   0:04   7%      1.Bg2   Lc0 v0.31.0-dag+git.5c1051fe
11+19   0:04   7%      1.Bg2   Lc0 v0.31.0-dag+git.5c1051fe
best move: Bf1-g2 time: 0:05.078 min  n/s: 204.216 
Right solution! (0:00.276) 14
Right until now: 74 of 89  ;  1:45m


Die richtige Lösung ist e3-e4.
Shredder Triple Brain findet als besten Zug Bf1-g2.
Schreibt darunter aber die Position wurde richtig gelöst (???)
und gibt sich dafür einen Punkt (von 73 auf 74).

Sehe ich etwas falsch oder ist das ein Bug? Das wäre wenn es im gesamten Test nur einmal vorgekommen wäre nicht so schlimm, aber es ist bei 500 Positionen 13 mal vorgekommen und dann schaut das Endergebnis schon wieder anders aus.
Beim Partiespiel wirkt sich das nicht aus, denn Shredder Triple Brain zieht dann einfach Bf1-g2 und weiter geht es. Bei Testpositionen aber wird das Ergebnis verfälscht. Meldungen und Rückmeldungen dazu?
Parent - - By Peter Martan Date 2024-03-18 11:27 Edited 2024-03-18 12:06 Upvotes 1
In meiner MEA- STS- Suite von Schröder und Mosca (sts-SF15.epd) habe ich das:

2r2k2/R4bpp/2p2p2/1pN5/1n3PP1/1P2P2P/8/5BK1 w - - c0 "Bg2=10, e4=6, f5=3, Be2=2";

und in der alten sts-old.epd:

2r2k2/R4bpp/2p2p2/1pN5/1n3PP1/1P2P2P/8/5BK1 w - - bm Bg2; c0 "Bg2=10, e4=5, Be2=1, h4=1";

In letzterer ist also unter bm nur das Bg2 angegeben, in der neuen Fassung gar kein bm und das Bg2 hat aber auch da mehr Punkte.
Jetzt müsstest du mal nachschauen, wie das in der Syntax deiner Suite genau ausschaut, aber wenn das Shredder-GUI laut .dmp nur das e4 als richtige Lösung "sucht", ist's ein Bug, wenn er den anderen Zug gelten lässt, schau vielleicht trotzdem nach, ob vielleicht 2 Züge unter bm gelistet sind und das GUI nur vielleicht den zweiten nicht anschreibt.
Wie auch immer, das ist eine der Stellungen, die so nicht gut für single best move- Suiten taugen, da sind 2 Züge zu nahe beisammen, über die Punktevergabe bei MEA kann man dann streiten, hängt von den Punkten der übrigen Stellungen ab, aber im Shredder müsste man, wollte man die Stellung drin lassen, beide als bm eintragen, was sie halt wieder in der Wahrscheinlichkeit, dass einer von beiden gewählt wird, stark erhöht.

Sowohl SF16.1 als auch Lc0 mit dem 6077500- Netz haben nach kurzer Rechenzeit übrigens Lg2 bei mir oben, da kann das Dreihirn eigentlich dann auch nicht mehr viel falsch machen, ich müsste die Syntax ändern und dann automatisch durchlaufen lassen, das ist mir zuviel Aufwand, weil was meine Erfahrungen mit TripleBrain und Suiten angeht, hab' ich wenig probiert, in der kleinsten und selektivsten hat ShashChess allein im MultiPV- Mode eine Lösung mehr gefunden als im selben MultiPV=4 Triple mit Lc0, was darauf zurückzuführen war, dass zwar manchmal eine der beiden Engines die richtige Lösung oben hatte, sich aber im Triple Brain  nicht rechtzeitig gegen die andere durchsetzen konnte. So werden einander vermutlich je nach Suite, Hardware- TC und Engines immer wieder mal Lösungen, die von einer allein nicht gefunden werden, vom TripleBrain mit der anderen gemeinsam aber schon, gegen andere konkurrenzieren, bei denen die von einer gefundenen im Triple Brain nicht als gelöst gewertet werden können, weil's der TB- Algorithmus anders sortiert. Aber das ist dann kein Bug, sondern ein Feature
Parent - - By Frank Sanders Date 2024-03-18 12:05 Upvotes 1
In der verwendeten Testsuite ist folgendes .epd für die Stellung:

2r2k2/R4bpp/2p2p2/1pN5/1n3PP1/1P2P2P/8/5BK1 w - - bm e4; id "STS(v2.2) Open Files and Diagonals.023"; c0 "e4=100, Bg2=87, Be2=49, f5=22, h4=11, Rb7=1, Nd7+=1, Kf2=1, Kg2=1, g5=1"; c7 "e4 Bg2 Be2 f5 h4 Rb7 Nd7+ Kf2 Kg2 g5"; c8 "100 87 49 22 11 1 1 1 1 1"; c9 "e3e4 f1g2 f1e2 f4f5 h3h4 a7b7 c5d7 g1f2 g1g2 g4g5"; Ae "Stockish 15";

Der beste Zug ist laut .epd (muss schachlich nicht stimmen) ist hier eindeutig e3-e4.
Wie man im Triple Brain Verlauf sehen kann, wurde er am Anfang der Suche auch als bester Zug erwogen, dann aber durch Bf1-g2 ersetzt und dieser Zug als bester ausgegeben. Danach wurde ein Punkt gutgeschrieben, obwohl der gesuchte beste Zug e3-e4 nicht gefunden wurde.
Parent - - By Peter Martan Date 2024-03-18 12:11 Edited 2024-03-18 12:14 Upvotes 1
Frank Sanders schrieb:

Der beste Zug ist laut .epd (muss schachlich nicht stimmen) ist hier eindeutig e3-e4.

Stimmt schachlich vermutlich eben auch nicht (das zu beweisen, wäre aber eine Aufgabe für sich), weshalb's spätestens Schröder (ich glaube sogar schon vorher einmal Corbit selbst, ich hab' die Urur- STS- Suite nicht mehr) auch umsortiert hat, wie gesagt, als single best move- Stellung müsste sie einfach beide Züge unter bm gelistet haben.
Und ja, so wie die Syntax bei dir ist, macht da das Shredder- GUI was falsch.
Wer oder was ist Zorrofish?
Parent - - By Frank Sanders Date 2024-03-18 12:17 Upvotes 1
Ein Python Script für Testsets, dass lc0 und Stockfisch gleichzeitig rechnen lässt, und am Ende versucht, falls die Züge unterschiedlich sind, den besseren herauszufinden.
Parent - By Peter Martan Date 2024-03-18 12:18 Edited 2024-03-18 12:21 Upvotes 1
Klingt interessant. Mein Lieblings- TripleBrain ist immer noch Aiquiri von Ferdinand Mosca, der das ja auch so ähnlich macht, halt leider nicht gleichzeitig, sondern nacheinander. Und für Suiten ist er leider (oder Gott sei Dank ) gar nicht verwendbar, weil er keinen go infinite- Befehl akzeptiert.
Parent - - By Frank Sanders Date 2024-03-18 12:22 Upvotes 1
Kann ich das wo herunterladen und testen, mit oder ohne Code?
Parent - - By Peter Martan Date 2024-03-18 12:25 Edited 2024-03-18 12:27 Upvotes 1
Ich nehme an, du meinst Aiquiri, aus diesem Posting:

https://talkchess.com/viewtopic.php?p=763449&sid=00894b929a65efccd46b0fb99726e8ca#p763449

, hab ich diesen Dowload- Link:

https://drive.google.com/file/d/1HHHBMJaPdlqeDBVyiNc2DVV63i3YSWIa/view?usp=sharing

, den ich, glaube ich, auch damals verwendet habe, scheint auch noch zu funktionieren.
Parent - By Frank Sanders Date 2024-03-18 12:51 Upvotes 1
Danke, hat funktioniert.
- By Peter Martan Date 2024-03-19 14:39 Edited 2024-03-19 14:54 Upvotes 2
Anknüpfend an hier

https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=169135#pid169135

aber ohne Einrückung des Postings, damit Formatierungen mit tt auch funktionieren, hätte ich jetzt hier mal benchmarks, um sie nicht noch einmal einzeln kopieren und einfügen zu müssen, nehme ich jetzt gleich den Text aus dem discord- Thread, in dem ich das auch gepostet habe:

https://discord.com/channels/425419482568196106/425419483016855563/1219634091058794516

GPU is Nvidia 3070ti, using Cuda- backend, CPU is Ryzen 5950x.
Hoping this one command worked correctly:

lc0 benchmark --threads=4
===========================
Total time (ms) : 343921
Nodes searched  : 3498403
Nodes/second    : 10172

for HT on and 4 CPU- threads, compared to default (2 threads), still HT on:

===========================
Total time (ms) : 341629
Nodes searched  : 3556882
Nodes/second    : 10412

So as for HT on 2 threads is slightly better than 4, now I have another one benchmark with HT off and again the default 2 threads:

===========================
Total time (ms) : 341721
Nodes searched  : 3560308
Nodes/second    : 10419

Has a small edge over 2 threads HT on.

Edit: the net was T3 2815M.

Und dann hätte ich hier ein paar runs mit den 256 Positionen von hier

https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=169029#pid169029

Die hab' ich hauptsächlich deshalb verwendet, weil sie jetzt wenigstens auch schon veröffentlicht sind in dieser Form, also nachvollziebar sind als Suite, darüberhinaus handelt sich wahrscheinlich ohnehin um die wahrscheinlich insgesamt in den verschiedensten Suiten am häufigsten verwendeten Stellungen und eine TC, die mit nicht mehr als 8 von 16x3.5GHz- Kernen zwischen SF und Lc0 auf der 3070ti vergleichbare Ergebnisse bei ca. 5" bringen. Die volle 16- Kern- bzw. 32- Threads- Leistung von SF hab' ich daher auch nicht mehr extra mitlaufen lassen.

    EPD  : erehtc.epd
    Time : ms
                                                Max   Total   Time   Hash         
    Engine           Score   Found  Pos   ELO  Score   Rate    ms     Mb  Cpu     
1  SF16.1HTon       14770    191   256  3424  19405  76.1%   5000   256    8
2  SF16.1HTon       14630    194   256  3393  19405  75.4%   5000   512   16
3  SF16.1HTOff      14590    192   256  3384  19405  75.2%   5000  1024    8
4  SF16.1HTon       14290    186   256  3312  19405  73.6%   5000   128    4
5  Lc0-2815MHT0ff   13930    181   256  3231  19405  71.8%   5000  1000    1
6  Lc0-2815MHTon    13885    181   256  3222  19405  71.6%   5000  1000    2
7  SF16.1HTOff      13735    180   256  3186  19405  70.8%   5000   256    4
8  Lc0-2815MHT0ff   13710    181   256  3181  19405  70.7%   5000  1000    2
9  SF16.1HTon       13580    175   256  3150  19405  70.0%   5000    64    2
10  SF16.1HTOff     13465    180   256  3123  19405  69.4%   5000   128    2
11  Lc0-2815MHTon   13335    175   256  3091  19405  68.7%   5000  1000    4
12  SF16.1HTOff     13075    171   256  3033  19405  67.4%   5000    64    1

                                    Created with MEA
                                          by
                                       Ferdinand
                                         Mosca


Um's auf den kürzesten Nenner zu bringen, wie auch schon bei früheren Versionen von SF ist es in diesem Test immer noch so, dass die doppelte Thread- Anzahl für HT on rel. zu HT off nur Unterschiede innerhalb der error bar ausmacht, und dass Lc0 mit diesem Netz (2815M, ich hab' absichtlich kein BT4 genommen, wegen der doch immer noch kurzen Hardware- TC) mit 2 Threads HT on gleich gute Performance hat wie mit 2 Threads HT off (gereiht wird's sogar höher, aber die 0.9% vom Maximalscore an Unterschied sind auch innerhalb der Irrtumswahrscheinlichkeit)  und dass 4 Threads HT on schlechter abschneiden als 2. Wäre da der Unterschied nicht auch so klein, könnte man noch bemerkenswert finden, dass Lc0 am besten mit 1 einzelnen Thread HT off abschneidet.

Edit: Was unter Hash in der Spalte bei Lc0 steht, ist der NN-cache.
- - By Peter Martan Date 2024-03-20 07:49 Edited 2024-03-20 07:54 Upvotes 1
Hier hab' ich jetzt noch einmal alle benchmarks zusammengesammelt, die ich mit den beiden Netzen T3 2815M und BT4 6077500 habe laufen lassen:

HT OFF

2815M

lc0 benchmark --threads=1
===========================
Total time (ms) : 340666
Nodes searched  : 3445091
Nodes/second    : 10113

2T default
===========================
Total time (ms) : 341721
Nodes searched  : 3560308
Nodes/second    : 10419

6077500

lc0 benchmark --threads=1
===========================
Total time (ms) : 341199
Nodes searched  : 1396681
Nodes/second    : 4093
 
 
2T default
===========================
Total time (ms) : 343939
Nodes searched  : 1409671
Nodes/second    : 4099


HT ON

2815M

lc0 benchmark --threads=1
===========================
Total time (ms) : 340656
Nodes searched  : 3431948
Nodes/second    : 10074

HT on default (2T):
===========================
Total time (ms) : 341629
Nodes searched  : 3556882
Nodes/second    : 10412

C:\eng\lc0-v0.30-dag-tt>lc0 benchmark --threads=4
===========================
Total time (ms) : 343921
Nodes searched  : 3498403
Nodes/second    : 10172

6077500:

Lc0 benchmark --threads=1
===========================
Total time (ms) : 341602
Nodes searched  : 1397391
Nodes/second    : 4091

default (2T)
===========================
Total time (ms) : 343926
Nodes searched  : 1404732
Nodes/second    : 4084

lc0 benchmark --threads=4
===========================
Total time (ms) : 348397
Nodes searched  : 1378686
Nodes/second    : 3957


Zusammenfassend kann man bestätigen, was borg auch schon auf discord dazu schrieb, zumindest für diese meine Hardware der 3070ti im Ryzen 5950 hilft schon der zweite Thread mit dem BT4- Netz weniger als mit dem T3, beim BT4 mit HT on hat sogar 1 Thread die Nase vorn vor den 2, HT on oder off macht nicht viel Unterschied (nicht einmal bei gleicher Thread- Zahl), 4 Threads HT on bremsen sowohl beim kleineren als auch beim größeren Netz.
Parent - - By Max Siegfried Date 2024-03-20 11:13
Das ist schließlich nichts Neues, sondern schon seit langem bekannt.
Natürlich ist es kaum jemanden aufgefallen, da der Geschwindigkeitszuwachs nicht annähernd so groß ist wie auf den Apple Geräten mit M Chip, denn während er dort gigantisch ist, ist er auf nicht Apple Geräte fast nicht vorhanden

PS. bevor sich in Zukunft jemand wundert, dass LC0 auf Apple Geräten auf einmal deutlich schneller ist bzw. um das 5-fache schneller ist:
Die Entwickler gehen schon seit der Einführung vom MacBook Pro M1 MAX davon aus, dass man die Geschwindigkeit um das 5-fache steigern könnte.
Nur hat da kaum jemand ein Apple Gerät mit M Chip, mehrere haben eines mit dem alten Intel Chip und da diese locker 10 Jahre halten bevor man ein neues Gerät braucht, kann das noch etwas dauern...
Up Topic Hauptforen / CSS-Forum / Shredders Triple Brain Effekt am Beispiel der neuen Top Chess Engines Testsuite
1 2 Previous Next  

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill