Nachdem wir im letzten Monat bereits Stockfish NNUE unter die Lupe genommen haben, wurde die dort neu angewandte Suchtechnik erfolgreich in Stockfish 12 übernommen.
Stockfish NNUE warf zunächst viele Fragezeichen auf. Allgemein wurde angenommen, dass es eine Mischung aus Leela Zero-Bewertungstechnik und der in Stockfish angewandten Alpha-Beta-Suche (PVS) sei. Oberflächlich betrachtet, kann man dieser Aussage zustimmen, aber es erklärt nicht, wie genau Stockfish 12 seine Varianten berechnet und warum Stockfish 12 so viel stärker spielt, als Stockfish 11.
Ich möchte kurz auf die Funktionsweise eingehen. Genauso wie Leela Zero, verwendet Stockfish 12 sogenannte Bewertungstabellen, in welchen Stellungsmuster gespeichert sind mit entsprechender Bewertung. Bei dieser Bewertung handelt es sich um eine statistische Angabe, ob ein Stellungsmuster tendenziell für eine Seite gewonnen oder Remis ist. Lassen wir Stockfish 12 eine Stellung analysieren, greift die Engine zunächst auf diese Bewertungstabellen zu und gleicht die zu analysierende Stellung mit Stellungsmustern der Tabelle ab. Bei diesem Abgleich prüft Stockfish 12 zudem auch, welche Stellungsmuster aus der Ist-Stellung entstehen können.
Dieser Vorgang ebnet den Weg, welchen Stockfish 12 einschlagen wird und erst wenn dieser Prozess durchgelaufen ist, greift Stockfish 12 mit den zuvor gesammelten Bewertungen auf seine bekannte Alpha-Beta-Suche (PVS) zu. Ein Vorteil ist hierbei, dass schlechte Varianten bereits vorher abgeschnitten werden und sich die Alpha-Beta-Suche (PVS) mit aller Kraft auf die erfolgsversprechenden Varianten konzentrieren kann.
Dieser Prozess findet in Millisekunden statt und wiederholt sich während der Analyse ständig.
Das Beste aus Leela Zero gepaart mit der Rechenpower von Stockfish
Der Otto-Normalschachspieler fragt sich nun, warum bei Leela Zero für die Bewertung von Stellungen GPUs eingesetzt werden müssen, während bei Stockfish 12 CPUs reichen. Bei Leela Zero ist der Aufbau des Bewertungs-Algorithmus auf die einfachen und gegenüber CPUs schnelleren Rechenprozesse von GPUs optimiert. Die Bewertungsprozesse von Stockfish 12 (vor der Alpha-Beta-Suche) sind anders aufgebaut und die Menge der abzuarbeitenden Daten ist geringer, weshalb für eine schnelle Abarbeitung der Daten keine GPUs notwendig sind.
Jetzt stellt sich natürlich noch die Frage, wie diese Bewertungstabellen von Stockfish 12 entstehen. Hier hat das Stockfish-Team keine Mühen gescheut und durch Schach-Experten verschiedene Konzepte (menschliche Bewertung von Stellungen) in diese Bewertungstabellen per Hand eingepflegt. Dieses „Wissen“ ist die Basis für den den sog. FishTest-Algorithmus, um Bewertungstabellen zu generieren.
Das Generieren von Bewertungstabellen benötigt Unmengen an Rechenpower, aber davon bekommt der Anwender nichts mit. Wenn wir Stockfish 12 herunterladen und installieren, ist diese Bewertungstabelle bereits enthalten. Will man mit Stockfish 12 immer up to date sein, reicht es vollkommen aus, die jeweils aktuelle Bewertungstabelle (Datei) herunterzuladen und in Stockfish 12 einzubinden.
Jeder kann Stockfish stärker machen!
Stockfish ist ein Open Source Projekt, bei welchem eine Vielzahl von Spitzenprogrammierern in der Freizeit ihr Fachwissen in den Programmcode einbringen. Ab sofort können nun auch Nicht-Programmierer zum Erfolg von Stockfish beitragen, indem sie die Rechenkraft ihres heimischen PCs zur Verfügung stellen. Unter folgendem Link kann man sich das Fishtest-Worker Programm herunterladen, welches mit der Basis der Bewertungs-Algorithmen Partien spielt aus deren Ergebnisse/Bewertungen zukünftige Bewertungstabellen entstehen:
https://stockfishchess.org/get-involved/
Stockfish 12 in der Analyse
In meinen Tests konnte der neue Stockfish auf ganzer Linie überzeugen. Ich habe hierzu einige meiner vor gut 10 Jahren gespielten Partien analysiert, welche ich bereits mit den damals gängigen Engines unter die Lupe genommen habe. Ich war überrascht, welche positionellen Resourcen Stockfish 12 in diesen Partien fand, die mir bis heute nicht bekannt waren. Gerade zu Analysieren ist Stockfish 12 ein echter Schatz!
In einigen veröffentlichten Statements zu Stockfish 12 wird darauf hingewiesen, dass sich die Anzahl der berechneten Stellungen pro Sekunde nahezu halbiert haben. Ich möchte diese Aussage etwas relativieren. Anders als in vorherigen Stockfish-Versionen, werden bei Stockfish 12 schon vor der Alpha-Beta-Suche schlechte Fortsetzungen abgeschnitten. Dies bedeutet, dass viel Rechenzeit eingespart wird. Dieser Selektierungsprozess benötigt natürlich auch Rechenkraft, welche der Alpha-Beta-Suche abgezwackt wird. Das Stockfish-Team hat hier meiner Meinung nach die richtige Mischung gefunden. Was nützen einem 8 Millionen Stellungsberechnungen pro Sekunde, wenn davon 6 Millionen auf den Holzpfad führen? Wenn es bei Stockfish 12 nun 4 Millionen Berechnungen pro Sekunde sind, aber dafür ausschließlich sinnvolle Fortsetzungen, dann ist die Effizienz dieser neuen Technik augenscheinlich.
Mein Fazit:
Stockfish 12 hat gegenüber den Vorversionen einen riesen Spielstärke-Sprung gemacht. Die eingesetzte Mischung aus Bewertungstabelle und Alpha-Beta-Suche befindet sich erst am Anfang und bietet einen Blumenstrauß an Möglichkeiten zur weiteren Optimierung. Für mich ist diese Engine wieder die Nummer 1 zum Analysieren.
Stockfish 12 kann unter folgendem Link heruntergeladen werden:
https://stockfishchess.org/download/
Bis bald
Euer Benny