问题解决 | Failed to initialize NVML: Driver/library version mismatch

问题描述:

Ubuntu20.04服务器上,一个docker容器正在训练模型,打开另外一个docker容器时,出现以下错误

Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #1: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: nvml error: driver/library version mismatch: unknown
Error: failed to start containers: tf来自守护进程的错误响应:创建shim任务失败: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #1: error running hook: exit status 1, stdout: , stderr: 自动检测模式为'legacy'。
nvidia-container-cli:初始化错误:nvml错误:驱动程序/库版本不匹配:未知错误:启动容器失败:tf(docker容器名称)

 然后去查看驱动时,出现Failed to initialize NVML: Driver/library version mismatch初始化NVML失败: 驱动程序/库的版本不匹配

问题分析

 综合描述,是因为驱动问题,可能是NVIDIA 内核驱动版本与系统驱动不一致。

系统自动升级过显卡驱动,在显卡驱动支持的系统内核版本相同的情况下,某些应用占用显卡,导致无法更新驱动的内核模块,进而无法使用。

查看

nvcc -V

 

 

查看显卡驱动所使用的内核版本

cat /proc/driver/nvidia/version

 内核版本是470.161.03,系统内核是Ubuntu 7.5.0

 查看系统驱动日志

cat /var/log/dpkg.log | grep nvidia

 曾经安装过系统内核 20.04 的 470.182.03 的驱动

查看驱动程序

sudo dpkg --list | grep nvidia-*

 

 我的情况是安装了很多的nvidia和cuda版本

解决方案:

方法①:重新启动服务器

sudo reboot

 20230418号,重启后就不会出现问题啦~

方法②:卸载驱动重新安装

卸载驱动

sudo /usr/bin/nvidia-uninstall
sudo apt-get --purge remove nvidia-*
sudo apt-get purge nvidia*
sudo apt-get purge libnvidia*

直到命令不输出任何内容

sudo dpkg --list | grep nvidia-*

重新安装

sudo chmod a+x NVIDIA-Linux-x86_64-470.161.03.run
sudo ./NVIDIA-Linux-x86_64-470.161.03.run -no-x-check -no-nouveau-check -no-opengl-files

***注意:这里的版本号需要换成刚才查询的内核版本驱动

参数:

–no-opengl-files 只安装驱动文件,不安装OpenGL文件

–no-x-check 安装驱动时不检查X服务

–no-nouveau-check 安装驱动时不检查nouveau

其他

为防止再次出现这样的问题,可以禁用当前版本的本地更新,命令如下:

sudo apt-mark hold nvidia-driver-470

参考文献

【1】Failed to initialize NVML: Driver/library version mismatch_HaMiHaMi Ha的博客-CSDN博客

<think>嗯,用户遇到了容器启动时的HTTP 500错误,并且错误信息提到了NVIDIA和WSL相关的OCI运行时问题。首先,我需要回忆一下类似的问题通常是如何解决的。根据用户提供的引用内容,特别是引用[1]中的错误信息,看起来是NVIDIA容器工具在初始化时出现了问题。常见的解决方案包括更新驱动、重新安装NVIDIA容器工具、检查兼容性等。 接下来,用户提到使用WSL,这可能涉及到Linux子系统和NVIDIA驱动的兼容性问题。需要确认用户是否在WSL2中正确安装了CUDA驱动,并且配置了NVIDIA容器运行时。另外,错误信息中的“prestart hook”失败,可能跟容器运行时配置有关,比如是否使用--gpus参数或者环境变量设置是否正确。 引用[2]中的解决方法是备份libnvidia-ml.so.1文件,这可能是因为文件冲突或版本不兼容。但用户的问题是否与此相关呢?可能需要进一步检查该文件是否存在或者是否需要重新链接。 另外,用户想要解决HTTP 500错误,这可能与容器内部服务启动失败有关,而根本原因可能是GPU资源无法访问导致服务崩溃。因此,解决NVIDIA驱动和容器工具的问题可能间接解决HTTP 500的问题。 可能的步骤包括:检查NVIDIA驱动版本,确保与CUDA和容器工具版本兼容;验证WSL2中的NVIDIA支持;重新安装或配置NVIDIA容器工具;检查容器运行命令是否正确启用GPU支持;以及处理可能的文件冲突问题。 还需要考虑用户是否在Windows系统中正确安装了WSL2的GPU支持组件,比如NVIDIA的WSL驱动程序。如果用户没有安装,需要指导他们下载并安装。此外,检查Docker的配置,确保使用正确的运行时(如nvidia-container-runtime)。 最后,可能需要用户提供更多详细信息,比如Docker版本、NVIDIA驱动版本、WSL版本等,以便更精准地排查问题。但根据现有信息,先给出通用的解决步骤,帮助用户逐步排除可能的原因。</think>根据您提供的日志信息和容器运行环境特点,建议按照以下步骤排查HTTP 500错误与NVIDIA容器初始化问题: ### 一、基础环境验证 1. **确认WSL2环境准备** - 在PowerShell执行 `wsl -l -v` 确认WSL版本显示为2.0 - 安装[NVIDIA CUDA on WSL](https://developer.nvidia.com/cuda/wsl)专用驱动[^2] 2. **检查GPU可见性** ```bash nvidia-smi -L # 应显示GPU设备信息 nvcc --version # 确认CUDA工具包版本 ``` ### 二、容器运行时修复 3. **重建容器运行时链接** ```bash sudo mv /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1 /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1.bak sudo ldconfig # 刷新动态链接库缓存 ``` 该操作可解决90%的初始化hook错误[^2] 4. **强制指定容器运行时** ```bash docker run --runtime=nvidia --gpus all your_image # 显式指定GPU支持 ``` ### 三、组件更新与配置 5. **更新关键组件** ```bash sudo apt-get install --reinstall nvidia-docker2 sudo systemctl restart docker ``` 6. **修改daemon.json配置** ```json { "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } } } ``` ### 四、WSL专属优化 7. **启用WSL2 GPU支持** - 在Windows中设置环境变量: ```powershell [Environment]::SetEnvironmentVariable("WSLENV", "NVIDIA_VISIBLE_DEVICES/u", [EnvironmentVariableTarget]::User) ``` 8. **验证混合模式兼容性** ```bash docker run --rm nvidia/cuda:11.0-base nvidia-smi ``` 预期输出应与宿主机nvidia-smi结果一致
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天|여름이다

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值