본문 바로가기

Enginius/Python&TensorFlow

도커와 텐서플로우 설치하기

#. 우분투를 받는다. (16.04 64bit Desktop)

http://releases.ubuntu.com/16.04/


# USB에 이미지를 쓰기 위한 프로그램을 받는다. 

https://sourceforge.net/projects/win32diskimager/?source=typ_redirect


# 설치를 한다. 


# 이제 진짜 시작이다. 

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

sudo apt-get install make cmake git

sudo apt-get install dkms build-essential linux-headers-generic


#아래 부분을 추가/수정한다. 

sudo gedit /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"


#아래 부분을 추가/수정한다. 

sudo gedit /etc/modprobe.d/blacklist.conf

blacklist nouveau 

blacklist lbm-nouveau 

options nouveau modeset=0 

alias nouveau off 

alias lbm-nouveau off


#PC를 재시작한다. 

reboot


#Download CUDA

https://developer.nvidia.com/cuda-downloads

# 위의 사이트에서 받는다. (cuda_8.0.44_linux.run)

chmod +x cuda_8.0.44_linux.run


# Ctrl+Alt+F1 그리고 Login 

sudo service lightdm stop

sudo init 3

sudo ./cuda_8.0.44_linux.run --no-opengl-libs

sudo service lightdm start


# 아래 부분을 추가 수정한다. 

gedit ~/.profile

# CUDA

PATH="/usr/local/cuda-8.0/bin:$PATH"


sudo gedit /etc/ld.so.conf

include /usr/local/cuda-8.0/lib64


sudo ldconfig

source ~/.profile


# 아래 링크를 따라서 Secure mode를 해제한다. 

http://askubuntu.com/questions/762254/why-do-i-get-required-key-not-available-when-install-3rd-party-kernel-modules


#PC를 재시작한다. 

reboot


# 제대로 드라이버가 설치되었는지 확인한다. 

nvidia-smi 


# 도커를 설치한다. 

sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates


sudo apt-key adv \

--keyserver hkp://ha.pool.sks-keyservers.net:80 \

--recv-keys 58118E89F3A912897C070ADBF76221572C52609D


echo deb https://apt.dockerproject.org/repo ubuntu-xenial main | sudo tee /etc/apt/sources.list.d/docker.list


sudo apt-get update


apt-cache policy docker-engine


sudo apt-get update


sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual


sudo apt-get update


sudo apt-get install docker-engine


sudo service docker start


sudo docker run hello-world


sudo usermod -aG docker $USER


# 도커가 제대로 설치되었는지 확인한다. 

id sj

: This is just for checking. If you see 999 (docker), you are good to go.


#INSTALL NVIDIA DOCKER

wget -P /tmp https://github.com/.../nvidia-docker_1.0.0.rc.3-1_amd64.deb


sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb


#PC를 재시작한다. 

reboot


nvidia-docker run --rm nvidia/cuda nvidia-smi


# 도커 설치에 사용할 폴더를 만들고 이동한다. 

mkdir Workspace

cd Workspace


https://github.com/.../9a765d6168.../tensorflow/tools/docker

에서 jupyter_notebook_config.pyrun_jupyter.sh 파일을 받는다. 



# DockerFile을 만든다. (아래를 복사 붙여넣기)



# 도커를 빌드한다. 

nvidia-docker build --tag sj/tf0.12rc0 .

(When doing this, you should have 'jupyter_notebook_config.py' and 'run_jupyter.sh' 

which can be found in tf sites (unchanged).)


오래 기다린다. 또 기다린다. 오래 걸리는 이유는 Bazel build 때문이다. 



# 잘 만들어졌는지 확인한다. 

docker images

:  If you see sj/tf0.12rc0 , then you are good to go!


# 이리 만들어놓은 도커 컨테이너를 여는 파일을 부른다. 

sh container.sh


nvidia-docker run --name sj.tensorflow \

-p 8888:8888 \

-p 6006:6006 \

-it \

-e DISPLAY=$DISPLAY \

-v '/home/sj/code/notebooks_docker:/home/sj/notebooks' \

-v '/home/sj/code/PycharmProjects_docker:/home/sj/PycharmProjects' \

-v '/tmp/.X11-unix:/tmp/.X11-unix' \

sj/tf0.12rc0 /bin/bash


In case of seeing The name "/sj.tensorflow" is already in use by container ..


docker rm /sj.tensorflow

# 도커 환경에 들어왔다면, 

passwd root


passwd sj

: sj는 내 아이디이다. 

su sj


echo $LD_LIBRARY_PATH


cd ~


# 쥬피터 환경 설정하고 연다. 

sudo chown -R sj:sj .jupyter/


cd notebooks/


sh ../run_jupyter.sh


# 이렇게 접속할 수 있다. (혹은 외부에선 147.46.xx.xx:8888)

http://localhost:8888


# 비밀번호를 설정한다. 

export PASSWORD='ADSL'


# 파이참을 받아서 설치한다. 

https://www.jetbrains.com/pycharm/download/#section=windows


# 다운 링크를 복사한다. (wget으로 받을 것이다.)


cd ~

mkdir downloads

cd downloads


# 받고, 압출 풀고, 실행한다. 

wget https://download.jetbrains.com/.../pycharm-community-2016...

tar xfz pycharm-community-2016.3.tar.gz

cd pycharm-community-2016.3/bin/

sh pycharm.sh


# 혹시 다른 창에서 새롭게 열려있는 도커를 실행하고 싶다면

docker exec -it sj.tensorflow /bin/bash


# 외부에서 현재 PC로 접속할 수 있게 포트를 열어 놓는다. 

sudo apt-get install openssh-server

sudo ufw allow 22


# 현재까지 만들어진 컨테이너를 저장한다. (혹시 뻑나면 이걸로 백업하면 된다.)

docker commit -m 'v0.1' sj.tensorflow sj/tf0.12rc0:v0.1


# 확인해본다. 

docker images

: 아래와 같은 것이 보이면 된 것이다. 

sj/tf0.12rc0 v0.1 854a54af00ce 22 seconds ago


'Enginius > Python&TensorFlow' 카테고리의 다른 글

Simple Handshaking between Matlab and TensorFlow  (0) 2017.04.17
TensorFlow-trained network in MATLAB  (0) 2017.01.10
GPU 머신 조립하기  (2) 2016.11.25
Docker 사용하기  (0) 2016.11.22
Virtual environment 사용하기  (0) 2016.11.17