In AlphaZero vs Stockfish Match verwendete Hardware

22

Ich verstehe, dass AlphaZero eine andere Art von Hardware als normale Stockfish verwenden muss. Ich würde erwarten, dass die Hardware einen großen Einfluss auf die Motorstärke hat. Deshalb frage ich mich, ob es Versuche gegeben hat, beiden vergleichbare Hardware zur Verfügung zu stellen. Auch was würde "vergleichbar" hier bedeuten?

Insbesondere habe ich gelesen, dass sich die Leute beschweren über:

  • Stockfisch erhält nur 1 GB Cache und
  • das Zeitlimit von 1 min / Zug (Wie würde dieser Nachteil Stockfisch?)
user1583209
quelle
Offenbar Hash- Größe, kein Cache.
Federico Poloni
2
Ich empfehle dringend , dies in einem technischen Forum zu erfragen (wie der AI Stack Exchange , vielleicht mit dem Titel "Fairness of Evaluation in AlphaZero vs. Stockfish Matches"), da die Antworten hier nicht gut sind.
Veedrac

Antworten:

20

Deshalb frage ich mich, ob es Versuche gegeben hat, beiden vergleichbare Hardware zur Verfügung zu stellen.

Dies ist Google, über das Sie sprechen! Die Antwort lautet also offensichtlich "Nein".

Von der ursprünglichen Papierhardware, die für die Initialisierung und Schulung verwendet wurde -

Ausgehend von zufällig initialisierten Parametern wurden 700.000 Schritte (Mini-Batches der Größe 4.096) trainiert. Dabei wurden 5.000 TPUs der ersten Generation (15) zum Erzeugen von Selbstspiel-Spielen und 64 TPUs der zweiten Generation zum Trainieren der neuronalen Netze verwendet

und Hardware für die Spiele -

AlphaZero und das vorherige AlphaGo Zero verwendeten eine einzelne Maschine mit 4 TPUs. Stockfish und Elmo spielten mit 64 Threads und einer Hash-Größe von 1 GB auf höchstem Niveau.

AlphaZero verwendete daher spezielle Hardware, die von Google entwickelt wurde. Es wurden spezialisierte Tensor Processor Units (TPUs) anstelle der im Handel erhältlichen allgemeinen Central Processing Units (CPUs) verwendet.

So beschreibt Wikipedia die TPUs der zweiten Generation -

Das TPU der zweiten Generation wurde im Mai 2017 angekündigt. Google gab an, dass das TPU-Design der ersten Generation auf eine begrenzte Speicherbandbreite ausgelegt ist. Durch die Verwendung von 16 GB High Bandwidth Memory im Design der zweiten Generation wurde die Bandbreite auf 600 GB / s und die Leistung auf 45 TFLOPS erhöht. Die TPUs werden dann in 4-Chip-180-TFLOPS-Modulen angeordnet

Sie verwendeten 4 TPUs für die Spiele, also eine Rechenleistung von 180 TFLOPS. Hinweis TFLOPS = 1000 Milliarden Gleitkommaoperationen pro Sekunde.

Zum Vergleich: Intels jüngster leistungsstärkster Chip ist der Core i9 Extreme Edition-Prozessor, der mit 1 TFLOP einspielt. Ein Spitzenwert I7, den Sie in einem Spielautomaten finden würden, wären normalerweise etwa 100 GFLOPs (dh ein Zehntel eines TFLOP).

Ich denke, es ist fair zu sagen, dass AlphaZero einen 800-Pfund-Gorilla einer Hardware-Konfiguration im Vergleich zur Stockfishes-Maus verwendete.

