nvidia-smi 실행 시, Driver/library version mismatch 오류
nvidia-driver 설치된 상태에서 nvidia-smi 실행 시, Failed to initialize NVML: Driver/library version mismatch 오류가 발생할 때의 해결 방법을 작성한다.
[01] 상황
- nvidia gpu가 장착된 ubuntu 서버
- nvidia-driver 설치 후, gpu 사용
-
nvidia-smi 명령어 수행 시, Failed to initialize NVML: Driver/library version mismatch 오류 발생하며 동작하지 않음

[02] 원인
2-1. 문제 확인
1
dmesg

- NVRM: API mismatch … 오류 메시지
- 클라이언트의 버전은 470.103.01인데, 커널 모듈 버전은 470.86
- 리눅스의 unattended-upgrade가 보안 관련 패키지를 자동으로 업데이트하여 버전 간 차이가 발생
2-2. unattended-upgrade 수행 목록 확인
1
cat /var/log/apt/history.log

1
view /var/log/unattended-upgrades/unattended-upgrades.log.1.gz


- log 파일의 내용을 보면 2022-02-08에 libnvidia-* 관련 패키지들이 자동으로 업데이트 되었다.
unattended-upgrades.log 에서 관련 내용을 찾을 수 없으면, 이전 log 파일(ex, log.1.gz 등)을 확인해본다.
[03] 해결방안 1: unattended-upgrade 방지
unattended-upgrade의 대상 패키지에서 nvidia 관련 패키지를 제외한다.
/etc/apt/apt.conf.d/50unattended-upgrades 파일 수정:
1
2
3
4
5
6
# ubuntu 20.04 기준
# /etc/apt/apt.conf.d/50unattended-upgrades 파일에 아래 내용 추가
Unattended-Upgrade::Package-Blacklist {
"nvidia-*.";
}

참조: 해당링크참조
[04] 해결방안 2: nvidia module 삭제(재시작)
이미 자동으로 업데이트 되어, 설치가 된 경우, 기존 모듈을 삭제하면 문제를 해결할 수 있다.
4-1. nvidia 커널 모듈 확인
1
lsmod |grep nvidia

4-2. 모듈 제거
1
2
3
4
5
# 출력된 모듈 제거
rmmod $모듈명
# ex)
rmmod nvidia_uvm
아래와 같이 ERROR: Module nvidia_drm is in use 오류가 발생하면 관련 프로세스를 종료한다.

1
2
3
4
5
6
# nvidia 사용 프로세스 확인 및 종료
lsof /dev/nvidia*
kill -9 $PID
# ex)
kill -9 449143

4-3. 결과 확인
모듈이 자동으로 재업로드되어 nvidia-smi 명령어가 정상 작동함
