J'essaie d'utiliser le GPU depuis l'intérieur de mon conteneur Docker. J'utilise Docker avec la version 19.03 sur Ubuntu 18.04.
En dehors du conteneur Docker si j'exécute Nvidia-Smi, je reçois la sortie ci-dessous.
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.05 Driver Version: 450.51.05 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 On | 00000000:00:1E.0 Off | 0 |
| N/A 30C P8 9W / 70W | 0MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
Si j'exécute l'enchanté dans le conteneur créé à partir d'une image NVIDIA/CUDA Docker, je reçois la même sortie que ci-dessus et tout fonctionne bien. torche.cuda.is_Available () renvoie true.
Mais si j'exécute la même commande NVIDIA-SMI à l'intérieur d'un autre conteneur Docker, il donne la sortie suivante où vous pouvez voir que la version CUDA arrive comme N/A. À l'intérieur des conteneurs TORCH.CUDA.IS_AVAILABLE () renvoie également faux.
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.05 Driver Version: 450.51.05 CUDA Version: N/A |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 On | 00000000:00:1E.0 Off | 0 |
| N/A 30C P8 9W / 70W | 0MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
J'ai installé Nvidia-Contener-Toolkit à l'aide des commandes suivantes.
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | Sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu18.04/nvidia-docker.list | Sudo tee /etc/apt/sources.list.d/nvidia-docker.list
Sudo apt-get update
Sudo apt-get install nvidia-container-toolkit
Sudo systemctl restart docker
J'ai commencé mes conteneurs en utilisant les commandes suivantes
Sudo docker run --rm --gpus all nvidia/cuda nvidia-smi
Sudo docker run -it --rm --gpus all ubuntu nvidia-smi
docker run --rm --gpus all nvidia/cuda nvidia-smi
Ne devrait pas retourner CUDA Version: N/A
Si tout (AKA Nvidia pilote, Cuda Toolkit et Nvidia-Conter-Toolkit) est installé correctement sur la machine hôte.
Étant donné que docker run --rm --gpus all nvidia/cuda nvidia-smi
Retourne correctement. J'ai aussi eu un problème avec CUDA Version: N/A
À l'intérieur du conteneur, que j'ai eu de chance pour résoudre:
S'il vous plaît voir ma réponse https://stackoverflow.com/a/64422438/2202107 (évidemment, vous devez ajuster et installer les versions correspondantes/correctes de tout)