Brian Towers
quelle
1
FLOPS steht für Gleitkommaoperationen pro Sekunde. Gleitkomma-Arithmetik wird in den Kernalgorithmen von Stockfish und AlphaZero wahrscheinlich überhaupt nicht verwendet. Die Anzahl der FLOPS ist also kein wirklich aussagekräftiges Maß für die Prozessorgeschwindigkeit, die für die Schachengine relevant ist.
René Pijl
9
Im Gegenteil, ich glaube, neuronale Netze verwenden Gleitkomma-Arithmetik ziemlich intensiv. (Aber natürlich macht Ihre Bemerkung Sinn und gilt für Stockfisch.)
Federico Poloni
3
Ein weitaus passenderer Vergleich wäre mit einer GPU; Der NVIDIA Tesla V100 kann bis zu 120 TFLOPS ausführen, gegenüber der Vorgängergeneration (P100), die nur etwa 20 TFLOPS ausgeführt hat.
Nick T
12

Ich denke, es ist am besten, wenn ich Ihren zweiten Punkt mit einem Beispielzug in Spiel 1 zwischen AlphaZero und Stockfish erläutere, der auch meine heutige Neugier befriedigt hat.

das Zeitlimit von 1 min / Zug (Wie würde dieser Nachteil Stockfisch?)

Die Leistung von Stockfish hängt sowohl vom Zeitlimit als auch von der Hardwarekonfiguration ab. Denken Sie also daran, dass Stockfish weniger Zeit (nicht unbedingt die Hälfte) benötigt, um die Lösung zu finden, als dies bei der ersten Konfiguration der Fall wäre.

In dem ersten Bericht, der auf Chess.com veröffentlicht wurde , behauptete jemand, Stockfish spiele nicht optimal, weil er mit demselben Stockfish auf seinem Computer nicht dieselben Ergebnisse reproduzieren könne. Er sagte, dass Stockfish auf der Position unten (Spiel 1 - Zug 11) Kg1-h1 gespielt hat (seinen König bewegt hat), was überhaupt keinen Sinn ergab. Auf der anderen Seite zeigte der Stockfisch auf seinem Computer eine sich entwickelnde Bewegung wie Be3 (bewege den dunklen Läufer). Schauen wir uns die Position an:

Spiel 1 im 11. Zug

Ja, es war ein passiver Zug und es scheint, dass Stockfish einen sich entwickelnden Zug gespielt haben sollte. Aber er hat sich geirrt. Warum? Weil er 15 Sekunden mit Stockfish gefahren ist und wenn er eine Stunde gefahren wäre, hätte er Kg1-h1 als den besten Zug in dieser Position bekommen. Stockfish ändert seine Entscheidung, wenn es alle möglichen Bewegungen ausführlicher analysiert. Folgendes habe ich ursprünglich in meiner Antwort gesagt :

Ich habe den letzten Stockfisch auf der Position ausgeführt (bei Zug 11):

  • Zuerst gibt es b4 als die optimale Bewegung, wenn der Motor ungefähr eine Minute lang läuft. Danach entscheidet es, dass Be3 besser ist.
  • Aber nach 5 Minuten auf meiner Hardware, die mit 1.400.000 Knoten / s läuft, entscheidet sie sich dafür, Kh1 als optimalen Schritt zu wählen.

  • In der Zeitung heißt es, dass Stockfisch 70.000.000 Positionen pro Sekunde berechnet und 1 Minute pro Zug ausgeführt wird, das ist ungefähr das 50-fache meiner Hardware, also lasse ich meine 50 Minuten laufen ... Kg1-h1 ist immer noch die Wahl für Stockfisch.

Zeitlimit ist der Schlüssel

In dem obigen Fall war es wahrscheinlich egal, ob Stockfish zweimal lief, da die Entscheidung dieselbe gewesen wäre, aber beim nächsten Schritt würde es definitiv :

Bildbeschreibung hier eingeben

In dieser Position zog Stockfish den Bauern auf die linke Seite ( a4-a5 ). Nehmen wir an, ich habe einen Computer, auf dem die Stockfish-Engine mit einer Geschwindigkeit von 1.400.000 Knoten pro Sekunde ausgeführt wird. Dies ist ungefähr 50-mal niedriger als die Geschwindigkeit des Stockfish im realen Spiel ( in der Zeitung werden 70.000 Kn / s angegeben). So kann ich das Spiel simulieren, wenn ich es bei jedem Zug 50 Minuten lang laufen lasse. Okay.

