예전 글들을 보면 docker container에서 gpu 를 사용하기 위해서는 nvidia-docker를 새로 설치해야된다고 합니다. 하지만, docker 19.*.* 이후부터는 docker 자체에서도 gpu를 지원하게 되었습니다. 따라서 현 시점에서 접할 수 있는 대부분의 docker는 nvidia-docker의 설치 없이, nvidia-container-runtime의 설치와 docker 재실행만으로 gpu 인식 및 활용이 가능합니다.
Prerequisites:
- docker (me: 20.10.20)
- nvidia-driver (nvidia-smi 입력 시, gpu 인식이 되어야 함, me: 470.63.01)
설정 방법
1. nvidia-container-runtime 설치
$ apt-get install nvidia-container-runtime
2. 설치가 잘 되었는지 확인
which nvidia-container-runtime-hook
3. docker restart
재실행하지 않으면, gpu가 인식되지 않음.
sudo systemctl restart docker
4. 확인
gpu의 인식은 다음과 같은 명령어를 통해 확인할 수 있음.
(해석: ubuntu container를 생성하여 모든 gpu를 사용한다는 옵션을 준 뒤, nvidia-smi 실행 시 gpu가 인식되는지 확인하는 방법)
$ docker run -it --rm --gpus all ubuntu nvidia-smi
Fri Oct 21 09:00:42 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.63.01 Driver Version: 470.63.01 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:3B:00.0 Off | N/A |
| 0% 32C P8 20W / 260W | 5MiB / 11019MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA GeForce ... Off | 00000000:5E:00.0 Off | N/A |
| 0% 31C P8 4W / 260W | 5MiB / 11019MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 2 NVIDIA GeForce ... Off | 00000000:86:00.0 Off | N/A |
| 0% 32C P8 10W / 260W | 5MiB / 11019MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 3 NVIDIA GeForce ... Off | 00000000:AF:00.0 On | N/A |
| 0% 32C P8 15W / 260W | 159MiB / 11011MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+
참고: https://docs.docker.com/config/containers/resource_constraints/#gpu
반응형
'인공지능 > MLOps' 카테고리의 다른 글
[docker] docker 종료된 컨테이너 한 번에 삭제하기 (Exited) (0) | 2022.12.13 |
---|---|
[kubeflow, kubernetes] 디플로이먼트 재시작하는 방법 (restart deployment) (0) | 2022.10.28 |
[MLOps] minikube memory 설정하기 (0) | 2022.09.20 |
[docker] docker container에 opencv 설치하기 (0) | 2022.09.19 |
[MLOps] minikube, kubeflow 도커 이미지 삭제하는 방법 (0) | 2022.09.19 |