NVIDIA GPU 出现 Docker 错误:尽管成功检测到 nvidia-smi 和驱动程序,但未找到 libnvidia-ml.so.1

问题描述 投票:0回答:1

我尝试在系统上运行 NVIDIA GPU 支持的 Docker 容器时遇到问题。尽管通过

nvidia-smi
成功检测到 NVIDIA 驱动程序和 GPU,但尝试使用命令
docker run --rm --gpus all ubuntu:18.04 nvidia-smi
运行 Docker 容器会导致以下错误:

docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy' nvidia-container-cli: initialization error: load library failed: libnvidia-ml.so.1: cannot open shared object file: no such file or directory: unknown.
Here's the output of nvidia-smi, showing that the NVIDIA drivers and GPUs are correctly detected and operational:
$ nvidia-smi
Thu Feb 22 02:39:45 2024
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.85.12    Driver Version: 525.85.12    CUDA Version: 12.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  NVIDIA RTX A5000    On   | 00000000:18:00.0 Off |                    0 |
| 30%   37C    P8    14W / 230W |  11671MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA RTX A5000    On   | 00000000:86:00.0 Off |                    0 |
| 55%   80C    P2   211W / 230W |  13119MiB / 23028MiB |     79%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

为了排除故障,我运行了 nvidia-container-cli -k -d /dev/tty info,这确认了 NVIDIA 库(包括 libnvidia-ml.so.525.85.12)已被检测到。但是,Docker 错误仍然存在,表明定位 libnvidia-ml.so.1 存在问题。

到目前为止,我已经尝试过:

重新安装 NVIDIA 驱动程序和 CUDA 工具包。 重新安装 NVIDIA Container Toolkit。 确保正确配置 Docker 和 NVIDIA Container Toolkit。 设置 LD_LIBRARY_PATH 以包含 NVIDIA 库的路径。 尽管做出了这些努力,问题仍然没有得到解决。我在 Linux 系统上运行,NVIDIA 驱动程序版本为 525.85.12。

是否有人遇到过类似的问题,或者可以提供有关可能导致此错误的原因以及如何解决的见解?我将非常感谢任何建议或指导。

我尝试过的:

  1. 运行具有 NVIDIA GPU 支持的 Docker 容器:您尝试通过命令

    docker run --rm --gpus all ubuntu:18.04 nvidia-smi
    使用 NVIDIA GPU 启动 Docker 容器。

  2. 检查 NVIDIA 驱动程序和 GPU 检测:您使用 nvidia-smi 来确保正确检测到 NVIDIA 驱动程序和 GPU 并在您的系统上运行。

  3. 使用 NVIDIA Container Toolkit 进行诊断:您运行了 nvidia-container-cli -k -d /dev/tty info 来诊断问题,这确认了 NVIDIA 库(包括 libnvidia-ml.so.525.85.12)已被检测到你的系统。

  4. 尝试的解决方案:

    • 重新安装 NVIDIA Container Toolkit 以确保与 Docker 正确集成。
    • 设置 LD_LIBRARY_PATH 以包含 NVIDIA 库的路径,尝试解决与库路径相关的任何问题。

您的期望:

  • 容器初始化成功:您期望 Docker 容器在 NVIDIA GPU 支持下成功初始化,从而允许您在容器内使用 GPU 资源。

  • 库检测问题的解决:您预计所采取的步骤将解决与 libnvidia-ml.so.1 检测相关的任何问题,确保 Docker 和 NVIDIA Container Toolkit 可以访问和利用必要的 NVIDIA 库。

  • Docker 中的操作 GPU 支持:最终,您希望这些故障排除步骤能够在 Docker 容器内启用无缝 GPU 支持,从而允许 GPU 加速的应用程序按预期运行。

预期结果与实际结果之间的差异(尽管已确认检测到 NVIDIA 驱动程序和库,但持续出现错误消息表明无法找到 libnvidia-ml.so.1)表明 Docker 和 NVIDIA 可能存在潜在问题集成设置、库路径,或者可能涉及所涉及的工具和驱动程序的特定版本。

docker nvidia nvidia-docker
1个回答
0
投票

您的主机使用什么发行版?通过 Ubuntu 的

ubuntu-drivers install
工具 安装的 NVIDIA 驱动程序也可能导致该问题。要解决此问题,您可能需要重新安装驱动程序。首先,需要卸载现有的驱动程序(特别是对于Ubuntu,对于其他发行版,请检查这里):

sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
 "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
sudo apt-get --purge remove "*nvidia*" "libxnvctrl*"
sudo apt-get autoremove

之后,强烈建议使用包管理器

apt
来重新安装驱动程序。以下是说明(仍适用于 Ubuntu 22.04,请查看here了解更多平台):

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
# To install the legacy kernel module flavor
sudo apt-get install -y cuda-drivers
# To install the open kernel module flavor of specific version
# sudo apt-get install -y nvidia-driver-550-open

Docker 支持

请注意,NVIDIA Container Toolkit 也已被之前的

apt-get --purge
命令卸载。您可以按照这些步骤重新安装它。

对于 Ubuntu 服务器版本

最好为您的服务器切换到HWE内核:

sudo apt-get install --install-recommends linux-generic-hwe-22.04

驱动程序还会默认为您安装 x11 组件。如果不需要桌面,您可以安装headless版本的驱动程序:

sudo apt-get install nvidia-headless-550
© www.soinside.com 2019 - 2024. All rights reserved.