딥러닝 공부를 하면서 GPU 서버를 밀고 우분투를 깔고한게 수십번은 되는 것 같다. 항상 Pytorch나 Tensorflow의 버전에 맞게 Cuda 및 Cudnn을 설치 및 설정을 해줘야하는데 한번 잘못 실수를 하면 원인 모를 이유로 항상 에러가 발생하여 옆자리에 선배가 "그거 그냥 한번 밀고 재설치하는게 빠를걸" 이라는 말을 해준 기억이 난다. 아직까지 이유는 모르지만 경로가 꼬인게 아닐까 생각된다.
그래서 이러한 답답함과 시간 아까움에 탄식하고 있을때 이를 해결할 수 있는 방안을 아까 등장한 선배가 도커라는 가상화 플랫폼을 소개주었다.
본론에 들어가기전에 간단한 도커의 배경이나 소개를 해보고자 한다.
docker란?
도커를 간단하게 정리하자면 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있게 해주는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.
개인적으로 도커를 쓰는 가장 쓴 이유는 개발의 주체가 되는 서버가 바뀔때 마다 환경 설정을 다시 해줄 필요없이 이미지와 Dockerfile 또는 Docker Compose을 사용하여 개발 환경 셋팅을 간단하게 할 수 있다.
Dockerfile은 사용자가 이미지를 어셈블하기 위해 호출할 수 있는 명령이 포함된 간단한 텍스트 파일인 반면 Docker Compose는 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구이다.
좀 더 자세한 내용을 원하시는 분은 여기에서 상세하게 확인해보시면 될 것 같습니다.
Nvidia Docker 설치하기
도커를 설치할때도 무수한 삽질이 있었는데 맨땅에 헤딩하면서 얻은 것 중에 가장 좋은 방법은 해당플랫폼의 공식 Docs를 보는 것이 가장 좋다(블로그도 설치 방법에 대한 좋은 글이 많지만 각자의 환경이나 사정이 있기 때문에 공식 Docs를 권유하는 바이다.)
먼저 해당 링크를 통해 도커의 공식 Docs를 확인한다.
22년 5월 18일 기준 Ubuntu LTS - 16.04, 18.04, 20.4버전은 해당 가이드를 통해 설치가 가능하다.
설치 부터 테스트까지 시작해 보자.
도커 설정
서버의 터미널을 실행하고 아래와 같이 Docker-CE는 Docker의 공식 편의 스크립트를 통해 설정하여 준다.
$ curl https://get.docker.com | sh \
&& sudo systemctl --now enable docker
NVIDIA Container Toolkit 설정
패키지 저장소 및 GPG 키 설정하여 준다.
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
그 다음 우분투의 패키지 목록에 nvidia-docker2를 업데이트 하는 과정을 거친다.
$ sudo apt-get update
마지막으로 nvidia-docker2를 설치하고 기본 런타임을 설정한 후 Docker 데몬을 다시 시작하여 설치를 완료한다.
$ sudo apt-get install -y nvidia-docker2
$ sudo systemctl restart docker
설치 후 테스트
본인의 우분투 버전에 맞게 아래의 코드를 수정하고 테스트를 진행해보면 됩니다.
$ sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
설치가 성공적으로 완료가 되면 아래와 같이 콘솔이 뜨는 것을 확인할 수 있다.
현재 저는 다른 컨테이너를 통해 GPU를 사용하고 있기에 사용률이 0%가 아닌점을 참고해주시길 바랍니다.
다음 글에는 도커 이미지와 Docker File을 통해 딥러닝 환경을 구축하는 방법 및 간단한 도커 사용법에 대해 설명드리도록 하겠습니다.
참고 블로그 출처
1. https://wooody92.github.io/docker/Docker-도커란-무엇인가/
2. https://dev-youngjun.tistory.com/2
3. https://velog.io/@s2moon98/dockerFile과-docker-compose.yml-의-차이점/
4. https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html
'Infra > Docker' 카테고리의 다른 글
Docker 와 VM의 차이점 (2) | 2022.08.21 |
---|