티스토리 뷰

반응형

GPU가 장착되어 있는 딥러닝 서버를 사용하다 보면 다양한 오류를 보게 된다. 보통은 GPU를 사용하는 프로그램에서 문제가 생기거나 해당 프로그램을 강제 종료하는 등의 사용자 동작으로 인해 문제가 발생하는 경우가 대부분이지만, 이번에 발생한 Failed to initialize NVML: Driver/library version mismatch 문제는 아무 원인이 없었는데도 갑자기 발생하였다. 따라서 문제의 원인을 찾기가 곤란하였다. 놀랍게도 해당 문제의 원인은 ubuntu의 자동 업데이트였는데, 다시 한번 컴퓨터의 복잡함을 느낄 수 있었다. 대부분 서버에서 자동 업데이트 설정을 바꾸지 않는 경우가 많기 때문에 비슷한 문제가 많이 발생할 것으로 생각되어 문제 해결 방법을 공유하여 서버 관리자들에게 도움이 되고자 한다.

원인

자동 업데이트로 현재 로드된 library와 디스크에 설치된 library의 버전이 안맞아서 발생하는 문제로 보인다.

해결 방안

우선 ubuntu의 자동 업데이트를 꺼두어야 한다. 아래 파일을 열어서 Update-Package-Lists 변수 값을 1에서 0으로 변경한다.

$ vim /etc/apt/apt.conf.d/20auto-upgrades

그 뒤 rmmod 명령어로 로드된 nvidia 관련 모듈을 unload 해주어야 한다. unload가 되지 않으면 lsof 명령어로 모듈을 사용중인 process를 찾아서 kill 명령어로 내려주어야 한다.

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm
sudo rmmod nvidia

rmmod: ERROR: Module nvidia is in use by: ... 라는 오류로 위의 명령어가 동작하지 않는 경우 아래의 명령어를 사용하여 nvidia 관련 모듈을 사용하는 프로세스들을 종료해준다.

sudo lsof /dev/nvidia* | awk '{if(NR>1) print $2}' | sudo xargs kill -9

이제 다시 위의 rmmod 명령어를 사용하여 nvidia 관련 모듈을 unload한다.

반응형
댓글