본문 바로가기

공부/컴퓨터

NVIDIA GPU에서 nvidia-smi 명령시 NVML: Driver/library version mismatch 발생 원인은 아마도?

Kubernetes의 Node에 GPU Pod가 뜰 때, 문제가 계속 발생하네?

  • GPU를 사용하는 Pod가 떠 있을때는 문제가 안 됐는데, 가끔씩 새로 띄울때 Pod가 안 뜨는 문제가 있었다.
  • 주로 이런 경우 nvidia-smi 명령을 치면 아래와 같은 에러 메세지가 떴었다.

Failed to initialize NVML: Driver/library version mismatch
  • 단순히 에러 메세지로만 보면, 드라이버와 라이브러리가 매치 되지 않는다는건데, 난 서버에 아무런 짓도 안 해 줬는데도 에러가 생기는 것이다.
  • 약 1년전부터 가끔 발생한 문제였는데, 이것저것 찾아 보았지만, 다들 재부팅하면 해결 될 거라는 이야기만...
  • stackoverflow.com/questions/43022843/nvidia-nvml-driver-library-version-mismatch

  • 서비스를 운영하는데 노드들을 아무렇지도 않게 재부팅하는것도 문제가 있고, 여러 노드가 한꺼번에 저 문제가 생기면, 다른 노드로 가서 붙어야할 GPU Pod들이 같은 문제로 인해서 안 뜨는 문제가 생길 것이다.
  • 그런데 다들 왜 해결책만 있고, 그 원인을 이야기 하지 않을까?

mismatch 가 나는 이유는? nvidia-smi 를 살펴 보자.

  • 기존에는 잘 동작하던 것들이 mismatch가 나는 이유는, 말 그대로 mismatch 상태가 되었기 때문일 거다.
  • 분명 누군가가 무언가를 바꾸었기 때문에 mismatch 상태가 되었을 것이다라고 예측했다.
  • 누가 nvidia-smi 파일을 바꿔치기 했나? 싶어 stat /usr/bin/nvidia-smi 명령을 통해 nvidia-smi 명령의 파일 상태를 확인해 보았다.

  • 으잉?? 왜 Modify 시간이... 3월 30일이지? 난 이 서버를 껐다 킨적도 없는데? history 명령을 이용해서 그간의 실행 기록을 살펴 봤지만, 아무도 그래픽 관련 무언가를 손 댄 적이 없다.
  • 도대체 누구의 소행인가?

재부팅을 하지 않아도 업데이트를 하네? - unattended-upgade

  • 내가 저 파일을 손대지 않았는데, Modify 시간이 최근으로 달라졌다는것은.. 누군가가 업데이트 했다는것이다.
  • 그래서 업데이트 관련해서 찾아 봤더니 unattended-upgade라는게 있네?
  • 이 놈이 자동 업데이트를 해 주고, 시큐리티 패치들을 알아서 적용해 준다고 한다. 그리고 적용된 내용들을 /var/log/unattended-upgrades.log에 남겨 둔다고 한다.
  • 그 내용중 일부는 아래와 같다.

  • 으잉? 이렇게 많은 업그레이드를 알아서 하네? 아마도 이 업그레이드 때문에 이 문제가 생긴게 아닌가 한다.

해결책은?

  • 안정적인 서버에서 드라이버를 업데이트하면, 기존에 동작하던것들이 동작을 안 할 수 있기 때문에, 업데이트를 막아 주는것이 좋다.
  • 그리고 unattended-upgade 를 끄면 될 것으로 예상된다. 그럼 자동 업데이트도 없을테니깐?
  • 여기에 대한 글은 아래 링크를 확인해 보자.
  • https://chrisalbon.com/deep_learning/setup/prevent_nvidia_drivers_from_upgrading/

  • 위에 있는것을 그대로 적용하면 각종 시큐리티 패치가 자동으로 되지 않으므로, 적당히 수정해 주어야 한다.
  • 오래된 글이지만 아래 링크에 가 보면, "환경이 깨지는것을 방지할 수 있도록" Blacklist를 올려둔 사람이 있으니 그것을 참고하면 더 좋겠다.
  • forums.linuxmint.com/viewtopic.php?p=1098633#p1098633
  • 그 사람의 예에 따르면 아래와 같이 작성하면 될 듯하다. 아님 말고. ㅎ.