본 글은 리눅스 ubuntu 16.04.4 LTS Xeniel에서 Docker를 이용하여 GTX1080Ti GPU를 사용하기 위한 tensorflow GPU버전을 설치하는 과정이다.
0. Docker Install 방법은 지난 글 참고. (링크)
1. Tensorflow official docker image PULL
sudo docker pull tensorflow/tensorflow
2. nvidia-docker 설치
# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker
# Add the package repositories
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
# Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
- https://hub.docker.com/r/tensorflow/tensorflow/
- https://github.com/NVIDIA/nvidia-docker
2. 컨테이너 띄우기
sudo nvidia-docker run -it -p 8888:8888 -p 6006:6006 -h TF-gpu --name TF-gpu tensorflow/tensorflow:latest-gpu
sudo nvidia-docker run -it -p 8888:8888 -p 6006:6006 -h TF-gpu --name TF-gpu tensorflow/tensorflow:1.7.0-devel-gpu-py3
sudo nvidia-docker run -it -p 8888:8888 -p 6006:6006 -h TF-gpu -v /home/Data01:/home/Data01 --name TF-gpu tensorflow/tensorflow:1.7.0-devel-gpu-py3
- latest-gpu는 python2용이다. 1.70-devel-gpu가 2018.04.02 현재 안정적인 python3의 gpu버전이다. 아래 ref에서 나에게 적절한 버전을 찾아서 설치하도록 하자. *이렇게 latest를 이용하지 않는 경우 다음단계에서 주의하도록 하자 :)
- -it 옵션은 interactive와 pseudo-tty로 bash shell을 사용하기 위해서이다.
- -p는 <local port>:<container>의 포트를 연결시켜준다. 즉 내 서버의 IP:port >>> container의 local:port와 연결되는 것.
- -h와 --name은 host name과 container name,
- -v는 container의 볼륨을 따로 연결해주는 부분이다. container는 내부 삭제하면 내부 데이터가 사라진다. 내부 데이터를 보존하고 싶은 경우 -v로 local 저장소를 연결해놓은 경우 local 저장소에 데이터가 저장되기 때문에, 백업을 하기 쉽다 사용법은 다음과 같다.
-v <local volume>:<container volume>
- 마지막은 원하는 image:버전 이다.
# 8888은 jupyter 접속용 포트
# 6006은 tensorboard 접속용 포트
- https://hub.docker.com/r/tensorflow/tensorflow/tags/
3. 설치 잘 되어있는지 확인
- jupyter 접속 : http://<ip-adress>:8888 + 컨테이너 띄울때 받은 토큰
- latest-gpu가 아니라python3을 위해 필자와 같이 1.70-devel-gpu-py3와 같은 것을 이용할 경우, 기본 컨테이너를 실행하면, 바로 jupyther가 켜지지 않고, 그냥 컨테이너 안으로 들어가진다. 이제 스스로 jupyter를 실행해야 하는데, 다음과 같은 명령어로 실행하면 깔끔한 python3용 jupyter를 실행할 수 있다.
../run_jupyter.sh --notebook-dir=../home/
- 새 노트북 만든 다음 아래 명령어 실행
import tensorflow as tf
sess = tf.Session()
4. 중간에 이미지로 저장하기
sudo docker commit TF-gpu jupyter-py3
- git과 비슷 한 방법으로 한다. 명
- dockerfile을 제작한다. 컨셉은 다음과 같이 만들면 된다. 이는 기존의 tensorflow/tensorflow의 1.7.0... 버전의 이미지에서 시작한다. 이후 유지보수하는 사람을 나타내고, RUN을 통해 뒤에 명령어들을 실행한다. 아주 간단한 docker file이다. 이후 sudo docker build -t tensorflow/tensorflow .로 image를 새로 만들면 된다. 이러한 작업을 통해 image에서 작업내용을 업데이트 하고 도중에 실수했지만 내부 작업을 지킬 수 있다. (무식한 방법이긴 하지만...)
# 어느 image에서 가져올것인가
FROM tensorflow/tensorflow:1.7.0-devel-gpu-py3
MAINTAINER kimyoungjin06@gmail.com
RUN apt-get -y update
RUN apt-get -y upgrade
$sudo docker build -t tensorflow/tensorflow .
- 이후 토큰 받은 터미널에 내 PC에 대한 정보가 나타난다. Found device 0 과 같은 식으로 나오면 0번 디바이스를 찾았다는 뜻. (0개의 디바이스를 찾은 것이 아니다!!)
'Server > Docker' 카테고리의 다른 글
Docker, JupyterLab with GPU setting (0) | 2019.10.05 |
---|---|
Docker 초보자 필수 매뉴얼 (0) | 2018.04.03 |
Dockerfile 만드는 법 (0) | 2017.05.31 |