Ajout de la prise en charge des GPU NVIDIA dans Docker Model Runner

Activez l'accélération GPU pour Docker Model Runner avec le support NVIDIA CUDA

Docker Model Runner est l’outil officiel de Docker pour exécuter des modèles d’IA localement, mais l’activation de l’accélération GPU NVidia dans Docker Model Runner nécessite une configuration spécifique.

Contrairement aux commandes standard docker run, docker model run ne prend pas en charge les drapeaux --gpus ou -e, donc le support GPU doit être configuré au niveau du démon Docker et lors de l’installation du runner.

Si vous cherchez une solution alternative d’hébergement de LLM avec une configuration GPU plus simple, envisagez Ollama, qui dispose d’un support GPU intégré et d’une installation plus simple. Cependant, Docker Model Runner offre une meilleure intégration avec l’écosystème Docker et la distribution d’artefacts OCI.

Docker Model Runner avec support NVIDIA GPU Cette belle image a été générée par AI model Flux 1 dev.

Prérequis

Avant de configurer le support GPU, assurez-vous d’avoir :

Vérifiez que votre GPU est accessible :

nvidia-smi

Testez l’accès GPU de Docker :

docker run --rm --gpus all nvidia/cuda:12.2.2-base-ubi8 nvidia-smi

Pour plus de commandes Docker et d’options de configuration, consultez notre Docker Cheatsheet.

Étape 1 : Configurer le démon Docker pour le runtime NVIDIA

Docker Model Runner nécessite que le runtime NVIDIA soit défini comme runtime par défaut dans la configuration du démon Docker.

Trouver le chemin du runtime NVIDIA Container

Tout d’abord, localisez où nvidia-container-runtime est installé :

which nvidia-container-runtime

Cela affiche généralement /usr/bin/nvidia-container-runtime. Notez ce chemin pour l’étape suivante.

Configurer le démon Docker

Créez ou mettez à jour /etc/docker/daemon.json pour définir NVIDIA comme runtime par défaut :

