无法初始化 NVML:驱动程序/库版本不匹配 - 故障排除

简介

在使用GPU服务器的过程中,你可能遇到过这样的问题:nvidia-smi 昨天还好好的,今天突然出错了。

$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch

出现此问题的原因是NVIDIA驱动库版本与系统内核模块不一致。要修复此问题,我们只需删除当前的 nvidia 驱动程序并重新安装正确的 NVIDIA 驱动程序版本即可。我们可以参考以下步骤来修复这个错误。

如何修复“无法初始化 nvml:驱动程序/库版本不匹配”错误

步骤1:检查内核版本

使用命令行查询当前显卡驱动使用的内核版本

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  535.129.03  Thu Oct 19 18:56:32 UTC 2023
GCC version:  gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)

NVRM版本内核模块为535.129.03,系统内核为22.04。

步骤2:删除 Nvidia 驱动程序

让我们清除包括 nvidia-common 在内的所有 NVIDIA 软件包,运行以下命令。

$ sudo apt purge nvidia-* 
$ sudo apt purge libnvidia-*

如果相关包已被清除,则以下命令的输出将为空。

$ dpkg -l | grep -i nvidia

步骤3:查找可用的驱动程序版本

我们可以使用Ubuntu自带的驱动管理工具ubuntu-drivers devices来查询当前版本Ubuntu推荐的驱动。

$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:08.0/0000:03:00.0 ==
modalias : pci:v000010DEd000013BBsv000010DEsd00001098bc03sc00i00
vendor   : NVIDIA Corporation
model    : GM107GL [Quadro K620]
driver   : nvidia-driver-535 - distro non-free recommended
driver   : nvidia-driver-450-server - distro non-free
driver   : nvidia-driver-390 - distro non-free
driver   : nvidia-driver-525 - distro non-free
driver   : nvidia-driver-525-server - distro non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-470 - distro non-free
driver   : nvidia-driver-535-server - distro non-free
driver   : nvidia-driver-418-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

输出结果如上,有一行出现了“recommended”,说明系统推荐了这个驱动,即nvidia-driver-535。

步骤 4:重新安装正确的驱动程序

要安装推荐的驱动程序,请运行以下命令。

$ sudo apt install nvidia-driver-535

另外,您还可以执行以下命令来自动安装推荐版本的驱动程序。此时,机器上会自动安装上述推荐版本的驱动程序。

$ sudo ubuntu-drivers autoinstall

步骤5:重新启动系统

重新启动计算机以使更改生效。

$ sudo reboot

步骤6:验证问题是否已修复

最后,在我们重新启动机器后,请输入以下命令测试驱动安装。如下图所示,可以看到推荐版本的驱动安装成功。

$ nvidia-smi
nvidia smi k620