이번 포스팅에서는 도커 컨테이너에서 gpu를 사용하기 위한 초기 세팅법에 대해 알아보려고 합니다.
이때 로컬 pc에는 nvidia driver만 설치되어 있으면 됩니다.
이 글과 읽으면 좋은 글
1. 기존 설치되어 있는 도커 삭제
기존 버전과 충돌이 나면 문제가 생길 수 있기 때문에 깔끔하게 삭제해줍니다.
$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo rm -rf /var/lib/docker
$ sudo apt-get autoclean
$ sudo apt-get update
2. Docker ce 설치
docker ce 는 Community Edition의 약자로 개인이 사용할 수 있는 무료 버전입니다.
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
$ sudo apt update
$ apt-cache policy docker-ce
$ sudo systemctl status docker
3. sudo 없이 도커를 사용하고 싶을 때(선택사항)
기본적으로 도커 명령어를 기입할 때마다 sudo 명령어를 함께 작성해야 합니다.
이 부분이 귀찮으신 분은 아래 명령어 기입하시면 sudo 작성없이 작성이 가능합니다.
$ sudo usermod -aG docker ${USER}
$ su - ${USER}
$ id -nG
output:
![[docker 기초] 도커 nvidia gpu 초기 세팅 방법 - 이 글과 읽으면 좋은 글 - 3. sudo 없이 도커를 사용하고 싶을 때(선택사항) [docker 기초] 도커 nvidia gpu 초기 세팅 방법 - 이 글과 읽으면 좋은 글 - 3. sudo 없이 도커를 사용하고 싶을 때(선택사항)](https://blog.kakaocdn.net/dn/bfh337/btrTdGf0RCH/4Vb8wTjbGFjsiRppPfDJx1/img.png)
4. nvidia 도커 설치
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
5. 사용방법
설치를 마치고 난 뒤 컨테이너를 run 할 때 3가지 방법 중 아무거나 사용하시면 됩니다.
1) docker run -it --gpus all 이미지명
2) docker run -it --runtime nvidia 이미지명
3) nvidia-docker run -it 이미지명
+ 추가
모델을 학습시킬때 간혹 memory가 부족하다는 에러를 만날 수 있습니다.
이때는 host pc 메모리를 가져와 사용해야 하는데요.
이를 위해 명령어에 --ipc host 를 추가해주면 됩니다.
이는 default로 리소스를 제한하는 도커의 제한을 풀어주는 역할을 합니다.
6. 예제 실습
https://hub.docker.com/r/pytorch/pytorch
Docker Hub
...
hub.docker.com
예제에서는 pytorch/pytorch 이미지로 container를 만들어보겠습니다.
1) image pull
docker pull pytorch/pytorch
2) gpu 사용 가능하도록 container 실행
docker run -it --ipc host --gpus all pytorch/pytorch
![[docker 기초] 도커 nvidia gpu 초기 세팅 방법 - 이 글과 읽으면 좋은 글 - 6. 예제 실습 - 2) gpu 사용 가능하도록 container 실행 gpu 세팅후 도커 run](https://blog.kakaocdn.net/dn/pjOTh/btrTy4h0Xp7/WHclBlVrY29n4npkDTkf20/img.png)
3) gpu 사용 가능 여부 확인
(1) python 환경 진입
![[docker 기초] 도커 nvidia gpu 초기 세팅 방법 - 이 글과 읽으면 좋은 글 - 6. 예제 실습 - 3) gpu 사용 가능 여부 확인 python 환경 진입](https://blog.kakaocdn.net/dn/ccSuBp/btrTANl4abt/DBaTM5BDgs5b5Hp7IxUKk1/img.png)
(2) torch cuda 사용 가능 여부 확인
import torch
print(torch.cuda.is_available()) # gpu 사용가능 확인 True or False
print(torch.cuda.device_count()) # 사용 가능 gpu 갯수 출력
![[docker 기초] 도커 nvidia gpu 초기 세팅 방법 - 이 글과 읽으면 좋은 글 - 6. 예제 실습 - 3) gpu 사용 가능 여부 확인 gpu사용 가능 확인](https://blog.kakaocdn.net/dn/cM0r9Q/btrTABeXAmq/8O0evujcdC8xnFwm9zQQDK/img.png)
True, 4 를 반환하는걸 보면 정상적으로 gpu가 동작하는걸 알 수 있습니다.
'리눅스' 카테고리의 다른 글
[docker] docker: Error response from daemon: failed to create shim task: OCI runtime create failed: 도커 에러 해결방법 (0) | 2022.12.13 |
---|---|
[Docker] 도커에서 주피터 노트북 원격 접속 방법 (1) | 2022.12.12 |
우분투 1> 2> 꺽쇠 무엇일까? (0) | 2022.12.07 |
리눅스 grep 사용법 (문자열 찾기) (0) | 2022.12.06 |
우분투 dev/nvme0n1p2 clean 부팅 오류 해결 방법 (0) | 2022.12.05 |
댓글
꼬예님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.