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

将nvidia运行时添加到docker运行时,docker,cuda,gpu,nvidia-docker,Docker,Cuda,Gpu,Nvidia Docker,我正在用特斯拉GPU在GCP上运行一个虚拟vachine。 并尝试部署基于PyTorch的应用程序,用GPU加速 我想让docker使用这个GPU,从容器中访问它。 我设法在主机上安装了所有驱动程序,应用程序在主机上运行良好,但当我尝试在docker(基于nvidia/cuda容器)中运行时,pytorch失败: File "/usr/local/lib/python3.6/dist-packages/torch/cuda/__init__.py", line 82, in _check_dr

我正在用特斯拉GPU在GCP上运行一个虚拟vachine。 并尝试部署基于
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:daemon的错误响应:未知运行时指定的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
runtime,没有
nvidia
,就像互联网上的例子一样

$ docker info|grep -i runtime
 Runtimes: runc
 Default Runtime: runc
如何将此
nvidia
运行时环境添加到我的docker中?

到目前为止,我发现的大多数帖子和问题都会说“我只是忘记重新启动docker守护进程,它成功了”,但这对我没有帮助。我该怎么办


我在github上检查了许多问题,和,以及StackOverflow问题-没有帮助。

您需要的
nvidia
运行时是
nvidia容器运行时

请按照此处的安装说明进行操作:

基本上,如果软件包管理器不存在,请首先使用软件包管理器进行安装:

sudo-apt-get-install-nvidia容器运行时

然后将其添加到docker运行时:

这个选项对我很有用:

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

1.在基本系统上安装NVIDIA GPU的最新驱动程序。2.安装docker ce 19.03或更新版本。3.使用
--gpus all
开关启动容器。4.利润!请参见此处:分享一些经验:一些较老的项目依赖于已弃用的nvidia-docker2的接口选项,
--runtime nvidia
。选中的答案(install nvidia container runtime and edit/etc/docker/daemon.json)可以安装在新的nvidia docker toolkit之上,看起来与它兼容,并且只需一个非常小的包(Ubuntu上的600kB)就可以实现所需的向后兼容性。
$ docker info|grep -i runtime
 Runtimes: nvidia runc
 Default Runtime: runc