개발 환경/Docker

Docker로 딥러닝하기 (Pytorch)

HanSeokhyeon 2020. 1. 21. 21:11
반응형

1. docker 설치

curl -fsSL https://get.docker.com/ | sudo sh

위 명령어를 입력하면 docker를 자동으로 설치해준다.

docker --version

output:

Docker version 19.03.5, build ....

2. Pytorch GPU 버젼 image pull

docker hub에서 pytorch/pytorch에 들어가보면 여러가지 tag가 많다. 그중 나는

  • pytorch 1.1.0
  • cuda 10.0
  • cudnn 7.5

가 설치되어 있는 image를 pull하였다.

docker pull pytorch/pytorch:1.1.0-cuda10.0-cudnn7.5-devel

output:

1.1.0-cuda10.0-cudnn7.5-devel: Pulling from pytorch/pytorch                                               
34667c7e4631: Pull complete                                                                               
d18d76a881a4: Pull complete                                                                               
119c7358fbfc: Pull complete                                                                               
2aaf13f3eff0: Pull complete                                                                               
643564d518c8: Pull complete                                                                               
1fea03e629a4: Pull complete                                                                               
45402f4cf61d: Pull complete                                                                               
86f75b2a221d: Downloading [=======================>                           ]    241MB/518.5MB           
bed75fe8e483: Downloading [===================>                               ]    280MB/720.7MB           
6c2a711c6f0a: Downloading [=============================>                     ]  260.9MB/441MB            
0cebfcdacfee: Waiting                                                                                     
854b430e64dc: Waiting                                                                                     
c4f1bf920b70: Waiting
...

이렇게 설치가 시작된다. 우분투, pytorch, cuda 등등을 전부 설치하는 일이기 때문에 용량도 굉장히 크고 오래 걸린다.

3. Run container (with mount)

docker run -i -t --name pytorch -v /home/han/PycharmProjects/spoken_language_idenfication:/workspace pytorch/pytorch:1.1.0-cuda10.0-cudnn7.5-devel /bin/bash

output:

root@90aed91f0bb1:/workspace#

위와 같이 터미널이 실행된다.

명령어는 위와 같은데 차근차근히 살펴보자.

(1) -i

docker container와 입출력을 interactive하게 만들어준다.

(2) -t

터미널을 사용하게 해준다.

(3) --name

docker container의 이름을 설정한다.

(4) -v

Local과 container 사이에 공유 볼륨을 형성한다. /home/han/PycharmProjects/spoken_language_idenfication를 /workspace에 마운트 시킨다.

(5) pytorch/pytorch:1.1.0-cuda10.0-cudnn7.5-devel

docker image에는 tag에 따라 다양한 이미지가 존재한다. 여기서 pytorch/pytorch는 image repository고 1.1.0-cuda10.0-cudnn7.5-devel은 tag다. tag의 내용은 중요한 패키지들 버젼이 명시되어있다.

(6) /bin/bash

터미널을 실행시킨다.

ls

output:

LICENSE    dataset    log        models  result.py    run_crnn.sh  run_dnn.sh  util.py                     
README.md  loader.py  logger.py  result  run_crnn.py  run_dnn.py   save_model  wavio.py

project와 마운트를 했기때문에 project의 내용이 전부 마운트되어 있다.

4. Run python

sh run_crnn.sh

output:

...
ModuleNotFoundError: No module named 'librosa'

librosa가 없으므로 설치

pip install librosa

다시 실행하니 이번에는 sndfile library가 없다고 한다.

apt-get update
apt-get install libsndfile1

matplotlib도 없어서 설치해주고 실행하니 돌아가기 시작한다. 하지만 code가 GPU를 사용하지 않고 CPU로만 돌아간다.

5. Run with GPU

docker가 GPU를 인식하기 위해서는 docker-nvidia2라는 것을 설치해야한다.

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
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-docker2
sudo pkill -SIGHUP dockerd

이렇게 설치를 완료했으면 docker대신 nvidia-docker라는 명령어를 통해 docker를 사용할 수 있다.

출처:
https://brunch.co.kr/@hopeless/10
https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html
https://stackoverflow.com/questions/55086834/cant-import-soundfile-python
https://itzone.tistory.com/610
https://hanseokhyeon.tistory.com/entry/docker-pytorch-image-이용해서-pytorch-사용하기
https://m.blog.naver.com/PostView.nhn?blogId=alice_k106&logNo=220359633558&proxyReferer=https%3A%2F%2Fwww.google.com%2F

반응형