Jost Do It.

그냥 IT해.

서버 및 환경/Utils

[Docker] 컨테이너 No CUDA GPUs are available 에러 발생 해결방법

그냥하Jo. 2024. 4. 4. 13:05
반응형

문제상황

nvidia-docker2를 설치하고 컨테이너 내부에서 GPU접근을 가능하게 하였다.

그런데 데스크톱을 재부팅해서 torch 모듈을 실행하니 다음 에러가 발생했다.

RuntimeError: No CUDA GPUs are available

 

 

컨테이너 내부에서 nvidia-smi 명령을 해보니 다음과 같은 에러도 발생한다.

nvidia-smi
>>> Failed to initialize NVML: Unknown Error

 

 

문제 원인

호스트가 systemd를 사용해 container의 cgroup을 관리하는 경우, Nvidia GPU를 참조하는 유닛파일들이 reload될 수 있다.

여기서 유닛파일들이 reload되면 컨테이너는 reload 된 유닛파일에 대한 접근권한이 없기 때문에 발생하는 에러이다.

컨테이너를 재실행하는 경우 일시적으로 해결될 수 있지만 유닛파일이 reload될 때마다 해당 컨테이너는 GPU에 대한 접근권한을 잃어버린다.

 

해결 방법

 

1. 호스트 터미널에서 nvidia 컨테이너와 관련된 cgroup 설정을 변경해준다.

  • sudo vim /etc/nvidia-container-runtime/config.toml -> no-cgroups = false로 변경하고 저장

 

2. 도커 데몬 재실행

  • sudo systemctl restart docker

 

3. 컨테이너 내에서 정상적으로 nvidia-smi 명령어가 동작하는지 확인

 

 

Reference

반응형