最近,由于未关闭自动更新,导致NVIDIA驱动被自动升级至535.x版本,进而造成了执行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.
- Failed to initialize NVML: Driver/library version mismatch
因此无法正常调用显卡并进行模型训练。
解决方案
Ubuntu 20.04 LTS没有官方维护的Linux Kernel 6.x内核,因此通过升级至Ubuntu 22.04 LTS的方法安装新版本的内核。
首先,升级发行版前需要确保全部软件均为最新版,按序执行如下的命令:
shell
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
执行上述命令后需要确保全部软件包均完成了升级。我在处理该问题时发现如果apt源选择不正确的话会造成部分软件包无法升级,建议使用清华源、中科大源或者阿里源。
随后,执行Ubuntu自带的发行版升级命令,即:
shell
sudo do-release-upgrade
按照提示一步步进行即可。
完成更新后会提示需要重启,重启后使用uname -a
再次查看内核版本,此时很可能自动升级至了6.x内核;如果内核仍然停留在5.x,可以按照下面的步骤升级内核:
shell
# 查找可以使用的内核版本
sudo apt search linux-image
# 安装6.x内核,这里我选择的是6.5.0-41内核
sudo apt-get install linux-headers-6.5.0-41-generic linux-image-6.5.0-41-generic linux-modules-6.5.0-41-generic linux-modules-extra-6.5.0-41-generic -y
安装完成后会自动修改grub
设置以确保启动时加载正确的内核,此时建议重启系统看看内核有没有正确应用。此时,nvidia-smi
命令应该可以正常执行了。
为了避免上述问题再次出现,如果可以的话可以冻结内核更新和NVIDIA驱动更新,即:
shell
# 冻结内核更新
sudo apt-mark hold linux-generic linux-image-generic linux-headers-generic
# 冻结NVIDIA驱动更新
sudo apt-mark hold nvidia-driver-535
冻结内核更新可能存在安全隐患,按需执行!