Lc0 — Compilation sur Ubuntu 18.04 — Première partie
Mis à jour le 01/12/2022
Lc0 (Leela Chess Zero) est un moteur d'échecs (chess engine) open source basé sur un réseau de neurones.
Sur GitHub des releases sont proposées pour Windows et Android mais pas pour Linux. La page Readme décrit toutefois comment compiler les sources de Lc0 sous Linux pour Ubuntu 18.04 et 16.04.
Nous avons suivi les instructions de compilation dans une machine virtuelle Ubuntu 18.04 puis lancé le benchmark proposé par Lc0, d'abord sur la machine virtuelle puis sur le portable hôte qui tourne sous Ubuntu 22.xx.
Prérequis
- Installation des packages nécessaires :
sudo apt-get install build-essential libstdc++-8-dev clang-6.0 ninja-build pkg-config python3-pip git
- Installation de l'outil de build Meson :
pip3 install meson
- Vérification du gcc installé :Qui répond :
gcc --version
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compilation
- Récupération des sources de Lc0 sur GitHub de la release 0.28 sortie le 25 août 2021 :
git clone -b release/0.28 --recurse-submodules https://github.com/LeelaChessZero/lc0.git
- Compilation des sources :Puis :
cd lc0
Le résultat de la compilation se trouve dans le répertoire./build.sh
build/release/
. - On peut alors tester l'exécutable
lc0
:Puis :cd build/release/
Ce qui donne :./lc0
_ | _ | | |_ |_ |_| v0.28.0 built Nov 4 2021
Et pour obtenir l'aide en ligne :./lc0 --help
Lancement du benchmark sur Ubuntu 18.04
- Lc0 nécessite un réseau de neurones pour fonctionner. Les réseaux sont
disponibles sur la page Networks. On y
récupère le réseau 754042 pour avoir le même que celui livré avec la version
Windows.Le fichier
wget https://training.lczero.org/get_network?sha=5b3bc98eb1f20249daae9f26622c8ba40cd6878f6b4ac2aba76b0d81fc98af70 -O 754042.pb.gz
754042.pb.gz
doit être placé dans le répertoirebuild/release/
où se trouve l'exécutablelc0
. - On peut alors lancer le benchmark :Ce qui donne :
./lc0 benchmark
$ ./lc0 benchmark _ | _ | | |_ |_ |_| v0.28.0 built Nov 4 2021 Found pb network file: ./754042.pb.gz Creating backend [eigen]... Using Eigen version 3.3.7 Eigen max batch size is 256. Position: 1/34 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 Benchmark time 291 ms, 2 nodes, 7 nps, move d2d4 Benchmark time 299 ms, 3 nodes, 10 nps, move e2e4 Benchmark time 336 ms, 4 nodes, 12 nps, move d2d4 Benchmark time 393 ms, 8 nodes, 21 nps, move e2e4 Benchmark time 492 ms, 12 nodes, 25 nps, move e2e4 Benchmark time 700 ms, 20 nodes, 29 nps, move e2e4 Benchmark time 960 ms, 29 nodes, 30 nps, move e2e4 Benchmark time 1137 ms, 43 nodes, 38 nps, move e2e4 Benchmark time 1216 ms, 53 nodes, 44 nps, move e2e4 Benchmark time 1385 ms, 70 nodes, 51 nps, move e2e4 Benchmark time 1773 ms, 99 nodes, 56 nps, move e2e4 Benchmark time 2202 ms, 165 nodes, 75 nps, move e2e4 Benchmark time 2302 ms, 213 nodes, 93 nps, move e2e4 Benchmark time 3038 ms, 315 nodes, 104 nps, move e2e4 Benchmark time 4087 ms, 469 nodes, 115 nps, move e2e4 Benchmark time 5669 ms, 690 nodes, 122 nps, move e2e4 Benchmark time 5830 ms, 835 nodes, 143 nps, move e2e4 Benchmark time 7329 ms, 995 nodes, 136 nps, move e2e4 Benchmark time 8935 ms, 1379 nodes, 154 nps, move e2e4 Benchmark time 10000 ms, 1432 nodes, 143 nps, move e2e4 bestmove e2e4 ... ...
Lancement du benchmark sur Ubuntu 22.04 et 22.10
Nous avons transféré l'exécutable et le réseau de neurones sur un portable sous Ubuntu 22.04. Le benchmark précédent fonctionne correctement. Idem après l'upgrade d'Ubuntu 22.04 vers 22.10.
Dans le billet suivant nous verrons comment compiler les sources de Lc0 avec support des GPU pour les cartes graphiques NVIDIA.