nvidia-driver 설치된 상태에서 사용 중, 어느 순간 nvidia-smi 실행 시,
Failed to initialize NVML: Driver/library version mismatch 오류 발생할 때


상황

  • nvidia gpu가 장착된 ubuntu 서버
  • nvidia-driver 설치 후, gpu 사용
  • nvidia-smi 명령어 수행 시, Failed to initialize NVML: Driver/library version mismatch 오류 발생하며 동작하지 않음

    nvidia-error-01

원인

문제 확인

1
  dmesge

nvidia-error-02

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

    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-* 관련 패키지들이 자동으로 업데이트 되었다.

unattended-upgrades.log 에서 관련 내용을 찾을 수 없으면, 이전 log 파일(ex, log.1.gz 등을 확인해봄)

해결방안

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

    해당링크참조

nvidia module 삭제(재시작)

  • 이미 자동으로 업데이트 되어, 설치가 된 경우, 기존 모듈을 삭제하면 문제를 해결할 수 있다.
    1
    2
    
    # nvidia 커널 모듈 확인
    lsmod |grep nvidia
    

    nvidia-error-06

    1
    2
    3
    4
    5
    
    # 출력된 모듈 제거
    rmmod $모듈명
      
    # ex)
    rmmod nvidia_uvm
    
  • 아래와 같이 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

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