Ich habe die Stockfisch-Analyse auf der obigen Position durchgeführt und die folgenden Ergebnisse erhalten:

  • Stockfish schlug zunächst einige Züge vor, aber nach 6 Minuten auf meinem Computer (entspricht 7,2 Sekunden auf dem Stockfish im realen Spiel) zog es a4-a5 vor, genau wie das Spiel verlief .

Das ist gut, aber ich habe es 50 Minuten lang laufen lassen, um die Berechnungen des Stockfisches in dem Spiel zu erreichen, das 1 Minute lang erlaubt war:

Die traurige Wahrheit ist, dass ich glaube, dass Stockfish alle seine Spiele wegen des Zeitlimits verloren hat. Stockfisch wird im Laufe der Zeit eingehender gesucht und ausgewertet, und im Spiel durfte kein Eröffnungsbuch verwendet werden, wodurch viele Bewegungen in geringen Tiefen berücksichtigt werden. Beachten Sie, dass im aktuellen Spiel a4-a5 gespielt wurde, was zeigt, dass der Stockfisch im Spiel nicht mehr als 21,6 Sekunden unterwegs war (vorausgesetzt, er konnte 70 Millionen Positionen pro Sekunde auswerten). Andernfalls hätte es seine Entscheidung in diese drei anderen Züge im eigentlichen Spiel geändert. Der Grund dafür ist mir immer noch unklar, da mein Stockfish auch weniger Speicher verbraucht hat (ca. 130 MB RAM im Vergleich zu 1 GB im Originalpapier , vorausgesetzt, alles wird in Hash-Tabellen gespeichert ).


Fazit

Die Hardware, auf der Stockfish lief, war bestenfalls 18-mal schneller als meine (Update: auf einem einzigen Kern), basierend auf dem von mir analysierten Schritt. Ich bin mir nicht sicher, ob AlphaZero diese Hardware wirklich in 4 Stunden zum Trainieren seiner Netzwerke einsetzen kann. Ich kann nur davon ausgehen, dass sie für ein Spiel wie Schach zu niedrig ist. Außerdem hat AlphaZero diese Stunden damit verbracht, zu lernen, was auch das Bauen fester Öffnungen einschließt (und wie das Papier darauf hinweist, Vorlieben gegenüber bestimmten Öffnungen). Auf der anderen Seite war Stockfish bei Eröffnungen behindert, und es wurden nicht 60 Sekunden lang bei jeder Bewegung 70 Millionen Positionen pro Sekunde ausgewertet.

Abschließend sei angemerkt, dass alle meine Aussagen auf meinen Annahmen beruhten. Natürlich waren das Ergebnis von AlphaZero und die Spiele für mich super interessant. Ich hätte mir jedoch gerne ein Spiel angesehen, bei dem das Stockfischspiel genau so war, wie ich es auf meinem Computer erhalte. Das heißt, mehr Zeit und ein Eröffnungsbuch erlaubt. Es ist auch einfach, die Ergebnisse der Stockfish-Analyse bei jeder Bewegung abzurufen, und ich wünsche mir, dass sie veröffentlicht wird, um zu zeigen, wie gut sie funktioniert.

ReZzT
quelle
1
In Bezug auf das Zeitlimit zeigt Abbildung 2 in AlphaZero das Gegenteil: Stockfisch ist bei geringerem Budget besser, skaliert jedoch schlechter, wenn mehr Strom zur Verfügung steht. arxiv.org/pdf/1712.01815.pdf
old-ufo
1
@ old-ufo Danke für den Hinweis. Wie gesagt, die Leistung von Stockfish (und AlphaZero) ist sowohl von der Hardware als auch vom Zeitlimit abhängig. Wenn wir beispielsweise Stockfish mehr Hardware (und AlphaZero weniger) geben und diese Zahl neu generieren, kann die Linie so transformiert werden, dass sie immer über der AlphaZero-Linie bleibt. Ich denke, das ist ein guter Punkt, um die Hardware für beide Systeme zu vergleichen, und damit auch die Hauptfrage zu beantworten.
ReZzT
4

Einer der Originalautoren von Stockfish beantwortet die spezifischen Beschwerden, die Sie hier erwähnt haben:

