Ubuntu 14.04 LTS에서 GPU 컴퓨팅을 위한 기본적인 설치 방법이다.
만약 거의 아무것도 설치하지 않은 방금 깐 unbuntu 라면 바로 1, 2, 3번만 설치한 후 7번 항목으로가서 글을 읽기를 활용할 것을 추천한다.(이 방법은 모든 딥러닝 라이브러리를 한 번에 사용할 때 유용함)
그렇지 않고 기존에 사용하던 서버에서 추가적인 설치가 필요한 경우나, 아니면 선택적으로 딥러닝 라이브러리를 사용할 경우 나머지 항목을 참조하기 바란다.
0) GPU device의 CUDA 지원 유무확인
sudo lshw -C display 명령어로 내 GPU 장치를 확인하고,
1) CUDA 8.0 설치
우분투에서 현재 경로에 CUDA 설치파일인 RUN 파일을 이용한 설치 방법. (deb파일 즉, 데비안 패키지 를 이용한 방식은 dpkg를 활용해서 패키지 정보를 추가한 뒤 apt-get으로 설치하는 것 같다. 그러나 이 경우 GPU의 드라이버가 강제 업데이트 되서, 내가 원하는 버전의 드라이버를 깔지 못할 수 있다. http://nicellama.blogspot.kr/2015/04/cuda-70.html)
sudo service lightdm stop 을 입력하는 순간 모든 GUI화면이 꺼져버린다. 따라서 이후의 설치과정을 진행하기 위해서는 다른 컴퓨터에서 ssh로 해당 컴퓨터에 접속하여 CUDA설치를 마무리 하고, 아래의 명령어를 통해 GUI를 켜주어야한다.
혹은 Ctrl + Alt + F1 을 클릭해보자(커맨드 모드로 전환된다고 함..)
# 만약, 아래와 같은 방법으로 export로 환경변수를 설정하면, 세션을 새로 접속할때마다 환경변수를 다시 설정해주어야 한다. 따라서 위에서 printf를 이용한 방법이 보다 편리하다.
(export 할 때, 뒤에 $PATH를 붙이는 이유는 기존의 경로들 앞에 경로를 추가하기 위해서이다.)
nvidia-smi
cat /proc/driver/nvidia/version
./deviceQuery 로 실행해서 Result = PASS 이면 설치 성공
# -z 옵션은 nouveau 모듈이 실행중인 것을 무시하고 설치하는 옵션이다.
which nvcc
or ldconfig -p | grep cuda
(git clone한다음 인스톨하는 방법 or git에서 가져와서 업데이트하는 방법)
http://deeplearning.net/software/theano/install.html#bleeding-edge-install-instructions
http://deeplearning.net/software/theano/install_ubuntu.html#install-ubuntu
sudo pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git
자신의 $Home 경로에 .theanorc 파일 생성(touch나 cat 명령어) 후 다음 내용을 입력한다.
- 튜토리얼 돌려보기.
설치를 원하는 경로에서 다음을 입력.
git clone git://github.com/lisa-lab/DeepLearningTutorials.git
- theano 성능테스트
python `python -c "import os, theano; print os.path.dirname(theano.__file__)" `/misc/check_blas.py
http://deeplearning.net/software/theano/install_ ubuntu.html#manual-openblas- instruction
5) TensorFlow 설치
# 주의사항
tensorflow 설치 도중, cuda 버전 관련된 문제가 자꾸 발생할 경우 ./configure를 실행하거나 또는 vi confiure로 직접 수정해서 처리해주어야 한다.
- TensorFlow 기본 설치
sudo apt-get install python-pip python-numpy swig python-dev
# 1.0.1 버전설치방법 : 기존에는 직접 url을 입력해야했던 것과 달리, 이제는 아래와 같은 방법으로 설치가능. 단 반드시 CUDA 8.0버전을 미리 설치해야함.
sudo pip install tensorflow-gpu
개발중인 RC버전은 MLP성능이 deep하게 쌓을 경우 매우 낮아지는 현상이 빈번히 발생한다. 가능하면 stable버전을 사용할 것을 권장한다.(필자도 이것때문에 상당히 고생함 ㅜ)
vi google/protobuf/src/google/protobuf/io/coded_stream.h
에서 Line611의 kDefaultTotalBytesLimit의 숫자를 512 << 20 으로 수정할 것
- TensorFlow 설치 확인
python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
-> Hello, TensorFlow!
a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))
- TensorFlow 설치 에러 해결
> [Errno 1] _ssl.c:510: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
이상하게 공식 가이드대로 설치를 시도하면, 위와 같은 에러가 발생하여 안된다. 그래서 다음 방식 처럼, wget으로 whl파일을 다운 받은 다음에 설치할 것
wget https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl
sudo pip install tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl
> cannot import name pywrap_tensorflow : 이 에러는 tensorflow directory 내에서 import tensorflow를 시도 해서 발생. 다른 경로에서 해볼 것.
> No module named protobuf : 이 에러는 tensorflow의 버전과 이에 필요한 protobuf의 버전이 달라서 그럼. 다음을 실행해서 protobuf를 지우고, 최신 버전으로 재설치한다.
pip uninstall protobuf
sudo pip install --upgrade protobuf==3.0.0b2
- bazel 설치 (pre-trained 모델을 사용하기 위해서 필요함. 만약 pre-trained 모델을 쓰지 않는다면 당장은 설치할 필요가 없음.). http://bazel.io/docs/install.html
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install pkg-config zip g++ zlib1g-dev unzip
(https://github.com/bazelbuild/bazel/releases 에서 최신 bazel installer를 다운받는다.)
wget https://github.com/bazelbuild/bazel/releases/download/0.1.5/bazel-0.1.5-installer-linux-x86_64.sh
chmod 777 bazel-0.1.5-installer-linux-x86_64.sh
./bazel-0.1.5-installer-linux-x86_64.sh --user
sudo printf "\nexport PATH=$PATH:$HOME/bin\n" >> $HOME/.bashrc
- bazel 설치 확인
bazel version
TensorBoard 종료 --> ctrl + c 혹은 ctrl + \
- TensorFlow Pre-trained CNN 모델을 로딩하기 (이것은 bin 모델을 만들지 않음)
만약 위에서 말한 방법대로 설치하지 않았을 경우 https://github.com/ry/tensorflow-vgg16의 모델을 다음과 같은 코드를 사용해로딩하려고하면 2가지 문제가 발생한다.
with open("../vgg16-20160129.tfmodel", mode='rb') as f:
fileContent = f.read()
graph_def = tf.GraphDef()
graph_def.ParseFromString(fileContent)
이를 해결하려면 아래의 방법을 따라야한다.
(1) tensorflow 를 최신 버전으로 업데이트(master).
git pull
(본문의 "TensorFlow Bleeding Edge 버전 설치하기" 참조.)
(2) tensorflow 내부의 protobuf 의 소스코드를 수정 후 다시 빌드
https://github.com/tensorflow/tensorflow/issues/582
vi google/protobuf/src/google/protobuf/io/coded_stream.h#Line611 에서 kDefaultTotalBytesLimit의 숫자를 5121 << 20 으로 수정할 것. 이왕 하는 거 바로 밑에 Warning 도 똑같이 크게 잡아 줄 것.
이는 다음의 명령으로도 처리가 가능하다.
cd tensorflow
sed -i "s/kDefaultTotalBytesLimit = 64/kDefaultTotalBytesLimit = 5121/g" google/protobuf/src/google/protobuf/io/coded_stream.h
sed -i "s/kDefaultTotalBytesWarningThreshold = 32/kDefaultTotalBytesWarningThreshold = 5121/g" google/protobuf/src/google/protobuf/io/coded_stream.h
- TensorFlow Pre-trained CNN 모델의 bin 파일 빌드 후 실행하기
(https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/label_image)
cd tensorflow
sudo ./configure ( 이게 일단 잘 되어야만, bazel build가 가능하다 )
wget https://storage.googleapis.com/download.tensorflow.org/models/inception_dec_2015.zip
unzip inception_dec_2015.zip -d tensorflow/tensorflow/examples/label_image/data/
git submodule update --init
bazel build tensorflow/examples/label_image/...
bazel-bin/tensorflow/examples/label_image/label_image
bazel-bin/tensorflow/examples/label_image/label_image --image=my_image.png
6) 기타 설치 (git, screen, ipython, h5py)
sudo pip install -U pip
(pip 는 업데이트 후 세션 재접속이 필요하다.)
sudo apt-get install git
sudo apt-get install screensudo pip install "ipython[notebook]==3.2.1"
sudo apt-get install -y python-matplotlib
sudo apt-get install -y python-h5py
sudo apt-get install python-skimage
sudo apt-get install libjpeg-dev
sudo pip install --upgrade pillow
sudo pip install -U scikit-learn
sudo pip install --upgrade Request
sudo apt-get install redis-server
sudo service redis-server restart
sudo pip install euclid
sudo pip install future
7) Docker로 한 번에 설치하기
지금까지 (4)~(6)번의 설치한 과정을 원스텝으로 한 번에 설치하는 방법이 있다.(1,2번의 CUDA와 CuDNN은 설치해야한다.) 바로 필자가 만든 docker 이미지를 사용하는 것이다. 다음의 명령어를 차례대로 실행하면 위에서의 설치 과정이 대부분 완료된다. (참고 자료: https://hub.docker.com/r/imcomking/bi_deeplearning/)
다음을 참조하여 docker를 설치한다. https://docs.docker.com/engine/installation/linux/ubuntulinux/
위 문서의 내용 중 ubuntu 14.04 에서의 docker 최신버전 설치 방법만 정리하면 다음과 같다.
- docker 설치
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo printf "deb https://apt.dockerproject.org/repo ubuntu-trusty main" >> /etc/apt/sources.list.d/docker.list
sudo apt-get update
sudo apt-get purge lxc-docker
sudo apt-cache policy docker-engine
sudo apt-get install linux-image-extra-$(uname -r)
sudo apt-get install apparmor
sudo apt-get install docker-engine
sudo service docker start
sudo docker run hello-world
sudo docker version
(sudo apt-get install docker.io (이렇게하면 한 번에 설치는 되나, 구버전이 설치된다.))
- docker image 다운 받기
sudo docker pull imcomking/bi_deeplearning
sudo docker run -p 22 -p 6006 -p 8888 -it --device /dev/nvidiactl --device /dev/nvidia-uvm --device /dev/nvidia0 imcomking/bi_deeplearning
그러면 pull 하는데 걸리는 N시간 이후 바로 설치가 완료된 환경에서 작업이 가능하다.
다음은 ssh/sft 설정이다.
passwd
(enter your password)
wget https://raw.githubusercontent.com/bi-lab/deeplearning_tutorial/master/sshd_config -O /etc/ssh/sshd_config
/usr/sbin/sshd -D
docker와 관련된 명렁어나 지식은 다음을 참조하기 바란다.
'Development > for Machine Learning' 카테고리의 다른 글
Practical Theano Tutorial (0) | 2015.03.11 |
---|---|
Theano 사용법 (0) | 2015.01.20 |
CUDA Programming (2) | 2014.11.17 |
Weka (0) | 2014.06.23 |
MATLAB 문법, API, 단축키, 환경설정 (0) | 2014.06.23 |
댓글