]Docker[ CUDA를 사용하는 PyTorch 쥬피터 컨테이너 만들기

컴퓨터공학/분산시스템

2020. 07. 24.

자세한 PDF버전을 다운하실래요?

  • 예의 환경: Ubuntu 16.04 + NVIDIA Titan X 2대
    자신의 환경에 맞게 각 단계를 유동적으로 수정해 주세요. 운영체제에 따라 각 툴의 설치 방법이 다를 수 있습니다.
    그리고 윈도우는 도커 컨테이너에서 GPU를 쓸 수 없습니다.

torch-cu101-notebook 컨테이너 실행.pdf
0.14MB

cuda 11.0 설치

  • 운영체제에 맞게 CUDA를 설치하세요. 이 예는 CUDA 11.0을 우분투에 설치합니다.
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-ubuntu1604.pin
sudo mv cuda-ubuntu1604.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/ /"
sudo apt-get update
sudo apt-get -y install cuda
nvidia-smi

cuda version conflict 해결

  • 기존 CUDA가 돌고 있던 상황이면 라이브러리가 충돌할 것입니다.
  • 돌아가던 커널 모듈을 해제해 주세요.
# nvidia 커널 모듈이 사용하는 프로세스 목록을 본다
sudo lsof /dev/nvidia*
# 해당 프로세스들을 모두 죽인다
sudo kill -9 process_id
# 커널 모듈을 종료한다
sudo rmmod nvidia_drm, nvidia_modeset, nvidia_uvm, nvidia

# 잠시 후, 혹은 reboot한 다음 cuda 11 버전으로 동작하는지 확인하자
nvidia-smi

docker 설치

  • 인공지능 학습에 쓸 쥬피터 노트북 서버를 도커로 구축하겠습니다.
sudo apt install curl
sudo apt update
curl -fsSL https://get.docker.com/ | sudo sh

#도커가 설치되면 재부팅하자
reboot

docker nvidia-container-toolkit 설치

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
sudo systemctl restart docker

xentai/cu101-torch-notebook 컨테이너 실행

  • 쥬피터 노트북을 8888번 포트로 서비스 합시다.
  • xentai/torch-cu101-notebook 이미지를 사용합니다. 이 이미지에 관하여
# 8888번 포트를 뚫는다
sudo ufw allow 8888
docker run --name aistudy -d -it -p "8888:8888" -e "pass=쥬피터접속비번" -v "볼륨절대경로:/jupyter-root" --gpus all xentai/torch-cu101-notebook
  • 컨테이너의 환경입니다
    • Python3
    • Pytorch cuda10.1 라이브러리
    • Jupyter-notebook 구동

Jupyter-notebook 접속

  • 컨테이너가 실행되면 http://공인IP:8888 로 접속합니다.
  • 노트북 로그인 화면에서 docker run 때 설정했던 비밀번호를 입력합니다.