Installation de KataGo

Voici comment installer KataGo sur une Debian vierge avec pour objectif final de le mettre sur une clef USB de 32G.

Installer une Debian 12

Faites une installation sur une disque externe USB complet, sans gestionnaire de volume logique et sans créer une partition pour /home

Une fois ceci fait vous travaillez sur la Debian que vous venez d'installer, lancer les commandes :

sudo apt update
sudo apt install gcc software-properties-common git cmake libssl-dev pkg-config qtbase5-dev qt5-qmake qtbase5-dev-tools qtmultimedia5-dev libqt5svg5-dev

Installer CUDA 12.6

La documentation officielle : https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

La page des chargements : https://developer.nvidia.com/cuda-downloads

Lancer les commandes :

wget https://developer.download.nvidia.com/compute/cuda/12.6.0/local_installers/cuda-repo-debian12-12-6-local_12.6.0-560.28.03-1_amd64.deb
sudo dpkg -i cuda-repo-debian12-12-6-local_12.6.0-560.28.03-1_amd64.deb
sudo cp /var/cuda-repo-debian12-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo add-apt-repository contrib
sudo apt-get update
sudo apt-get install cuda-toolkit
sudo apt-get install nvidia-open

Installer CUDNN 8

Ce qui suit permet d'installer facilement la version 9 mais KataGo veut la version 8. Je laisse l'information ici, elle servira peut-être dans le futur. Mais vous n'avez pas à l'utiliser maintenant.

wget https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/cuda-keyring_1.1-1_all.de
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt-get -y install cudnn9-cuda-12

Pour installer la version 8, il faut faire cette procédure manuellement car il faut un compte NVIDIA.

La version à charger : https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.7/local_installers/12.x/cudnn-local-repo-debian11-8.9.7.29_1.0-1_amd64.deb

Lancer les commandes :

sudo dpkg -i cudnn-local-repo-debian11-8.9.7.29_1.0-1_amd64.deb
sudo dpkg -i /var/cudnn-local-repo-debian11-8.9.7.29/libcudnn8_8.9.7.29-1+cuda12.2_amd64.deb
sudo dpkg -i /var/cudnn-local-repo-debian11-8.9.7.29/libcudnn8-dev_8.9.7.29-1+cuda12.2_amd64.deb

Installer TENSORRT

Ceci est facultatif.

Il faut charger le bon fichier '.deb' à partir de https://developer.nvidia.com/tensorrt Normalement c'est « TensorRT 10.3 GA for Ubuntu 22.04 and CUDA 12.0 to 12.5 DEB local repo Package »

Installer le paquet :

sudo dpkg -i nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5_1.0-1_amd64.deb

Suivre la manipulation indiquée pour copier la clef de vérification afin de permettre les mises à jour.

Installer les paquets qui sont dedans :

dpkg -i \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer-bin_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer-dev_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer-dispatch-dev_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer-dispatch10_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer-headers-dev_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer-headers-plugin-dev_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer-lean-dev_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer-lean10_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer-plugin-dev_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer-plugin10_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer-samples_10.3.0.26-1+cuda12.5_all.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer-vc-plugin-dev_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer-vc-plugin10_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvinfer10_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvonnxparsers-dev_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/libnvonnxparsers10_10.3.0.26-1+cuda12.5_amd64.deb

dpkg -i --ignore-depends=python3 \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/python3-libnvinfer-dispatch_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/python3-libnvinfer-lean_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/python3-libnvinfer_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/python3-libnvinfer-dev_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/tensorrt-dev_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/tensorrt-libs_10.3.0.26-1+cuda12.5_amd64.deb \
    /var/nv-tensorrt-local-repo-ubuntu2204-10.3.0-cuda-12.5/tensorrt_10.3.0.26-1+cuda12.5_amd64.deb

Vérifier que la carte graphique est utilisée avec le bon pilote

Vous devez redémarrer la machine.

Et vous lancez nvidia-smi pour vérifier que c'est ok.

Installer KataGo

