web-dev-qa-db-fra.com

Utilisation de GPU Inside Docker Conteneur - CUDA Version: N / A et TORCH.CUDA.IS_AVAILABLE Retours Faux

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
5
Sai Chander

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)

1
Sida Zhou