当出现错误”Failed to initialize NVML: Driver/library version mismatch”时的解决方法备忘录
概述
运行nvidia-smi时出现了以下之前未发生过的错误。
$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch
环境
-
- OS: Ubuntu22.04
- グラフィックボード: GeForce RTX 2060 SUPER(12G)
理由
刚刚重新启动后,错误内容如下所示已经发生了变化。
$ nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
从错误消息来看,可以认为”Nvidia驱动程序”已经在不知不觉中升级,导致图形版支持了不支持的版本。请检查日志。
$cat /var/log/apt/history.log |grep Upgrade|grep nvidia
Upgrade: libnvidia-common-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-fbc1-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-fbc1-530:i386 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-gl-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-gl-530:i386 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-extra-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), nvidia-compute-utils-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), nvidia-dkms-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), nvidia-driver-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-encode-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-encode-530:i386 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), nvidia-utils-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), xserver-xorg-video-nvidia-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-decode-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-decode-530:i386 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), nvidia-kernel-common-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-cfg1-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), nvidia-kernel-source-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-compute-530:amd64 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1), libnvidia-compute-530:i386 (530.30.02-0ubuntu1, 535.113.01-0ubuntu0.22.04.1)
从日志中可以看出,在这种情况下,从”nvidia-driver530″升级到”nvidia-driver535″,这可能是原因。
解决方案
卸载
$sudo apt --fix-broken install
$sudo apt remove *nvidia* --purge
重新安装NVIDIA驱动程序。
$sudo apt install nvidia-driver-535
$sudo reboot
如果驱动版本为535.129.03或更高,则在重新启动后将正常运行。
$nvidia-smi
Sat Oct 7 18:24:06 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.129.03 Driver Version: 535.129.03 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| 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 GeForce RTX 2060 On | 00000000:01:00.0 On | N/A |
| 41% 35C P2 39W / 184W | 690MiB / 12288MiB | 3% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
额外信息:重新安装 nvidia-toolkit
由于同时卸载了NVIDIA Container Toolkit,因此请参考官方指南进行重新安装。
$curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list \
&& \
sudo apt-get update
$sudo apt-get install -y nvidia-container-toolkit
如果输出如下,请输入 “y”。
ファイル'/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg'は既に存在します。 上書きしますか? (y/N) y
重新启动
$sudo reboot
おまけ 自動更新の無効化
【Ubuntu】パッケージの自動更新を無効にするの記事を参考に自動更新を無効にしました。
sudo 権限で”/etc/apt/apt.conf.d/20auto-upgrades”を開き、下記のように変更することで、自動アップグレードを防ぐことができます。(他のツールも手動アップグレードが必要になるので注意してください)
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "0";
2行目のUnattended-Upgradeが’1’の場合に、自動でパッケージがアップグレードがされるので’0’に変更しております。
参考
本記事は下記のサイトを参考にしました。
-
- Installing the NVIDIA Container Toolkit
-
- 【Ubuntu】パッケージの自動更新を無効にする
- サーバー運用時のエラー
まとめ
本記事では “Failed to initialize NVML: Driver/library version mismatch” というエラーが発生した際の対処方法のメモを記載しました。