问题描述:
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博客