Lc0 — Compilation de Lc0 0.30 sur Debian 12

Compilation du moteur d’échecs neuronal Lc0 version 0.30 sur Debian 12 et Ubuntu 23.04.

Nous avons déjà consacré trois billets sur la compilation du moteur d’échecs neuronal Lc0 (Leela Chess Zero) sur Ubuntu 18.04 :

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
Puis installer les packages Cuda and cuDNN :
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
Puis lancer la compilation avec :
./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
    ...
    ...

Télécharger

 lc0-v0.30-linux.tgz

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-ubuntu-unofficial-builds.