Lc0 — Compilation de Lc0 0.30 sur Debian 12
Nous avons déjà consacré trois billets sur la compilation du moteur d’échecs neuronal Lc0 (Leela Chess Zero) sur Ubuntu 18.04 :
- Compilation de Lc0 sur Ubuntu 18.04
- Compilation de Lc0 sur Ubuntu 18.04 avec prise en charge des GPU NVIDIA
- Compilation sur Ubuntu 18.04 de Lc0 0.29
Une nouvelle release est sortie le 21 juillet 2023 avec pour version 0.30.0.
Dans les billets précédents nous avions compilé sur Ubuntu 18.04 comme indiqué dans le README des sources de Lc0. La compilation sur Ubuntu 22.* n'aboutissait pas et nous n'avions pas approfondi pourquoi. Puis nous avons remarqué que la compilation se passait bien sur Ubuntu 23.04 et Debian 12, sans besoin de paramétrage ou de bricolage quelconque.
Voici la démarche pour réaliser la compilation de Lc0 sur Debian 12 et Ubuntu 23.04.
Installation des prérequis
En tant qu'utilisateur root
(ou avec des sudo
sur Ubuntu) :
apt update
apt install git
apt install build-essential
apt install meson
Support des GPU Nvidia
Pour compiler Lc0 avec le support des GPU Nvidia
il faut ajouter les deux dépôts non-free
et contrib
lors de la phase
d'installation des prérequis vue plus haut.
En tant qu'utilisateur root
(ou avec des sudo
sur Ubuntu)
apt-add-repository non-free
apt-add-repository contrib
apt update
apt install nvidia-cuda-toolkit nvidia-cudnn
Récupération sur GitHub des sources de Lc0 0.30
git clone -b release/0.30 --recurse-submodules https://github.com/LeelaChessZero/lc0.git
Compilation des sources
Se placer dans le répertoire lc0
créé lors de la commande précédente :
cd lc0
./build.sh
Test
L'exécutable lc0
généré par la compilation se trouve dans le répertoire build/release/
.
cd build/release/
Lc0 est moteur d'échecs neuronal, un réseau de neurones pré-entraînés
est nécessaire pour son fonctionnement. Le plus simple est d'utiliser celui de
la release officielle (791556.pb.gz
). Il peut être récupéré sur le site
https://training.lczero.org/networks/. Pour plus d'information sur les réseaux
disponibles voir le site https://lczero.org/play/networks/bestnets/.
Le réseau de neurones pré-entraînés 791556.pb.gz
peut être récupéré avec la commande :
wget https://training.lczero.org/get_network?sha=f404e156ceb2882470fd8c032b8754af0fa0b71168328912eaef14671a256e34 -O 791556.pb.gz
Le benchmark peut alors être lancé avec la commande :
./lc0 benchmark
On doit obtenir quelque chose comme cela :
_
| _ | |
|_ |_ |_| v0.30.0 built Aug 28 2023
Found pb network file: ./791556.pb.gz
Creating backend [eigen]...
Using Eigen version 3.4.0
Eigen max batch size is 256.
...
...
Ou si compilé avec le support des GPU Nvidia (et bien sûr avec une carte compatible) :
_
| _ | |
|_ |_ |_| v0.30.0 built Aug 28 2023
Found pb network file: ./791556.pb.gz
Creating backend [cudnn-auto]...
Switching to [cudnn-fp16]...
CUDA Runtime version: 11.8.0
Cudnn version: 8.5.0
Latest version of CUDA supported by the driver: 12.2.0
GPU: NVIDIA GeForce GTX 1650 Ti
GPU memory: 3.81238 GiB
GPU clock frequency: 1485 MHz
GPU compute capability: 7.5
...
...
L'archive contient les fichiers suivants :
lc0-v0.30-linux-cpu
: Lc0 version 0.30 sans support GPU NVIDIA.lc0-v0.30-linux-gpu-cuda11.8
: Lc0 version 0.30 avec support GPU NVIDIA (compilé avec CUDA 11.8 et cuDNN 8.5.0).791556.pb.gz
: réseau de neurones (le même que celui de la release 0.30).
Les builds de Lc0 proposés sur ce blog se trouvent maintenant également sur GitHub dans le repository https://github.com/jldblog/lc0-linux-unofficial-builds.