An der Leela Chess Zero Schachengine bastelt die Schach-Community nun schon eine ganze Weile. Genauso wie der große Bruder Alpha Zero, zieht die Engine Leela Chess Zero ihre Spielstärke aus vielen „Trainings“-Partien. Diese Engine lernt das Schachspielen durch Erfahrungswerte, um es oberflächlich auszudrücken.
Dank der Arbeit von Al und Jürgen, läuft diese Engine nun auch auf dem DGT Pi / PicoChess. Hier nun eine Schritt für Schritt Anleitung, wie man diese spannende Engine auf dem DGT Pi / PicoChess zum Laufen bekommt:
Zunächst müssen wir unseren DGT Pi mit dem Internet/Intranet verbinden. Dies geht am Einfachsten, indem man den DGT Pi mit einem RJ45-Kabel (LAN-Kabel) mit dem Router verbindet. Startet man nun den DGT Pi, erhalten wir über das System-Menü an der Uhr die IP-Adresse des DGT Pi.
Nun starten wir das Programm Putty und verbinden uns mit dem DGT Pi, indem wir dessen IP-Adresse in das entsprechende Feld eintragen und „Open“ anklicken. Als Benutzernamen geben wir pi
ein und als Passwort picochess
.
Um die Engine zum Laufen zu bekommen, müssen wir bei unserem DGT Pi einige Sachen nachinstallieren. Da ständig neue Versionen der notwendigen Installationspakete veröffentlicht werden und ältere Pakete nicht mehr verfügbar sein können, ist es zunächst wichtig, dass wir unsere Paket-Liste im DGT Pi auf den neusten Stand bringen. Hierzu führen wir folgenden Befehl aus:
sudo apt-get update
Ist das Update durchgelaufen, können wir mit der Installation der Pakete beginnen. Bitte folgenden Code komplett kopieren und in das Putty-Shell-Fenster hineinkopieren und mit der Enter-Taste ausführen:
sudo apt install cmake g++ git libboost-all-dev libopenblas-dev opencl-headers ocl-icd-libopencl1 ocl-icd-opencl-dev zlib1g-dev
Der Installations-Assistent wird uns ein paarmal fragen, ob wir mit der Installation des einen oder anderen Paketes einverstanden sind, was wir natürlich bejahen. Auf Grund der Vielzahl der Pakete und der doch nicht geringen Größe, kann das Installieren durchaus 20 Minuten Zeit in Anspruch nehmen.
Wurde die Installation erfolgreich beendet, laden wir uns die von Al Scally Cooper compilierte Engine Leela Chess Zero herunter:
LcZero kompiliert von Al Scally Cooper (632 Downloads)
Nach dem Entpacken der ZIP-Datei, haben wir eine Datei namens lczero
auf dem Rechner. Diese Datei müssen wir nun in den Engine-Ordner auf unserem DGT Pi kopieren. Um dies halbwegs komfortabel zu machen, verwenden wir zum Hoch- und Herunterladen von Dateien die Software FileZilla.
Wer dieses Programm noch nicht auf dem Rechner hat, sollte es spätestens jetzt installieren und starten. Oben links können wir eine Schnellverbindung zu unserem DGT Pi aufbauen, indem wir die IP-Adresse des DGT Pi eingeben, den Port 22 wählen und die bekannten Zugangsdaten Benutzer: pi
Passwort: picochess
verwenden.
Hat alles geklappt, befinden wir uns im rechten Teil des Fensters in unserem Home-Ordner. Wir wechseln nun in folgenden Ordner:
/opt/picochess/engines/armv7l
Nun ziehen wir die auf unserem Computer befindliche entpackte Datei lczero
in diesen Ordner. Der nun folgende Schritt wird gerne vergessen. Zwar befindet sich die Datei nun im richtigen Verzeichnis, aber für das System ist es einfach nur eine Datei, mehr nicht. Da es sich bei lczero
um ein Programm handelt, welches das System ausführen muss, müssen wir der Datei die entsprechende Berechtigung geben. Wir klicken hierzu im Filezilla mit der rechten Maustaste auf die Datei und wählen den Menüpunkt Dateiberechtigungen. In dem sich nun öffnenden Fenster setzen wir die Häkchen so, wie auf dem hier gezeigten Bild:
Jetzt noch mit OK bestätigen. Als nächstes müssen wir die Engine noch in unsere Engine-Liste eintragen. Hierzu klicken wir auf die im selben Ordner /opt/picochess/engines/armv7l
befindliche Datei engines.ini
mit der rechten Maustaste und wählen im Menü Ansehen/Bearbeiten.
Die Datei sollte nun in einem Editor geöffnet sein. Wir gehen ans Ende der Datei und geben folgende Zeilen ein:
[lczero]
name = lczero v0.10
small = lczero
medium = lczero
large = lczero 0.10
elo = 2700
Das Ganze speichern wir ab und übertragen die Datei zurück in den Ordner. Sollte FileZilla fragen, ob wir die bestehende Datei überschreiben wollen, bestätigen wir das natürlich.
Nun kommen wir zu zu dem besonderen Teil. Damit Leela Chess Zero Schach spielen kann, benötigt es „Wissen“. Dieses Wissen erhält Leela Chess Zero durch unzählig gespielte Partien und wird in sog. Weights-Dateien abgespeichert. Zum Spielen ist immer nur eine Weights-Datei notwendig. Unter folgendem Link könnt ihr euch eine große Auswahl an Weights-Dateien herunterladen:
Sehr aktuelle Weights-Dateien findet ihr unter folgendem Link:
http://testserver.lczero.org/networks
Zum Herunterladen einer Datei, klickt man einfach in der Spalte Network einen Eintrag an:
Die geschätzte Spielstärke der einzelnen Weights-Dateien könnt ihr unter folgendem Link find:
https://docs.google.com/spreadsheets/d/1XSJiCcQpCLv0fNwrUn7jXjdkZFU63YFEWpdXv6dSSg0/htmlview#
Nach dem Herunterladen müssen wir die Datei noch in weights.txt
umbenennen.
Nun gehen wir wieder zurück ins FileZilla-Fenster und wechseln auf unserem DGT Pi in den Ordner
/opt/picochess
In genau diesen Ordner müssen wir nun die Datei hineinkopieren. Manche Weights-Datei kann unter Umständen 60-100 Megabyte groß sein. Es kann mit dem Kopieren als etwas dauern.
Ist auch dieser Schritt geschafft, kommen wir zum Finale. 🙂
Wir gehen zurück ins Putty-Fenster und geben folgenden Befehl ein:
sudo reboot now
Der DGT Pi startet nun neu und wenn wir nun einen Blick in die Engine-Auswahl werfen, sehen wir, dass uns mit lczero 0.10 ab sofort die Engine Leela Chess Zero zur Verfügung steht.
WICHTIG! >>> Wenn wir nun diese Engine auswählen, kann es durchaus 15 bis 20 Sekunden dauern, bis die Rückmeldung EngineOK
im Display erscheint. Also nicht die Geduld verlieren und wild auf den Knöpfen des DGT Pi herumdrücken. 😉
Eurer ersten Partie gegen diese wirklich interessante Engine kann nun starten. Eine direkte Spielstärken-Einstellung der Engine gibt es nicht. Allerdings kann man sich anhand der oben genannten Links eine für die eigene Spielstärke passende Weights-Datei herunterladen und auf diese Weise die Spielstärke heben und senken. Hierzu einfach die auf dem DGT Pi befindliche weights.txt austauschen.
Und jetzt viel Spaß
Euer Benny
Hallo. Da mir die fachliche Kompetenz (Linux) fehlt möchte ich anfragen, ob man mit einem IMG Leela Chess Zero für SD-Card und DGT PI (wie auch als Download momentan v0.9l bei DGT möglich) rechnen kann. Gruß Esser
Hallo Herr Esser,
schreiben Sie mich einfach kurz per Mail an, dann sende ich Ihnen den Download-Link des 0.9n-Images, bei welchem Leela enthalten ist.
Viele Grüße
Benny
Hallo. Das wäre super, wenn Sie mir einen Download -Link senden würden.Gruß Esser
Hallo Peter,
der Download-Link wurde an Dich versendet. 🙂 Viel Spaß mit den neuen Engines und vor allem mit Leela Zero,
Andere würden sich über den Link sicher auch freuen … und hier ist doch ein geeignetes Plätzchen dafür 😉
Hier der Link zum Produkt:
https://www.topschach.de/engine-paket-engines-p-4098.html
Einfach als Option den Download auswählen und die Bestellung abschließen und der personalisierte Download-Link wird per Mail zugesendet. Der Download ist kostenlos.
Gruß
Benny
Danke Benny 🙂
Ist 0.10 noch aktuell?
Hallo Raphael,
die 0.10 ist natürlich nicht mehr die aktuellste Version, aber dafür läuft sie stabil und hat in der Anwendung keine Nachteile gegenüber der neusten Version. Bei Bedarf kann ich natürlich auch die neuste Version kompilieren und bereitstellen. Bisher war das noch nicht notwendig.
Gruß
Benny
Hi,
funktioniert das auch mit einen non DGTpi, also einem normalen Raspi mit der picochess version 2.01 ?
Hi, habe seit kurzem mir die Pi auch zugelegt und betreibe sie mit der gelieferten Orginalsoftware Version. Was mich momentan am meisten stört, dass bei eingestellter Sprachausgabe die Uhr irgendwann in der lfden Partie die Ansage einstellt und die Züge nur noch vom Display aus übermittelt werden. Gibt es dazu einen Bugfix bzw ist der Fehler bei der angebotenen SD von Topschach https://www.topschach.de/engine-paket-engines-p-4098.html behoben. Danke im Vorraus für die Info!
LG
Axel
Hallo Axel,
es handelt sich hierbei nicht um einen Bug, sondern um Absicht. Sobald die Bedenkzeit knapp wird, schaltet sich die Zugansage aus, da das Ansagen von Zügen den schnellen hin- und her ausgeführten Zügen auf dem Brett nicht mehr folgen kann.
Ich könnte Dir die Zugansage dauerhaft einschalten, jedoch wärst Du mit dem Ergebnis sicher nicht zufrieden.
Viele Grüße
Benny
Hallo !
Für LC0 gibt es ja verschiedenste Weights-Dateien. Unter anderem wird unterschieden zwischen GPU basierten und für die CPU optimierte Netzwerke. Welche Variante ist denn die bessere für den DGT PI ?
Gibt es da evtl. auch noch Optimierungen in der Konfiguration, die Sinn machen ? Z.B. der GPU mehr Memory geben ?
Was ich bzgl. Spielstärke nicht verstehe: Das muss sich ja alles auf eine bestimmte Hardware beziehen. Auf langsamer Hardware muss die Spielstärke ja geringer sein. Wie sind dann die Bewertungen aus dem Link mit dem Spreadsheet für den DGT PI zu interpretieren ?
Viele Grüße
Uwe
Hallo Uwe,
die im DGT Pi (Raspberry Pi) verbaute GPU eignet sich nicht für die LC0-GPU-Version, weshalb man auf die langsamere LC0-CPU-Version zurückgreifen sollte. Es gibt verschiedene Weights, welche allerdings auf dem DGT Pi nur marginale Änderungen aufzeigen. Ich würde die Spielstärke von LC0 auf dem DGT Pi mit maximal 2000 ELO bewerten. Hierbei ist allerdings zu beachten, dass diese maximale Spielstärke nur in langen Partien (Ab 30 Min Bedenkzeit/Partie) zum Tragen kommt. Im Schnellschach und Blitz würde ich die Spielstärke bei etwa 1600 bis 1800 einschätzen. Das Interessante ist hierbei der Spielstil von LC0. Dieser macht wirklich Spaß und es kommt zu wirklich kuriosen Situationen. Beispielsweise hatte LC0 in einer Partie gegen mich eine taktische Chance, Material zu gewinnen. Es war ein einfacher Dreizüger, bei welchem LC0 einen Läufer + Kompensation dafür erhalten hätte 😉 – Stattdessen entschied sich LC0 gegen den Materialgewinn und verstärkte seine Stellung, was sehr viel später dann auch erfolgreich in einen Mattangriff mündete. In der nachträglichen Analyse zeigte sich, dass jede andere Engine (Stockfish, etc.) sich für den Materialgewinn entschieden hätte, was auch sehr vorteilhaft gewesen wäre. Das positionelle Spiel von LC0 ist auf jeden Fall sehr lehrreich und sorgt immer wieder für AHA-Effekte. Auch auf dem DGT Pi.
Viele Grüße
Benny