Dr. Erhard Henkes - 31.05.2019

Leela Chess Zero - Schach Reloaded


Schach, das königliche Spiel, das auf 8 * 8 = 64 Feldern gespielt wird, hat sich geändert. Es begann 1996 mit der berühmten Partie IBM Deep Blue gegen Garri Kasparow. Die Maschine besiegte den amtierenden Schachweltmeister. Kasparow konnte zwar das Turnier für sich entscheiden, ein Jahr später verlor er aber gegen den Supercomputer Deep Blue.

Die Software war in C geschrieben und berechnete mit Hilfe der gigantischen Hardware ca. 126 Millionen Positionen pro Sekunde.
Das ist der klassische brute force Ansatz, den auch heute noch viele Systeme nutzen. Der Vorteil ist, dass keine Matt- oder Gewinnabfolge in der Betrachtungstiefe übersehen wird. Heutige Software wie Stockfish 10 schafft blitzschnell eine Tiefe von 25 bis 30 Halbzügen. Das Problem besteht darin, dass aber mit jedem Halbzug etwa ein Faktor 20 hinzu kommt. Es ist also ein Kampf der Hard- und Software gegen die Unendlichkeit.

Mit tiefen neuronalen Netzwerken geht das Ganze anders. Hier lernt die "Software" (sprich das Netz) durch vertieftes Lernen. Alpha Zero ist in den letzten Jahren bekannt geworden, weil zunächst alle menschlichen Spieler und dann die brute force Software besiegt wurde. Letztendlich kann diese neue Art von Software nur noch im Spiel gegen sich selbst dazu lernen, und das beherrscht sie in Windeseile. Erkenntnisse, für die Menschen Jahre brauchen, werden hier in wenigen Stunden gewonnen und dauerhaft im "Netzwerk" gespeichert, und das ist der Beginn dieser interessanten Entwicklung, die nun unumkehrbar abläuft sowohl zum Nutzen als auch zum Schaden der Menschheit, wie immer wenn neue technische Systeme sich ihren Weg bahnen. 

Bisher konnte man als Schachspieler diese Entwicklung nur aus der Ferne verfolgen. Seit dem Auftauchen von Leela Chess Zero als Übertragung auf gewöhnliche Betriebssysteme ist nun eine Schach-Engine mit am Start, die mit dieser (schwachen) künstlichen Intelligenz arbeitet. Das Beste daran ist, dass man die Spielweise dieses neuen Schachmonsters auf dem heimischen Rechner beobachten kann, und genau dies machen wir jetzt sofort!

Ich zeige an einem konkreten Beispiel zunächst die Zutaten für ein Match Leela Chess Zero v0.21.2 vs. Stockfish 10:

Mein Test-Computer:
CPU: Intel Core i7 3930K ("Sandy Bridge-E")
Grafikkarte: NVIDIA GeForce GTX 1080
RAM: 32 GB
Die NVIDIA Grafikkarte ist für einen raschen Ablauf wichtig, da sie schnelles paralleles Rechnen mit optimaler Grafikkarten-Hardware erlaubt. Die von NVIDIA entwickelte Architektur CUDA ist hier das Zauberwort. Die GPU wird hier neben der CPU eingebunden. Man hört es am rauschenden
Grafikkarten-Lüfter.

Deep Fritz 14:
Diese Schachsoftware verwende ich als GUI zur Durchführung des Engine-Matches. Prinzipiell gibt es eine ganze Reihe alternativer freier GUI-Systeme, wie z.B. Arena. Da ich den Deep Fritz 14 aber seit einigen Jahren auf meinem PC habe, werde ich diesen natürlich nutzen, da man damit halbwegs komfortabel arbeiten kann.

Leila Chess Zero:
Hier findet man die freien Releases. Ich verwende hier v0.21.2-rc2 und zwar die Version mit CUDA für die NVIDIA Grafikkarte.
Diese Software und die entsprechenen neuronalen Netze werden ständig weiterentwickelt. Die Tester kommen da gar nicht mehr hinterher.

Stockfish 10:
Hier findet man den Download der freien Schachengine, die sich mit der Zeit an die Weltspitze gearbeitet hat. Ich verwende für den aktuellen Test Stockfish 10 for Windows.
 
Nach Downloads und Entpacken der komprimierten Zip-Files findet sich eine Datei namens "lc0.exe" auf dem Rechner, ebenso die entsprechende "stockfish_10_x64.exe". Dies sind die Engines (bei Arena auch Motoren genannt). Bei Leela Chess Zero (lc0) sollte man noch folgende Punkte vorbereiten:
1) Möglichst NVIDIA Grafikkarte wegen CUDA
2) Aktuellen NVIDIA-Grafikkartentreiber installieren, damit CUDA gut läuft
3) client.exe oder LCZero_client.exe zumindest einmal ausführen, damit das passende neuronale Netzwerk (weights file) geholt wird. Sobald Spiele gegen sich selbst erzeugt und hochgeladen werden (Futter für das Training der neuronalen Netzwerke), ist alles richtig vorbereitet.

In Deep Fritz 14 wählt man den Menüpunkt "Engine".

Dort findet man "UCI Engine erstellen". Man wählt die Datei ...\lc0.exe aus und stellt bei den Parametern den Parameter "Backend" auf "cudnn-fp16".

Wir binden auch Stockfish durch Anwahl der
stockfish_10_x64.exe als Engine ein.

Unter "Engines verwalten" sieht man alle aktiven UCI-Engines.

Nun zum Match, das in Deep Fritz 14 leicht zu starten ist:

