도찐개찐
[Docker] No CUDA GPUs are available 본문
Issue
- Docker container 만들고 처음엔 학습이 됐는데 갑자기 No CUDA GPUs are available
- nvidia-smi 찍어보면 Failed to initialize NVML: Unknown Error in Docker after Few hours
호스트가 데몬 다시 로드(또는 유사한 활동)를 수행합니다. 컨테이너가 systemd를 사용하여 cgroup을 관리하는 경우 daemon-reload는 "NVIDIA GPU에 대한 참조가 있는 모든 유닛 파일을 다시 로드하도록 트리거합니다." 그러면 컨테이너가 다시 로드된 GPU 참조에 액세스할 수 없게 됩니다.
문제로 인해 문제가 발생했는지 확인하는 방법 :
컨테이너에 여전히 GPU 액세스 권한이 있는 경우 " host " 터미널을 열고 실행합니다.
$ sudo systemctl daemon-reload
그런 다음 컨테이너로 돌아갑니다. 컨테이너의 nvidia-smi에 바로 문제가 있는 경우 해결 방법을 계속 사용할 수 있습니다.
해결 방법 :
한 토론에서 NVIDIA가 2023년 7월 8일 기준으로 6월 중순에 공식 수정 사항을 출시할 계획이라는 것을 보았지만 아직 확인하지 못했습니다. 따라서 이는 특히 컨테이너 스택을 업데이트할 수 없는 경우 여전히 유용할 것입니다.
가장 쉬운 방법은 docker daemon.json을 통해 컨테이너에서 cgroup을 비활성화하는 것입니다. cgroup을 비활성화해도 문제가 발생하지 않으면 다음 단계를 따르십시오. 모든 작업은 호스트 시스템에서 수행됩니다.
$ sudo nano /etc/docker/daemon.json
그런 다음 파일 내에서 이 매개변수 설정을 추가합니다.
이 매개변수 설정 앞에 쉼표를 추가하는 것을 잊지 마십시오. 잘 알려진 JSON 구문이지만, 일부는 익숙하지 않을 수도 있다고 생각합니다. 이것은 내 컴퓨터에서 편집된 파일의 예입니다.
{
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
},
"exec-opts": ["native.cgroupdriver=cgroupfs"]
}
마지막 단계에서는 호스트에서 Docker 서비스를 다시 시작합니다.
$ sudo service docker restart
참고 : 컨테이너가 자체 NVIDIA 드라이버를 실행하는 경우 위 단계는 작동하지 않지만 참조 링크에는 이를 처리하기 위한 자세한 내용이 나와 있습니다. 나는 많은 사람들이 유용하다고 생각할 간단한 해결책에 대해서만 자세히 설명합니다.
'Infra ------------------------- > DOCKER' 카테고리의 다른 글
[Docker] gpu 사용 jupyter 컨테이너 띄우기 (0) | 2023.12.13 |
---|---|
[Docker] Nginx OpenSSL 설정 (0) | 2023.12.06 |
[docker] Failed to get D-Bus connection 에러 해결 (0) | 2023.10.12 |
[Docker] 주피터 노트북 설치 (0) | 2023.04.26 |
[Docker] docker vs VM (0) | 2023.03.14 |