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

koaltpgm  于 2023-03-07  发布在  Docker
关注(0)|答案(2)|浏览(341)

我正在GCP上运行一个带有特斯拉GPU的虚拟机。并尝试部署一个基于PyTorch的应用程序来加速它。

我想让Docker使用此GPU,可以从容器访问它。

我设法在主机上安装了所有驱动程序,应用程序在那里运行良好,但当我尝试在Docker(基于nvidia/cuda container)中运行时,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问题-没有帮助。

k5ifujac

k5ifujac1#

您需要的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
mzillmmw

mzillmmw2#

作为对@Viacheslav Shalamov答案的更新,nvidia-container-runtime包现在是nvidia-container-toolkit的一部分,nvidia-container-toolkit还可以通过以下方式安装:

sudo apt install nvidia-cuda-toolkit

然后按照上面相同的指令将nvidia设置为默认运行时。

相关问题