Docker 로 딥러닝 서버에 Jupyter 원격개발환경 구축하기

이진선·2020년 1월 13일
1

아무도 쓰지않는 불쌍한 2080 ti 4마리.. 를 사용할 수 있게 만들어 주고싶었다.

목표 : GPU 서버에 Docker를 설치하여 내 자리에서 편하게 URL로 접속하여 Jupyter로 딥러닝 개발 할 수 있는 환경 만들기!
먼저 서버에 접속하자.

내 서버 환경은 우분투 18.04
RTX 2080 ti 가 4개..있는 모습을 볼 수 있다.
우리는 Docker를 이용해 매우매우 간단하게 환경을 구축해 볼 것이다.
먼저 docker 와 nvidia-docker 를 설치하자
docker (Ubuntu)설치하기 공식문서
nvidia docker 설치하기 공식문서

docker 설치 커맨드

sudo apt-get update

# https로 apt 할 수 있도록 패키지 다운로드
sudo apt-get install \\
	apt-transport-https \\
  ca-certificates \\
  curl \\
  software-properties-common
  
# 도커 공식 GPG 키 등록
curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \\
   "deb [arch=amd64] <https://download.docker.com/linux/ubuntu> \\
   $(lsb_release -cs) \\
   stable"
# 도커 다운로드
sudo apt-get install docker-ce
# 도커 권한 부여
sudo usermod -aG docker $USER

nvidia-docker 설치 커맨드

# Add the package repositories
$ 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

ufoym/deepo 이미지 pull 하기

위 이미지는 거의 모든 딥러닝 프레임워크가 포함되고 도커로 패키징된
딥러닝 개발환경 이미지이다.
CPU, GPU 가속을 지원하고 어디에서나 쉽고 빠르게 개발환경을 구축할 수 있다.

docker pull ufoym/deepo

위 명령어로 이미지를 다운받은후
아래와 같이 확인해 볼 수 있다.

단 주의할것은
pull 할때 우리는 도커의 태그기능을 활용해주어야한다.
나는
tensorflow 2.0 또는 pyTorch 를 이용할 것이다.
Jupyter를 이용해 원격으로 개발환경을 구축할 것이다.
이왕이면 python3.6 이상으로..
위 세가지 조건을 만족하는 image:tag를 pull 해 사용해야한다.

이 기능이 매우 중요한 이유는
만약 ufoym/deepo :all-jupyter 를 pull 해 사용할경우, Cuda 10.1 버전이 자동으로 설치 되는데, tensorflow2.0 에서 GPU를 이용할 경우, Cuda 10.0까지만 지원이 되기 때문에, GPU를 이용할 수 없다..

그러므로 나는
ufoym/deepo:all-jupyter-py36-cu100를 pull 해 사용할 것이다.
이제 pull 한 이미지를 바탕으로 도커를 실행하면 된다.

docker run --runtime=nvidia -it -d --name=torch -v ~/torch:/root/torch -p 8886:8888 --ipc=host ufoym/deepo:all-jupyter-py36-cu100 jupyter notebook --no-browser --ip=0.0.0.0 --allow-root  --NotebookApp.token= --notebook-dir=’/root’

여기서 커스터마이징 해줄 옵션은 아래와 같다

  • --name =torch
    docker 로 실행한 컨테이너에 지정해 주고 싶은 이름을 입력한다.
  • -v ~/torch:/root/torch
    docker volume 옵션을 활용해 Host에 디렉토리와 Container의 디렉토리를 연결해 줄수 있다.
  • -p 8886:8888
    어떤 호스트 port (8886) 와 주피터 port (8888)를 연결할 것인지 설정해준다.

성공적으로 실행했다면 아래처럼 running 중인 모습을 확인할 수 있다!

이제 서버주소:8886 으로 접속해보자!

이제 크롬브라우저로 어디에서나 서버에 접속해 딥러닝개발을 할 수 있다!

0개의 댓글