In der Zwischenzeit erhielt Chess.com auch einen ausführlichen Kommentar von einem der ursprünglichen Stockfish-Autoren, Tord Romstad, den wir in vollem Umfang geben werden:

Die Spielergebnisse für sich genommen sind nicht besonders aussagekräftig, da die Zeitsteuerung und die Einstellungen der Stockfish-Parameter ziemlich seltsam sind: Die Spiele wurden zu einer festgelegten Zeit von 1 Minute pro Zug gespielt, was bedeutet, dass Stockfish keine Zeitmanagement-Heuristiken verwendet ( Es wurde viel Mühe darauf verwendet, Stockfish zu veranlassen, kritische Punkte im Spiel zu identifizieren und zu entscheiden, wann zusätzliche Zeit für einen Zug aufgewendet werden soll. Zu einer festgelegten Zeit pro Zug leidet die Stärke erheblich. Die verwendete Version von Stockfish ist ein Jahr alt, spielte mit weit mehr Suchthreads als jemals zuvor und hatte viel zu kleine Hashtabellen für die Anzahl der Threads. Ich glaube, der Prozentsatz an Unentschieden wäre in einem Spiel mit normaleren Bedingungen viel höher gewesen.

Auf der anderen Seite besteht kein Zweifel, dass AlphaZero besser hätte gespielt werden können, wenn mehr Arbeit in das Projekt gesteckt worden wäre (obwohl die im Artikel erwähnten "4 Stunden Lernen" unter Berücksichtigung der massiven verwendeten Hardwareressourcen sehr irreführend sind während dieser 4 Stunden). Auf jeden Fall ist Stockfish vs AlphaZero ein Vergleich von Äpfeln mit Orang-Utans. Eines ist ein herkömmliches Schachprogramm, das auf normalen Computern ausgeführt wird, das andere verwendet grundlegend andere Techniken und wird auf kundenspezifisch entwickelter Hardware ausgeführt, die nicht käuflich zu erwerben ist (und sonst aus dem Budget gewöhnlicher Benutzer herauskommt).

Aus einer anderen Perspektive ist der Winkel zwischen Äpfeln und Orang-Utans das Aufregendste: Wir haben jetzt zwei extrem unterschiedliche (sowohl auf der Hardware- als auch auf der Softwareseite) von Menschen geschaffene Einheiten, die beide übermenschliche Schachspielfähigkeiten aufweisen. Das ist viel interessanter als ein weiteres Schachprogramm, das das Gleiche tut wie bestehende Schachprogramme, nur ein bisschen besser. Darüber hinaus eröffnet die Anpassungsfähigkeit des AlphaZero-Ansatzes an neue Domänen aufregende Möglichkeiten für die Zukunft.

Für Schachspieler, die Computer-Schachprogramme als Werkzeug verwenden, ist es unwahrscheinlich, dass dieser Durchbruch zumindest kurzfristig große Auswirkungen hat, da es an geeigneter Hardware zu erschwinglichen Preisen mangelt.

Für Schachprogrammierer - und für Programmierer in vielen anderen interessanten Bereichen - ist das Aufkommen von Techniken des maschinellen Lernens, die massive Hardwareressourcen erfordern, um effektiv zu sein, ein wenig entmutigend. In ein paar Jahren ist es durchaus möglich, dass ein AlphaZero-ähnliches Schachprogramm auf normalen Computern ausgeführt werden kann, aber die Hardware-Ressourcen, die für die Erstellung erforderlich sind , werden das Budget von Hobbyisten oder mittelständischen Unternehmen immer noch sprengen . Es ist möglich, dass ein Open-Source-Projekt mit einem großen, verteilten Netzwerk von Computern, die von Freiwilligen betrieben werden, funktioniert, aber die Tage von Hunderten einzigartiger Schachengines mit jeweils eigenen Macken und Persönlichkeiten werden vorbei sein.

Quelle: https://www.chess.com/news/view/alphazero-reactions-from-top-gms-stockfish-author

Xonatron
quelle
2

Das Ausführen auf vergleichbarer Hardware wäre erforderlich, wenn Googles Endziel darin bestand, eine überlegene Schachengine zu entwickeln, aber in dieser Übung ging es nicht wirklich um Schach. Schach ist nur ein praktischer Weg, um die Fähigkeit der KI zu demonstrieren, komplizierte Aufgaben von Grund auf zu lernen. Wenn es mit einer vage vernünftigen Konfiguration von Stockfish gut funktioniert, ist das Kontrollkästchen aktiviert.

Ich gehe davon aus, dass sich das Google-Team nicht mehr mit Schach befassen wird. Stattdessen werden sie sich anderen Problemen zuwenden, die die KI nie bewältigen konnte.

T Scherer
quelle
Ich habe +1 gegeben, weil ich das gleiche Gefühl habe.
SmallChess
Hört sich wahrscheinlich an, obwohl ich bezweifle, dass sie es veröffentlicht hätten, wenn Alphazero nur geringfügig verloren hätte (was bedeutet, dass es immer noch von vergleichbarer Stärke wie Stockfisch wäre).
user1583209
@ user1583209 Sie haben es wahrscheinlich viele Male ausgeführt, um die minimale Lernzeit herauszufinden, die zum Zerkleinern von Stockfisch erforderlich ist. Dann machten sie einen letzten Lauf und veröffentlichten diese Ergebnisse.
T Scherer
1

Besuchen Sie das Talkchess Forum, um mehr zu erfahren. Dort finden Sie etwa 3000 Programmierer. Das war alles ein Betrug. Alpha spielte auf 30 mal größerer Hardware als SF, 4TPUs gegen 64 Kerne. 4TPUs sind ungefähr 1000 Kerne oder sogar mehr. Alpha hatte das Eröffnungsbuch simuliert und in unzähligen Top-GM-Gewinnspielen trainiert. SF hatte sehr wenig Hash. TC wurde auf 1 Minute pro Zug festgelegt, was wiederum für SF nachteilig ist, das ein erweitertes Zeitmanagement hat. Bei TPUs fehlen die SMP-Ineffizienzen mit mehr Kernen, sodass der Hardwarevorteil noch größer war. Usw. Im Grunde war dies nur ein riesiger Werbegag von Google. Derzeit liegt Alpha mit Single Core bei 2800, also 400 Elos unter SF, und wird in Zukunft nicht viel weiterentwickelt, da es von nun an eine erweiterte Evaluierung benötigt, die es nicht mehr entdecken kann. In Bezug auf die 4-Stunden-Ausgabe, na ja, LOL, Das war vor 48 Stunden, also ist Alpha jetzt bei 5000 elo? Komm schon.

Lyudmil Tsvetkov
quelle
5
Sie scheinen zu glauben, dass AlphaZero dasselbe macht wie Stockfish, nur 1000-mal schneller, weil es 1000-mal stärkere Hardware verwendet. Das stimmt überhaupt nicht. Es wird ein ganz anderer Ansatz verwendet, und dieser Ansatz ist sehr ressourcenintensiv. Tatsächlich wertete AlphaZero während des Spiels 80.000 Positionen pro Sekunde aus, während Stockfish 70 Millionen Positionen pro Sekunde erreichte. Jetzt sag mir, dass AlphaZero wegen einer stärkeren Hardware gewonnen hat. Natürlich wäre es auf 64-CPU langsamer und wer weiß, wie es spielen würde, aber der Punkt ist, dass AlphaZero es besser macht, wenn auch zu höheren Kosten.
IA Petr Harasimovic
3
SF-Hardware kostet weniger als 10.000 US-Dollar, Alpha One mehr als 250.000 US-Dollar. Ziehen Sie die Schlussfolgerungen selbst. Nps sind bedeutungslos und jeder Schachprogrammierer weiß das. Sie können alle Arten von Tricks ausführen, damit die NPS niedriger werden, aber das bedeutet nicht, dass Sie stärker spielen werden. Ich würde gerne sehen, dass es diesen Ansatz auf SF-Hardware und SF auf Alpha-Hardware implementiert. Erraten Sie das Ergebnis? +85 -0 = 15 für SF. Wenn sie so großartig sind, lassen Sie sie ihren Code veröffentlichen.
Lyudmil Tsvetkov
3
"Alpha hatte das Eröffnungsbuch simuliert und in unzähligen Top-GM-Gewinnspielen trainiert." Simuliertes Eröffnungsbuch, ja, aber es wurde auf GM-Spiele trainiert? Haben Sie eine Quelle dafür? Mein Verständnis war, dass Alpha vollständig gebootet war.
Akavall
0

Stockfish ist auf CPUs beschränkt, sodass es niemals auf das Niveau skaliert werden kann, das GPUs können.

Gor-Matrix-Berechnungen GPUs skalieren mit n, während CPUs mit n 3 skalieren . Diese Tensorkerne werden weiter optimiert, sodass die Leistung beim Skalieren wahrscheinlich noch besser ist.

Berühmte Jameis
quelle
-2

Erster Absatz ausführlicher, zweiter kurzer und einfacher Antwort auf den dritten Absatz meiner Meinung zur Situation

Mit AlphaZero hat die Hardware einen 0-Effekt auf die Stärke ihres Spiels. Es kann länger dauern, aber nicht, weil es denkt. Es ist ein neuronales Netzwerk, das heißt, Sie geben die Informationen in einem Vektor ein (eine einspaltige Tabelle). Es führt einfache Berechnungen durch einen riesigen Tensor (eine dreidimensionale Tabelle oder mehr) und gibt dann die Antwort aus. Stockfisch braucht Zeit, um gut zu sein, da er mögliche Positionen überprüft, um festzustellen, ob ein Zug von Vorteil ist. Je länger er sich mit dem Problem befasst, desto mehr Positionen / Züge können überprüft werden.

Es gibt kein vergleichbares Hardware-Setup. Weil sie unterschiedliche Bedürfnisse haben, muss Stockfish mehr Positionen analysieren, während AlphaZero nur einen Schritt machen muss. Und die Leute sind verärgert, weil AlphaZeros Computer technisch viel leistungsfähiger ist und sie denken, dass sie in dieser Hinsicht gleich sein sollten. AlphaZero benötigt diesen Supercomputer nach dem Training jedoch nicht.

Meiner Meinung nach spielt es keine Rolle, was sie beiden Seiten geben, es sei denn, Stockfish hat eine unangemessene Zeit, die wahrscheinlich ein paar Spiele mehr bindet, aber im Allgemeinen wird ein ähnlicher Effekt eintreten. Aus diesem Grund denke ich, bewertet Stockfish zunächst mit Stücken und ihren Werten, während Alpha (wahrscheinlich) Millionen von Spielen spielte, um zu erkennen, was strategisch wichtig ist. Aus diesem Grund sackt Alpha viel mehr als Stockfish jemals, gewinnt aber enorme Positionsvorteile.

Ezecal
quelle
Das ist einfach falsch. AlphaZero führt eine Baumsuche durch. Mehr Hardware macht es stärker. Und es braucht eine Menge Hardware, um besser zu spielen als Stockfisch.
BlindKungFuMaster
Nichts in diesem Beitrag ist korrekt ...
SmallChess
Dieses System basiert auf 3 Neuronalen Netzen und einer partiellen Monroe-Carlo-Baumsuche, sodass Sie mit der Baumsuche richtig liegen. Während des Spiels werden 2 Prinzipien des neuronalen Netzwerks verwendet, die in alphago von Wert und Politik entwickelt wurden. Go ist ein Spiel, das mit Rechenleistung nicht möglich ist, da es astronomisch komplexer ist als Schach. Also, wenn ich glaube, dass es mehr Rechenleistung als ein Brute-Force-Algorithmus benötigt, dann sind Sie wahnhaft. Oder fräulein informiert. Das dritte neuronale Netz wird verwendet, um zu versuchen, den Lernprozess zu beschleunigen, indem die Änderungen der Rückwärtsausbreitung geschätzt werden. Alphazeros Macht ist in den Netzen nicht mcts.
Ezecal