Nach meinem Verständnis des sogenannten Fischtests schreiben die Leute Patches und probieren die Patches dann gegen die aktuelle Version von Stockfish aus. Wenn die neue Version eine bessere Leistung erbringt, wird sie zur Hauptversion befördert. sonst wird es abgelehnt.
Frage: Warum gegen die aktuelle Version von Stockfish testen? Es hat in der Vergangenheit funktioniert und der aktuelle Stockfisch ist viel stärker als der zweijährige Stockfisch. Wir können jedoch auch Einschränkungen für diesen Ansatz erkennen. Obwohl Stockfish jetzt in der Lage ist, andere traditionelle Motoren vollständig zu zerstören, hat es kürzlich auch das TCEC S15-Superfinale gegen Leela verloren. Warum also nicht jede neue Version gegen Leela testen?
Die offensichtliche Antwort ist, dass die Ressourcen von Fishtesting von CPUs stammen und Leela die CPU schrecklich belastet. Das sollte jedoch nicht tödlich sein: Man könnte Leela einfach mehr Zeit geben, z. B. wenn Stockfish mit 10 Sekunden pro Spiel läuft, Leela 100 Sekunden pro Spiel geben oder welche Zeitchancen auch immer notwendig sind, um das Leela-Verhältnis zum Verhältnis im Superfinale zu erhalten. Dies wird sicherlich das Testen von Fischen verlangsamen, aber wenn es zu einem Motor führt, der Leela in einem Match schlagen kann, könnte sich das dennoch lohnen.
Der Zweck des Fischtests besteht darin, zu testen, ob eine neuere Version von Stockfish stärker geworden ist . Die Definition von stärker ist, dass es seine vorherige Version übertrifft.
Ich bin mir nicht sicher, wie das Testen jeder neuen Version gegen einen Motor wie Leela helfen würde. Ihre Idee könnte darin bestehen, eine neue Version von Stockfish nur zu akzeptieren, wenn sie gegen Leela besser abschneidet als die vorherige Version von Stockfish. Jetzt ist garantiert, dass jede Version von Stockfish besser gegen Leela spielt, aber nicht garantiert, dass sie insgesamt ein besserer Schachspieler ist. Der Grund ist, dass Stockfish sich auf bestimmte Eigenschaften in Leelas Spiel verlassen könnte, um mehr Spiele zu gewinnen.
BEARBEITEN - Ich dachte an ein Beispiel, das hier helfen könnte. Angenommen, Sie wurden vor einigen Jahren mit 1500 bewertet, und jetzt sind Sie 1800. Wenn Sie in einem Match gegen sich selbst gespielt haben, ist klar, dass Sie gewinnen würden. Aber aus Gründen der Argumentation ist es möglich, dass Ihr 1500-Selbst gegen Kasparov besser abschneidet als Ihr aktuelles 1800-Selbst. Vielleicht war das 1500-Selbst weniger konservativ und ging viel mehr Risiken ein. Dies schafft es, Kasparov in einem seltenen Spiel zu schlagen, während Ihr aktuelles 1800-Selbst jedes Mal verlieren würde (die Spiele wären jedoch im Durchschnitt etwas näher).
quelle
Ich werde im Wesentlichen @inertialignorance zustimmen, aber ich möchte die Position ein wenig klären.
Wenn der Mensch Mensch spielt, ist das Ergebnis eines Spiels angesichts der extremen Variabilität des menschlichen Spiels relativ bedeutungslos. (Ich werde Kasparov v Deep Blue als Beispiel für diese Variabilität nutzen - an einem guten Tag ich wahrscheinlich Kasparov im Spiel geschlagen hätte er gepfuscht auswärts gegen DB) . Also lasst uns einfach die Menschheit in diesem und konzentrieren sich auf die Maschine ignorieren.
Maschinen spielen auf einem weitaus gleichmäßigeren Niveau als Menschen. Daher bedeutet ein einzelnes Spiel mehr und eine Reihe von Spielen viel. Daher ist es sinnvoll, die vorgeschlagene Stockfish-Verbesserung an einer Maschine zu testen. Aber warum Stockfisch?
Einfach, weil es keine Möglichkeit gibt, "macht besser gegen Leela" auf sinnvolle Weise zu quantifizieren. Es könnte besser laufen und trotzdem verlieren. Aber was ist in diesem Fall der Standard zum Besseren? Wie beweisen Sie, dass es besser gespielt hat? Ich kann keinen tragfähigen Standard sehen.
Es ist viel einfacher zu beweisen, dass Stockfish Prime eine Verbesserung gegenüber Stockfish Original darstellt, indem Sie einfach eine Reihe von Spielen spielen und die Ergebnisse zählen.
Edward Deming behauptete, es sei von größter Bedeutung, die richtige Metrik zu wählen, da Sie nur wissen, dass Sie sich aufgrund Ihrer Messung verbessern. Stellen Sie also die Frage: Was ist der Zweck des Prozesses? Warum schlagen Sie einen Patch für Stockfish vor?
Ist es wirklich das ultimative Ziel des Patches, Leela zu schlagen? Oder ist es eher so, dass Stockfish besseres Schach spielt? Ich würde sagen, es ist das letztere. Leela zu schlagen wird von alleine kommen, wenn sich nur Stockfish weiter genug verbessert.
Ja, ein schrittweiser Verbesserungspfad für Stockfish könnte zu einem Plateau führen. Trotzdem wird der einzige überprüfbare Weg von diesem Plateau darin bestehen, Änderungen daran vorzunehmen, die es besser machen. Wenn ein Ansatz "gegen eine Wand stößt", bestimmt eine kontinuierliche Suche nach Verbesserungen einen anderen Weg. Wenn ein vorgeschlagener alternativer Pfad den aktuellen Pfad nicht übertreffen kann, warum sollten Sie ihn wählen?
quelle
Es scheint einen Hardware-Grund dafür zu geben, diese Änderung nicht vorzunehmen.
Das Hauptproblem bei der Verwendung von Leela als Sparringsgegner ist, dass Leela auf der GPU am besten läuft. Es ist möglich, Leela auf der CPU auszuführen, aber die Leistung von Leela leidet sehr. Das OP schlägt vor, Leela Zeitchancen zum Ausgleich zu geben, aber die Zeitchancen funktionieren nicht sehr gut: Leelas Leistung schwächt sich so stark ab, dass die erforderlichen Zeitquoten bedrückend lang sind.
Um eine Vorstellung davon zu bekommen, wie viel schwächer Leela auf der CPU ist, können wir uns Leela in Staffel 12 von TCEC ansehen, als es keine GPU-Unterstützung hatte und auf der CPU lief. Hier ist ein Beispielspiel, das Leela damals gespielt hat . Wenn man sich die erreichten Geschwindigkeiten ansieht, sind es ungefähr 1-3 kn / s oder 1000-3000 Positionen pro Sekunde. In der letzten Staffel 15, als Leela auf leistungsstarken GPUs lief, wurden vergleichsweise etwa 50 kn / s erreicht ( Beispielspiel ). Um Stockfish gegen Leela zu gleichen Bedingungen testen zu können, muss man Leela ungefähr 25x Zeitchancen geben. Wenn Stockfish eine Minute hat, braucht Leela 25 Minuten.
Zum Zeitpunkt des Schreibens werden Fishtesting-Tests zu zwei Zeitpunkten durchgeführt: 10s + 0,1s / Zug und 60s + 0,6s / Zug (Patches, die den ersten Kurzzeit-Kontrolltest bestehen, werden zum längeren befördert und erneut getestet. Patches, die Übergeben Sie die zweite und werden Sie dann zur "neuen" Version. Bei einer 25-fachen Zeitchance benötigt Leela 250s + 2,5s / Zug in der ersten Zeitkontrolle und 1500s + 15s / Zug in der zweiten Zeitkontrolle. Die Verlangsamung ist enorm; Wir würden Leela effektiv mit schnellen Zeitkontrollen spielen lassen und nicht mit Kugeln. Die Anzahl der Spiele, die in Zeiteinheiten abgeschlossen werden können, würde ebenfalls um das 25-fache sinken. Für das Testen von Fischen sind regelmäßig Zehntausende von Spielen erforderlich, um jeden Patch zu testen. 25x so lange zu brauchen, um jeden Test zu beenden, klingt unannehmbar langsam.
Soweit ich weiß, hatte Leela in Staffel 12 ein kleineres Netzwerk, um dem Feuer Treibstoff hinzuzufügen - die Leistung der neuesten Netze könnte jetzt auf der CPU sogar noch langsamer sein.
Es ist möglich, dass Fishtesting eines Tages, wenn es die GPU-Ressourcen zum Testen mit Leela erhält, umschaltet. Wir sind jedoch noch nicht an diesem Punkt.
Bearbeiten : Lc0-CPU spielt derzeit bei TCEC. Es werden ungefähr 5 knps. Laut einigen Leuten im Chat ist die Lc0-CPU so modifiziert, dass sie auf der CPU spielt. Unverändert ist es etwa 80x langsamer als auf der GPU. Daher ist die Verwendung von Lc0-CPU als Testgegner mit echten Hardwarekosten verbunden.
quelle
Trägheit ist korrekt. Ich sollte auch hinzufügen, dass es vor LC0 keine starke Open-Source-Engine gab. Sowohl Komodo als auch Houdini hatten Lizenzbeschränkungen.
quelle