J'exécute un vachine virtuel sur GCP
avec un GPU tesla. Et essayez de déployer une application basée sur PyTorch
pour l'accélérer avec le GPU.
Je veux que Docker utilise ce GPU, j'y ai accès à partir de conteneurs.
J'ai réussi à installer tous les pilotes sur la machine hôte et l'application fonctionne correctement, mais lorsque j'essaie de l'exécuter dans Docker (basé sur le conteneur nvidia/cuda), Pytorch échoue:
File "/usr/local/lib/python3.6/dist-packages/torch/cuda/__init__.py", line 82,
in _check_driver http://www.nvidia.com/Download/index.aspx""")
AssertionError:
Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from
Pour obtenir des informations sur les pilotes nvidia visibles par le conteneur, je lance ceci:
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
Mais il se plaint: docker: Error response from daemon: Unknown runtime specified nvidia.
Sur la machine hôte nvidia-smi
la sortie ressemble à ceci:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01 Driver Version: 440.33.01 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla P100-PCIE... On | 00000000:00:04.0 Off | 0 |
| N/A 39C P0 35W / 250W | 873MiB / 16280MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
Si je vérifie mes runtimes dans docker, je ne reçois que runc
runtime, pas nvidia
comme dans les exemples sur Internet.
$ docker info|grep -i runtime
Runtimes: runc
Default Runtime: runc
Comment puis-je ajouter cet environnement d'exécution nvidia
à mon docker?
La plupart des messages et des questions que j'ai trouvés jusqu'à présent disent quelque chose comme "J'ai juste oublié de redémarrer mon démon docker, cela a fonctionné", mais cela ne m'aide pas. Que dois-je faire?
J'ai vérifié de nombreux problèmes sur github, et # 1 , # 2 et # questions StackOverflow - n'a pas aidé.
Le runtime nvidia
dont vous avez besoin est nvidia-container-runtime
.
Suivez les instructions d'installation ici:
https://github.com/NVIDIA/nvidia-container-runtime#installation
Fondamentalement, vous l'installez d'abord avec votre gestionnaire de paquets, s'il n'est pas présent:
Sudo apt-get install nvidia-container-runtime
Ensuite, vous l'ajoutez aux runtimes docker:
https://github.com/nvidia/nvidia-container-runtime#daemon-configuration-file
Cette option a fonctionné pour moi:
$ Sudo tee /etc/docker/daemon.json <<EOF
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
EOF
Sudo pkill -SIGHUP dockerd
Vérifiez qu'il est ajouté:
$ docker info|grep -i runtime
Runtimes: nvidia runc
Default Runtime: runc