Search

[Linux] Failed to initialize NVML: Driver/library version mismatch 에러 해결

증상

nvidia-smi
Shell
복사
Failed to initialize NVML: Driver/library version mismatch NVML library version: 550.107
Shell
복사

원인

리눅스의 unattended-upgrade가 패키지를 자동 업데이트하면서 driver와 library의 버전 차이로 발생하는 에러.
커널 로그 확인
>>> sudo dmesg | grep -i nvrm
Shell
복사
[ 4.035082] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 550.90.07 Fri May 31 09:35:42 UTC 2024 [3368562.860885] NVRM: API mismatch: the client has the version 550.107.02, but NVRM: this kernel module has the version 550.90.07. Please NVRM: make sure that this kernel module and all NVIDIA driver
Shell
복사

해결방법 #1 - 재부팅

해결!

해결방법 #2 - nvidia 모듈 다시 로드하기

재부팅이 어려울 때 이를 시도해본다.
1.
로드되어있는 nvidia drive kernel 확인
lsmod | grep nvidia
Shell
복사
nvidia_uvm 4669440 0 nvidia_drm 94208 0 nvidia_modeset 1343488 1 nvidia_drm nvidia 54206464 2 nvidia_uvm,nvidia_modeset drm_kms_helper 311296 5 drm_vram_helper,ast,nvidia_drm drm 622592 8 drm_kms_helper,drm_vram_helper,ast,nvidia,drm_ttm_helper,nvidia_drm,ttm
Shell
복사
2.
커널들 unload
sudo rmmod nvidia_drm sudo rmmod nvidia_modeset sudo rmmod nvidia_uvm sudo rmmod nvidia
Shell
복사
# 만약 rmmod: ERROR가 뜬다면 - # nvidia 관련 process kill sudo lsof /dev/nvidia*
Shell
복사
Unload 확인하기
lsmod | grep nvidia # 아무것도 출력되지 않으면 정상
Shell
복사
3.
다시 nvidia-smi 실행하기
nvidia-smi
Shell
복사
Sun Sep 15 07:13:24 2024 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 550.107.02 Driver Version: 550.107.02 CUDA Version: 12.4 | |-----------------------------------------+------------------------+----------------------+ | 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 RTX A6000 Off | 00000000:01:00.0 Off | Off | | 30% 32C P0 72W / 300W | 1MiB / 49140MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 1 NVIDIA RTX A6000 Off | 00000000:2D:00.0 Off | Off | | 30% 40C P0 71W / 300W | 1MiB / 49140MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 2 NVIDIA RTX A6000 Off | 00000000:41:00.0 Off | Off | | 30% 33C P0 77W / 300W | 1MiB / 49140MiB | 2% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 3 NVIDIA RTX A6000 Off | 00000000:61:00.0 Off | Off | | 30% 35C P0 77W / 300W | 2MiB / 49140MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+
Shell
복사

해결방법 #3 - 예방하기

이런 상황을 방지하기 위해 unattended-upgrade을 막아둔다.
linux의 security update를 위해 자동 업데이트 되는 것으로 nvidia 관련한 upgrade만 막아둔다.
/etc/apt/apt.conf.d/50unattended-upgrades 파일 아래에 Blacklist 추가
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Shell
복사
Unattended-Upgrade::Package-Blacklist { "nvidia-*."; }
Shell
복사