Failed to initialize NVML: 문제 해결 하기

nvidia-smi

문제

딥러닝 모델 학습을 실행 후에 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

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