docker - 将 nvidia 运行时添加到 docker 运行时

标签 docker cuda gpu nvidia-docker

我在 GCP 上运行虚拟机使用特斯拉 GPU。
并尝试部署一个 PyTorch -基于应用程序以使用 GPU 对其进行加速。

我想让 docker 使用这个 GPU,可以从容器访问它。

我设法在主机上安装了所有驱动程序,并且该应用程序在那里运行良好,但是当我尝试在 docker(基于 nvidia/cuda 容器)中运行它时,pytorch 失败了:

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

要获取有关容器可见的 nvidia 驱动程序的一些信息,我运行以下命令:
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi但它提示:docker: Error response from daemon: Unknown runtime specified nvidia.
在主机上nvidia-smi输出如下所示:
+-----------------------------------------------------------------------------+
| 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 |
+-------------------------------+----------------------+----------------------+

如果我在 docker 中检查我的运行时,我只会得到 runc运行时,否 nvidia就像互联网上的例子一样。
$ docker info|grep -i runtime
 Runtimes: runc
 Default Runtime: runc

我怎样才能添加这个 nvidia运行时环境到我的 docker?

到目前为止,我发现的大多数帖子和问题都说“我只是忘记重新启动我的 docker 守护进程,它起作用了”,但这对我没有帮助。我应该做什么?

我在github上查了很多问题,还有#1 , #2#3 StackOverflow 问题 - 没有帮助。

最佳答案

nvidia您需要的运行时是 nvidia-container-runtime .

按照此处的安装说明进行操作:
https://github.com/NVIDIA/nvidia-container-runtime#installation

基本上,如果它不存在,则首先使用包管理器安装它:
sudo apt-get install nvidia-container-runtime
然后将其添加到 docker 运行时:
https://github.com/nvidia/nvidia-container-runtime#daemon-configuration-file

这个选项对我有用:

$ sudo tee /etc/docker/daemon.json <<EOF
{
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}
EOF
sudo pkill -SIGHUP dockerd

检查它是否已添加:
$ docker info|grep -i runtime
 Runtimes: nvidia runc
 Default Runtime: runc

关于docker - 将 nvidia 运行时添加到 docker 运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59008295/

相关文章:

linux - 从 "Docker Hub"下载镜像后,我应该把我的配置文件放在哪里?在数据量上?

tensorflow - TensorFlow 是否使用 GPU 上的所有硬件?

reactjs - 如何在客户端隐藏 firebaseConfig 信息

docker - "Kind"写入节点创建集群失败

c - CUDA的__shared__内存什么时候有用?

cuda - @cuda.jit 和 @jit(target ='gpu') 的区别

c++ - CUDA 中的并行批处理小矩阵不适用于 for 循环

c - OpenAcc 复制输入和复制输出时出错

android - 如何在connectedDebugAndroidTest运行之前和之后运行脚本

c++ - odeint 中的推力和刚性 ODE 求解器