Le plus simple est de faire les commandes suivantes :

git clone https://github.com/lightvector/KataGo.git
cd KataGo/cpp
# Remplacer OPENCL par TENSORRT si vous voulez l'utiliser et qu'il a été installé.
cmake . -DUSE_BACKEND=OPENCL -DBUILD_DISTRIBUTED=1
make -j 4

Charger un modèle

Charge un modèle du site : https://katagotraining.org/networks/
et le copier sous le nom KataGo/cpp/default_model.bin.gz

Configurer KataGo

Créer une configuration de KataGo adaptée à votre carte graphique en lançant les commandes :

cd KataGo/cpp
./katago genconfig
cp gtp.cfg default_gtp.cfg

Installer une interface pour jouer contre KataGo

L'interface la plus simple à installer est q5Go. Il suffit de lancer les commandes suivantes :

git clone https://github.com/bernds/q5Go.git
cd q5Go
qmake src/q5go.pro PREFIX=$HOME
make
./q5go

Vous configurez le program contre lequel jouer en indiquant le chemin vers KataGo :
/home/.../KataGo/cpp/katago avec comme paramètre gtp

Mettre tout cela sur une clef USB

On suppose que tout ce qui précède a été fait sur un disque dur USB externe que l'on veut copier sur une clef USB plus petite. On va donc tasser les 3 partitions tout au début du disque externe dans la zone qui sera copiée sur la clef USB.

On doit avoir fait le ménage sinon cela ne tient pas sur une clef de 32Go. Si vous avez installé TensorRT il faut une clef de 64Go.

apt clean
apt autoremove
rm ~/Téléchargements/*

On suppose que le disque s'appelle /dev/sdx dans la réalité cela sera probablement une lettre du début de l'alphabet à la place de x.

Démarrer un Linux autre que celui du disque dur externe et lancer lsblk pour lister les supports de stockage. Ce qui suit peut détruire le contenu du disque externe, c'est peut être une bonne idée d'en faire une copie complète.

Votre disque disque externe devrait avoir 3 partitions. Avec mon disque de 1To cela donne :

sdx                     8:48   0 931.5G  0 disk 
├─sdx1                  8:49   0   512M  0 part 
├─sdx2                  8:50   0 930.1G  0 part /media/exco/45efb7fb-e428-463f-b245-4bfa802ef29c
└─sdx3                  8:51   0   977M  0 part     

L'une des partitions de votre disque externe devrait normalement avoir été montée automatiquement par votre système. Il faut la démonter avec le nom indiqué, avec l'exemple ci-dessus : umount /media/exco/45efb7fb-e428-463f-b245-4bfa802ef29c Attention : votre système peut la remonter automatiquement à tous moment, vérifier régulièrement qu'elle n'est pas montée.

On lance la commande gparted /dev/sdx :

Vérifer que le système de fichier est bien démonté et copier sur la clef USB que l'on supposera s'appeler /dev/sdy avec :

dd bs=64K conv=noerror,sync status=progress if=/dev/sdx of=/dev/sdy

La copie se terminera par une erreur car la clef USB est trop petite, c'est normal.

Par contre la table de partition de la clef USB n'est pas bonne car elle indique la mauvaise taille. Pour réparer cela il faut lancer : sgdisk -v -e /dev/sdy

Normalement vous pouvez démarrer une machine sur la clef USB et lancer q5go

Cela ne démarre pas car la machine est trop vieille

Dans ce cas il faut convertir la partitionnement GTP en partitionnement MBR et réinstaller GRUB.

Sur votre système normal :

sudo sgdisk -v --gpttombr 1:2:3 /dev/sdy

Il faut ensuite réinstaller le système de démarrage.

sudo mount --bind /proc /media/..../CLEF-USB/proc
sudo mount --bind /dev /media/..../CLEF-USB/dev
sudo chroot /media/..../CLEF-USB
apt install grub-pc # éventuellement forcer l'installation
update-grub
grub-install /dev/sdy

La clef USB permet alors de faire démarrer une très vieille machine.