首页 > 解决方案 > NVIDIA Docker - 初始化错误:nvml 错误:未加载驱动程序

问题描述

我是 Docker 的新手,所以下面的问题可能有点幼稚,但我被困住了,我需要帮助。

我试图在研究中重现一些结果。作者刚刚发布了代码以及如何构建 Docker 映像以重现其结果的规范。相关位复制如下:

在此处输入图像描述

我相信我正确安装了 Docker:

$ docker --version
Docker version 19.03.13, build 4484c46d9d
$ sudo docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

但是,当我尝试检查我的nvidia-docker安装是否成功时,我收到以下错误:

$ sudo docker run --gpus all --rm nvidia/cuda:10.1-base nvidia-smi
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"process_linux.go:432: running prestart hook 0 caused \\\"error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: initialization error: nvml error: driver not loaded\\\\n\\\"\"": unknown.

看起来关键错误是:

nvidia-container-cli: initialization error: nvml error: driver not loaded

我在本地没有 GPU,我发现关于是否需要在 NVIDIA Docker 之前安装 CUDA 的信息相互矛盾。例如,这位 NVIDIA 版主说“正确的 nvidia docker 插件安装始于在基础机器上正确安装 CUDA”。

我的问题如下:

  1. 我可以在不安装 CUDA 的情况下安装 NVIDIA Docker 吗?

  2. 如果是这样,这个错误的根源是什么,我该如何解决?

  3. 如果没有,我如何创建这个 Docker 镜像来重现结果?

标签: dockernvidianvidia-docker

解决方案


  1. 我可以在不安装 CUDA 的情况下安装 NVIDIA Docker 吗?

是的你可以。自述文件指出nvidia-docker只需要安装 NVIDIA GPU 驱动程序和 Docker 引擎:

注意不需要在宿主系统上安装CUDA Toolkit,但是需要安装NVIDIA驱动

  1. 如果是这样,这个错误的根源是什么,我该如何解决?

那是因为您在本地没有 GPU,或者不是 NVIDIA,或者您在安装驱动程序时搞砸了。如果您有支持 CUDA 的 GPU,我建议您使用NVIDIA 指南安装驱动程序。如果您本地没有 GPU,您仍然可以使用 CUDA 构建图像,然后您可以将其移动到有 GPU 的地方。

  1. 如果没有,我如何创建这个 Docker 镜像来重现结果?

问题是,即使你设法摆脱了 Docker 映像中的 CUDA,也有需要它的软件。在这种情况下,修复 Dockerfile 在我看来是不必要的——您可以忽略 Docker 并开始修复代码以在 CPU 上运行它。


推荐阅读