:bulb: 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 오류 발생하며 동작하지 않음

    nvidia-error-01

[02] 원인

2-1. 문제 확인

1
dmesg

nvidia-error-02

  • NVRM: API mismatch … 오류 메시지
  • 클라이언트의 버전은 470.103.01인데, 커널 모듈 버전은 470.86
  • 리눅스의 unattended-upgrade가 보안 관련 패키지를 자동으로 업데이트하여 버전 간 차이가 발생

2-2. unattended-upgrade 수행 목록 확인

1
cat /var/log/apt/history.log

nvidia-error-03

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

nvidia-error-04

nvidia-error-05

  • log 파일의 내용을 보면 2022-02-08에 libnvidia-* 관련 패키지들이 자동으로 업데이트 되었다.

:bulb: 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-*.";
}

이미지 41

:small_blue_diamond:참조: 해당링크참조

[04] 해결방안 2: nvidia module 삭제(재시작)

이미 자동으로 업데이트 되어, 설치가 된 경우, 기존 모듈을 삭제하면 문제를 해결할 수 있다.

4-1. nvidia 커널 모듈 확인

1
lsmod |grep nvidia

nvidia-error-06

4-2. 모듈 제거

1
2
3
4
5
# 출력된 모듈 제거
rmmod $모듈명

# ex)
rmmod nvidia_uvm

:warning: 아래와 같이 ERROR: Module nvidia_drm is in use 오류가 발생하면 관련 프로세스를 종료한다.

nvidia-error-07

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

# ex)
kill -9 449143

nvidia-error-08

4-3. 결과 확인

모듈이 자동으로 재업로드되어 nvidia-smi 명령어가 정상 작동함

nvidia-error-09