증상
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
복사