freedzhost.cloud

Docker avec accès à votre carte graphique

Niveau DébutantTemps estimé 30 minÀ lire avant Installer le pilote NVIDIA et vérifier sa carteUn mot inconnu ? Lexique

Dernière révision :

Chaque serveur de modèles de cette série tourne dans un conteneur : il s'installe proprement, se désinstalle proprement, et deux versions peuvent cohabiter. Deux pièces, aucune n'est de nous : Docker, et le Container Toolkit de NVIDIA.

fourni parVotre serveur de modèlesllama-server, dans un conteneurllama.cppDockerlance et isole les conteneursDockerNVIDIA Container Toolkit+ /etc/cdi/nvidia.yamlNVIDIAPilote NVIDIAsur l'hôtevotre distributionGPUla cartematérielpérimé après une mise à journvidia-ctk cdi generate
Cinq couches, un fournisseur chacune. Le fichier CDI décrit le pilote tel qu'il était : après une mise à jour du pilote, régénérez-le.

Un peu d'histoire

Docker, sorti en 2013, a permis d'expédier toute une application comme une seule image qui tourne pareil partout. Les cartes graphiques sont venues plus tard : un conteneur ne voit pas les périphériques de l'hôte par défaut. Le toolkit de conteneurs de NVIDIA fait le pont, et la plus récente Container Device Interface (CDI) décrit les périphériques dans un simple fichier que tout moteur de conteneurs sait lire, ce qui explique aussi pourquoi ce fichier doit rester au pas du pilote.

1. Docker

Le script d'installation de Docker installe la dernière version. Docker le réserve aux machines de test et de développement ; pour un serveur de production, utilisez la méthode par dépôt de leur documentation.

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

2. NVIDIA Container Toolkit (Ubuntu, Debian)

D'après le guide d'installation de NVIDIA :

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
  | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
  | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

Autres distributions : suivez le même guide sur le site de NVIDIA.

3. Tester

sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

Le même tableau que sur l'hôte, affiché depuis l'intérieur d'un conteneur : vos conteneurs voient la carte.

Le piège après une mise à jour du pilote

Si vous utilisez CDI (le fichier /etc/cdi/nvidia.yaml), il décrit les bibliothèques du pilote telles qu'elles étaient au moment où il a été généré. Après une mise à jour du pilote, il peut pointer vers des fichiers qui n'existent plus, et plus aucun conteneur GPU ne démarre. Voir le conteneur GPU sur le processeur pour le correctif au démarrage. Régénérez-le : sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml. Chez nous, il est désormais régénéré à chaque démarrage.

Sources

Utile ? Dites-nous ce qu'il faut mesurer ensuite.