私はDockerコンテナの中からGPUを使いようとしています。私はUbuntu 18.04でバージョン19.03でDockerを使用しています。
Dockerコンテナの外部NVIDIA-SMIを実行すると、以下の出力が得られます。
+-----------------------------------------------------------------------------+
| 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 |
+-----------------------------------------------------------------------------+
_
NVIDIA/CUDA Dockerイメージから作成されたコンテナの内側のSAM ...が実行されている場合は、上記と同じ出力が得られ、すべてがスムーズに実行されています。 torch.cuda.is_available()true。
ただし、他のDockerコンテナ内で同じNVIDIA-SMIコマンドを実行すると、CUDAバージョンがASとなることが確認できる、次の出力がN/Aです。コンテナ内の内側torch.cuda.is_available()も戻りますfalse。
+-----------------------------------------------------------------------------+
| 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 |
+-----------------------------------------------------------------------------+
_
次のコマンドを使用してNVIDIA-Container-Toolkitをインストールしました。
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
_
次のコマンドを使用してコンテナを起動しました
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
[SOMECODE] _すべて(AKA NVIDIAドライバ、CUDAツールキット、およびNVIDIA-CONTAINESTOLKIT)がホストマシンに正しくインストールされている場合は、CUDA Version: N/A
を返してください。
docker run --rm --gpus all nvidia/cuda nvidia-smi
が正しく返すことを考えると。私はCUDA Version: N/A
の中にも問題がありました。
私の答えを見てください https://stackoverflow.com/a/64422438/2202107 (明らかにあなたは明らかにあなたはすべてのすべてのマッチング/正しいバージョンを調整してインストールする必要があります)