Mémo pour installer et tester l’utilisation du GPU NVidia dans un container Docker.

Inspiré de : https://marmelab.com/blog/2018/03/21/using-nvidia-gpu-within-docker-container.html

Environnement

  • Ubuntu 18.04 LTS – 16Go – Intel i5-4690k
  • NVidia GeForce GTX 960 4Go

Les commandes sont exécutées avec l’utilisateur root :

Installation

Driver NVidia + Cuda

Sources :

Installation par le réseau :

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=debnetwork

 

Méthode manuelle :

Récupérer la dernière version du fichier cuda-repo-ubuntu1804_xx.x.xxx-x_amd64.deb à cette URL : https://developer.download.nvidia.com/compute/cuda/repos/

Avec l’utilisateur root :

 

Dans tous les cas :

Il faut impérativement rebooter le PC pour activer et utiliser le service nvidia-persistenced.

Après reboot, vérifier que le service est bien en fonction : « Active: active (running) »

Résultat :

Sous l’utilisateur normal avec lequel on utilise Docker.
Ajouter dans le fichier ~/.bashrc avec les lignes suivantes :

Puis forcer la prise en compte :

Véroifier que tout fonctionne :

Si le résultat donne le message ci-dessous, vérifier l’installation de ‘nvidia-cuda-toolkit’.

 

Docker NVidia

Source : https://github.com/NVIDIA/nvidia-docker

Pour aller vite, voici les commandes à utiliser :

[DEPRECARTED] Installer nvidia-docker2 :

 

Tester

Avec l’utilisateur normal (pas root).
L’image pèse plus d’1 Go !!

Résultat :

Définir nvidia comme runtime par défaut

Avec l’utilisateur root, éditer le fichier /etc/docker/daemon.json et ajouter le ligne « default-runtime » :

Ne pas oublier la virgule sur la ligne précédente.

Relancer le service docker :

Avec l’utilisateur normal, vérifier si Docker utilise bien le runtime nvidia.
Voir les lignes « Runtimes » et « Default Runtime ».

Résultat :

Du coup, plus besoin d’utiliser l’argument « –runtime=nvidia »:

Ni dans le fichier docker-compose.yml comme spécifié dans la doc https://devblogs.nvidia.com/gpu-containers-runtime/