Nvidia-smi 运行失败(Failed to initialize NVML: Driver/library version mismatch)
问题排查
在linux服务器上运行 nvidia-smi 命令,提示以下错误:
Failed to initialize NVML: Driver/library version mismatch
首先查看内核驱动版本:
cat /proc/driver/nvidia/version
然后查看当前NVIDIA驱动版本:
sudo dpkg --list | grep nvidia-*
发现两个驱动版本不一致。
通过排查日志,可以发现原因是早上6点多,服务器上的nvidia自动更新了,把原来535.54.03版本升级到了534.230.002,导致跟内核版本不一致。
cat /var/log/dpkg.log | grep nvidia
解决方案
第一步、重启
在实践中,很多时候只需要重启就能解决。
sudo reboot
如果重启后能成功启动 nvidia-smi
,恭喜你解决了。
如果重启不生效,那么可以继续往下看。
第二步、删除现有显卡驱动
如果出现提示选择,选yes/Y一直往下操作就行。
sudo /usr/bin/nvidia-uninstall
sudo apt-get purge nvidia-*
sudo apt-get autoremove *
第三步、重新安装驱动
这里采取官方推荐的ppa安装方式,仅需要命令行操作。
1、查看本机支持的驱动版本
比如之前安装的是535版本,现在依旧选择 nvidia-driver-535-server
ubuntu-drivers devices
2、添加官方 PPA 仓库并更新
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
3、安装535版本的驱动
sudo apt install nvidia-utils-535-server
sudo apt install nvidia-driver-535-server
4、重启
sudo reboot
第四步、检验是否成功
执行命令 nvidia-smi
可以正常运行,并且显卡驱动版本也更新到535.247.01。
检查下新驱动版本:
dpkg --list | grep nvidia-*
和内核版本是否一致:
cat /proc/driver/nvidia/version
可以看到这次版本一致了。
第五步、禁用驱动自动更新
为了防止下次服务器自动更新驱动版本,需要禁用当前版本的自动更新:
sudo apt-mark hold nvidia-driver-535-server
日后如果需要取消禁用,首先查看下当前被锁定的包:
sudo apt-mark showhold | grep nvidia
如果只取消某个具体包的锁定(例如 nvidia-driver-535):
sudo apt-mark unhold nvidia-driver-535
如果需要取消所有 NVIDIA 相关包的锁定:
sudo apt-mark unhold $(apt-mark showhold | grep nvidia)
参考资料
- deepseek
- https://zhuanlan.zhihu.com/p/659149736
- https://blog.csdn.net/a772304419/article/details/146601092