반응형
문제상황
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
반응형
'서버 및 환경 > Utils' 카테고리의 다른 글
[Kafka] 클라이언트와 서버간 time zone 문제 (Negative message latency=-32376435 ms) (1) | 2024.10.22 |
---|---|
[FastAPI] 딕셔너리 내 null 값을 return 하는 법 (0) | 2024.05.17 |
[Airflow] retry와 상관없이 특정 시간 이후 task fail시키기 (0) | 2024.03.28 |
[conda] base 환경은 다른 가상환경 패키지에 모두 영향을 미친다! (0) | 2024.03.20 |
[Docker] 컨테이너 내 pip 패키지 설치 시 RuntimeError 문제 (1) | 2024.02.28 |