Ubuntu 상에서 PyTorch, TensorFlow 에서 CUDA GPU 인식 안될 때

Composite·2024년 8월 5일
1
post-thumbnail
post-custom-banner

TL;DR

먼저 nvidia-smi 명령어를 쳐본다.

대충 이렇게 뜨다가, MIG Devices 라는 항목이 보이는 사용자 대상으로 팁을 올린다.
몇몇 사용자는 나처럼 MIG Devices 에 아무것도 표시가 안되어 있는 경우가 있다.

이 경우, GPU가 없는 것으로 취급되어 뭔 짓을 해도 GPU 인식을 못해 GPU 관련 프로세스가 돌아가지 않을 것이다.
내가 보기엔 주로 사설이나 몇몇 GPU Cloud 에서 보이는 증상으로 보인다. 즉, 가상 환경에서
아, MIG가 뭐냐고? Multi Interface GPU 약자다. 걍 그 약자일 뿐이다.
주로 GPU를 여러대 설치할 경우 목록에 뜨는 게 정상인데, 이게 환경에 따라서 단일 드라이버임에도 불구하고
왜인지 MIG 목록이 아예 없는 목록이 뜨는 환경이 되는 경우가 있다.

어쨌든, 결론은, GPU 프로세싱 라이브러리에서는 MIG 목록이 있을 경우, MIG 등록된 장치를 우선적으로 확인하여 실행한다.
만약 MIG 장치 목록이 빈 목록이면, 라이브러리는 GPU가 없는 것으로 오해하고 GPU 초기화 오류를 발생시킨다.

해결 방법은 간단하다. 여러분의 장비 환경이 "확실히" 여러개 GPU가 없다는 확신이 들 경우,
앞뒤 보지 말고 아래 명령어를 친다.

sudo nvidia-smi -mig 0
sudo reboot now

당연하겠지만 재부팅해야 적용되니, 두번째 명령어를 통해 재부팅하여 적용한다.
재부팅 후 다시 nvidia-smi 명령어 쳐서 아래와 같이 MIG Devices 목록이 아예 안보인다면,

해결 완료다. 다시한번 말하지만, 당신의 컴퓨터 환경에 있는 GPU 장비가 반드시 하나 있을 때임을 확신하고 수행해야 한다는 것이다.
물론 여러 GPU 장비가 있는데 이런 실수했다면, 걱정 마시라. 아래 명령어를 통해 원래대로 돌리면 된다.

sudo nvidia-smi -mig 1
sudo reboot now

당연하겠지만 적용 후 재부팅은 필수다.

혹시 나같이 이런 병신같은 환경에서 torch.cuda.is_available() 함수 결과가 죽었다 깨어나도 False 가 나와 3일간 고생한 나같은 병신새끼들을 위해 이 글을 바친다.

끗.

profile
지옥에서 온 개발자
post-custom-banner

0개의 댓글