sudo tee /etc/docker/daemon.json > /dev/null << 'EOF'
{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "/usr/bin/nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}
EOF

Important : Si which nvidia-container-runtime a retourné un autre chemin, mettez à jour la valeur "path" dans la configuration JSON en conséquence.

Redémarrer le service Docker

Appliquez la configuration en redémarrant Docker :

sudo systemctl restart docker

Vérifier la configuration

Confirmez que le runtime NVIDIA est configuré :

docker info | grep -i runtime

Vous devriez voir Default Runtime: nvidia dans la sortie.

Étape 2 : Installer Docker Model Runner avec support GPU

Docker Model Runner doit être installé ou réinstallé avec un support GPU explicite. Le conteneur runner lui-même doit être la version CUDA-enabled.

Arrêter le runner actuel (si en cours d’exécution)

Si Docker Model Runner est déjà installé, arrêtez-le d’abord :

docker model stop-runner

Installer/Réinstaller avec support CUDA

Installez ou réinstallez Docker Model Runner avec le support GPU CUDA :

docker model reinstall-runner --gpu cuda

Cette commande :

  • Télécharge la version CUDA-enabled (docker/model-runner:latest-cuda) au lieu de la version uniquement CPU
  • Configure le conteneur runner pour utiliser le runtime NVIDIA
  • Active l’accélération GPU pour tous les modèles

Note : Si vous avez déjà installé Docker Model Runner sans support GPU, vous devez le réinstaller avec le drapeau --gpu cuda. Simplement configurer le démon Docker n’est pas suffisant — le conteneur runner lui-même doit être la version CUDA-enabled.

Backends GPU disponibles

Docker Model Runner prend en charge plusieurs backends GPU :

  • cuda - NVIDIA CUDA (le plus courant pour les GPU NVIDIA)
  • rocm - AMD ROCm (pour les GPU AMD)
  • musa - Moore Threads MUSA
  • cann - Huawei CANN
  • auto - Détection automatique (par défaut, peut ne pas fonctionner correctement)
  • none - Uniquement CPU

Pour les GPU NVIDIA, utilisez toujours --gpu cuda explicitement.

Étape 3 : Vérifier l’accès GPU

Après l’installation, vérifiez que Docker Model Runner peut accéder à votre GPU.

Vérifier l’accès GPU du conteneur runner

Testez l’accès GPU à l’intérieur du conteneur Docker Model Runner :

docker exec docker-model-runner nvidia-smi

Cela devrait afficher vos informations GPU, confirmant que le conteneur a un accès GPU.

Vérifier l’état du runner

Vérifiez que Docker Model Runner est en cours d’exécution :

docker model status

Vous devriez voir que le runner est actif avec le support llama.cpp.

Étape 4 : Tester un modèle avec GPU

Exécutez un modèle et vérifiez qu’il utilise le GPU.

Exécuter un modèle

Démarrer une inférence de modèle :

docker model run ai/qwen3:14B-Q6_K "qui êtes-vous ?"

Vérifier l’utilisation du GPU dans les logs

Vérifiez les logs de Docker Model Runner pour la confirmation du GPU :

docker model logs | grep -i cuda

Vous devriez voir des messages indiquant l’utilisation du GPU :

  • using device CUDA0 (NVIDIA GeForce RTX 4080) - appareil GPU détecté
  • offloaded 41/41 layers to GPU - couches du modèle chargées sur le GPU
  • CUDA0 model buffer size = 10946.13 MiB - allocation de mémoire GPU
  • CUDA0 KV buffer size = 640.00 MiB - cache clé-valeur sur le GPU
  • CUDA0 compute buffer size = 306.75 MiB - tampon de calcul sur le GPU

Surveillance de l’utilisation du GPU

Dans un autre terminal, surveillez en temps réel l’utilisation du GPU :

nvidia-smi -l 1

Vous devriez voir une augmentation de l’utilisation de la mémoire et de l’utilisation du GPU lorsque le modèle est en cours d’exécution.

Pour plus d’options avancées de surveillance du GPU et d’outils, consultez notre guide sur applications de surveillance du GPU sous Linux / Ubuntu.

Dépannage

Le modèle utilise toujours le CPU

Si le modèle utilise toujours le CPU :

  1. Vérifiez la configuration du démon Docker :

    docker info | grep -i runtime
    

    Doit afficher Default Runtime: nvidia

  2. Vérifiez le runtime du conteneur runner :

    docker inspect docker-model-runner | grep -A 2 '"Runtime"'
    

    Doit afficher "Runtime": "nvidia"

  3. Réinstallez le runner avec le support GPU :

    docker model reinstall-runner --gpu cuda
    
  4. Vérifiez les logs pour les erreurs :

    docker model logs | tail -50
    

Le GPU n’est pas détecté

Si le GPU n’est pas détecté :

  1. Vérifiez que le NVIDIA Container Toolkit est installé :

    dpkg -l | grep nvidia-container-toolkit
    
  2. Testez l’accès GPU avec Docker standard :

    docker run --rm --gpus all nvidia/cuda:12.2.2-base-ubi8 nvidia-smi
    

    Pour dépanner les problèmes Docker, consultez notre Docker Cheatsheet.

  3. Vérifiez les pilotes NVIDIA :

    nvidia-smi
    

Problèmes de performance

Si la performance du GPU est mauvaise :

  1. Vérifiez l’utilisation du GPU :

    nvidia-smi
    

    Cherchez un pourcentage d’utilisation du GPU élevé

  2. Vérifiez que les couches du modèle sont sur le GPU :

    docker model logs | grep "offloaded.*layers to GPU"
    

    Toutes les couches doivent être transférées vers le GPU

  3. Vérifiez les problèmes de mémoire :

    nvidia-smi
    

    Assurez-vous que la mémoire du GPU n’est pas épuisée

Bonnes pratiques

  1. Spécifiez toujours le backend GPU explicitement : Utilisez --gpu cuda au lieu de --gpu auto pour les GPU NVIDIA afin d’assurer une configuration correcte.

  2. Vérifiez la configuration après les modifications : Vérifiez toujours docker info | grep -i runtime après avoir modifié les paramètres du démon Docker.

  3. Surveillez l’utilisation du GPU : Utilisez nvidia-smi pour surveiller la mémoire et l’utilisation du GPU pendant l’inférence du modèle. Pour plus d’outils de surveillance avancés, consultez notre guide sur applications de surveillance du GPU sous Linux / Ubuntu.

  4. Vérifiez régulièrement les logs : Consultez docker model logs pour vous assurer que les modèles utilisent l’accélération GPU.

  5. Utilisez des tailles de modèles appropriées : Assurez-vous que votre GPU dispose de suffisamment de mémoire pour le modèle. Utilisez des modèles quantifiés (Q4, Q5, Q6, Q8) pour une meilleure efficacité de la mémoire GPU. Pour obtenir de l’aide pour choisir le bon GPU pour vos charges de travail d’IA, consultez notre guide sur Comparaison des spécifications des GPU NVidia adaptés à l’IA.

Liens utiles