【发布时间】:2020-12-24 08:36:51
【问题描述】:
我正在尝试从我的 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 映像创建的容器中运行相同的东西,我会得到与上面相同的输出,并且一切运行顺利。 torch.cuda.is_available() 返回 True。
但如果我在任何其他 docker 容器中运行相同的 nvidia-smi 命令,它会提供以下输出,您可以在其中看到 CUDA 版本为 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
【问题讨论】:
-
这不是一个与 CUDA 编程相关的问题,不应这样标记
-
@talonmies,我可以知道为什么这与 CUDA 无关吗?我正在尝试使用 Docker 的 CUDA 框架来利用连接到主机的 GPU,对吗?我这样说有错吗?
-
面临同样的情况。你找到答案了吗?
-
@arun 我刚刚将 docker 基础映像更改为 nvidia/cuda 映像以使其正常工作
-
我正在努力避免使用 nvidia/cuda 作为基础映像..
标签: docker docker-compose cuda pytorch nvidia-docker