목차
문제
딥러닝 모델 학습을 실행 후에 GPU의 상태를 확인하고 싶어 nvidia-smi 명령어를 사용하는 경우가 있습니다.
$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch
그러나 nvidia-smi
사용시 때대로 위와 같은 메시지와 함께 실패하는 상황을 마주하는 경우가 있습니다. 이러한 현상은 주로 Nvidia 관련 드라이버들이 업데이트 되면서 드라이버 및 라이브러리의 버전이 맞지 않아 발생하는 문제입니다.
해결 방법
1. 먼저 lsmod | grep nvidia
명렁어를 이용하여 로드된 Nvidia 관련 커널들을 확인합니다.
$ lsmod | grep nvidia
nvidia_uvm 1032192 0
nvidia_drm 61440 12
nvidia_modeset 1200128 5 nvidia_drm
nvidia 35315712 409 nvidia_uvm,nvidia_modeset
drm_kms_helper 237568 1 nvidia_drm
drm 548864 16 drm_kms_helper,nvidia,nvidia_drm
2. 이후 아래의 순서대로 관련 커널들을 내려줍니다.
$ sudo rmmod nvidia_drm
$ sudo rmmod nvidia_modeset
$ sudo rmmod nvidia_uvm
$ sudo rmmod nvidia
그러나 아마도 90% 이상의 확률로 아래와 같은 에러 메시지를 보게 될 것입니다. 이러한 문제는 커널간의 의존성으로 인해 다른 커널에서 내리고자 하는 커널을 잡고 있다면 해당 커널을 내릴 수가 없기 때문에 발생합니다.
$ sudo rmmod nvidia_drm
rmmod: ERROR: Module nvidia_drm is in use
따라서 위와 같은 에러 메시지를 확인했다면, root 계정으로 변경후에 아래의 명령어들을 실행 시켜준 후 다시 본인 계정으로 로그인합니다.
$ su root
# systemctl isolate multi-user.target
# modprobe -r nvidia-drm
# systemctl start graphical.target
# su <본인 계정>
이후에 아래의 명령어(위에서 실패 했던)를 다시 실행합니다. 명령어 실행시 아무것도 뜨지 않거나 lsmod | grep nvidia
명령어 실행시 아무것도 뜨지 않는다면 성공한 것 입니다.
$ sudo rmmod nvidia_drm
$ sudo rmmod nvidia_modeset
$ sudo rmmod nvidia_uvm
$ sudo rmmod nvidia
3. 최종 적으론 nvidia-smi
명령어를 실행하여 Nvidia 관련 커널들을 다시 로드 해 줍니다.
$ nvidia-smi