Leela Chess Zero auf dem DGT Pi

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:

http://lczero.org/networks

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

13 Gedanken zu „Leela Chess Zero auf dem DGT Pi

  1. 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 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

  2. 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

  3. 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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.