Wir wählen "Enginematch" und legen folgendes File neu an: lc0_vs_stockfish10.cbmatch (Name beliebig einzugeben)
Mit Neu/Öffnen bestätigen! Die Partienanzahl legen wir auf eine gwünschte Anzahl, z.B. sechs, fest. Wir lassen beide auf Gegnerzeit (oder auch nicht) rechnen.
Bei "Weiß" definieren wir Lc0 und bei "Schwarz" Stockfish 10 64.
Die Zeit legen wir z.B. auf Blitz 4m+2s fest.

Sobald wir OK drücken geht es sofort los! Die beiden Schach-Monster mit ihren völlig verschiedenen Strategien bekämpfen sich sofort in atemberaubenden Tempo. Da kommt kein live-Kommentator hinterher. Zum Glück zeichnet Deep Fritz 14 die Partien für uns in der angegeben Datenbank auf.

Persönlich bin ich ein Fan der Spielweise von Leela Chess Zero. Sie wirkt "menschlicher" als die Zugfolgen der brute force Maschinen. Man darf nicht vergessen, dass wir es hier mit Software zu tun haben, die zurzeit(!) ca. 700 ELO-Punkte über dem amtierenden Weltmeister liegt. Das ist also nicht einfach ein Ersatz der Spitzenspieler, sondern eine ganz neue Klasse des Schachspiels.

Kombiniert man geistig beide Arten von Software, so hat man ein echtes "Schach-Monster" auf dem virtuellen Brett.

Nun zum Match zweier Engines, das Sie hoffentlich auch selbst zum Laufen bekommen:

Match Lc0 vs Stockfish 10 64

Viel Spaß dabei!

Es geht sogar noch mehr in Deep Fritz 14, nämlich ein Engine-Turnier, bei dem man sogar Menschen einladen kann. Bedingungen, Bücher und Zeiten kann man als "Turnierleiter" festlegen.

Ich habe Deep Fritz 14, Leela Chess Zero und Stockfish 10 (alle 64 bit Engines) zum Rundenturnier mit 40 Zügen in 10 Minuten "eingeladen", und schon geht es los.

Mich beeindruckt die Tiefe, bis zu der Stockfish 10 rechnet, nämlich im Bereich von 25 bis 30 Halbzügen. Fritz 14 kommt da eher auf 20 bis 25 Halbzüge. Interessant ist deutlich voneinander abweichende Bewertung der verschiedenen Engines. Bei Analysen sollte man also am besten alle drei als Kiebitze einladen.

F14 vs Stockfish 10



Lc0 vs F14

Nach meiner Einschätzung hat Fritz 14 gegen die beiden anderen Engines keine Chance. Seine Zeit ist vorbei.

Bei Leela Chess Zero (Lc0) und Stockfish 10 hängt es von den zeitlichen Bedingungen ab, wer die Nase vorne hat. Der Halbzüge-Horizont von Stockfish ist auf meinem PC beachtlich. Dagegen spielt Lc0 m.E. das elegantere Schach, und dies erfolgt mit viel weniger Aufwand in Bezug auf die durchgerechneten Positionen. Auf längere Sicht könnte Leela mit seiner Lernfähigkeit die Nase vorn behalten.

Hier folgt das Ergebnis meines kleinen Turniers (ohne Rückrunde):

Turnierergebnis

Hier findet sich die Partie zwischen Stockfish und Lc0, die durch dreifache Stellungswiederholung in einem Remis endet.

Bei einem Test über 8 Partien lag übrigens Stockfish 10 deutlich mit 5,5 : 2,5 vor Lc0.  Das macht die Angelegenheit spannend. Wir sind genau am Punkt, an dem die alpha-beta-Maschinen durch den Audodidakten Lc0 eingeholt werden. Viele erwarten, dass Lc0 seinen Gegner Stockfish 10 bald in den Schatten stellt.

Wie "genial" (aus menschlicher Sicht) ist Lc0? Schauen wir es uns an. Interessant ist folgende Taktikaufgabe aus dem Spiel von Nigel Short gegen Jan Timman (Tilburg, 1991):
Damit die weiße Dame auf g7 Matt setzen kann , läuft der weiße König nach vorne durch bis h6. Ein berühmt gewordenes Manöver.

Jan Timman vs Jan Timman - Taktikaufgabe

Diese Idee wirkt auf uns Menschen genial und außergewöhnlich. Die klassischen brute-force Engines finden den Schlüsselzug relativ rasch. Stockfish 10 (64 bit) schafft den Schlüsselzug Kg3 auf meinem PC in 6,7 Sekunden. Alle Achtung! Dass dieser Zug zu einem Matt führt, zeigt Stockfish erst bei Tiefe 38 an. Hierzu benötigt er bereits 3,5 Minuten. Nun lassen wir noch den Crafty 23.05. x64  ran. Er hat den Schlüsselzug in ca. 4 Sekunden gefunden. Deep Fritz 14 schafft es in 9 Sekunden. Da gibt es nix zu meckern.

Daher ist es ein guter Test für Leela Chess Zero, denn man kann ihn eher mit einem menschlichen Spieler vergleichen. Leela Chess Zero v0.21.2 benötigt für den Schlüsselzug Kg3 fast 50 Sekunden. Hierbei wird eine Tiefe von 12 angezeigt. Lc0 benötigt einfach mehr Zeit, um in die Tiefe vorzudringen, als der rasend schnelle Stockfish 10. Sobald dieses Thema abgehakt ist, wird Leela glänzen.

Mann sollte es so sehen: Dass er bei diesem bescheidenen Horizont gegen Stockfish 10 mithalten kann, zeigt die Überlegenheit der Vorgehensweise der KI.