The Beautiful Future

Install Caffe on Ubuntu 16.04 with GTX 1080, CUDA8.0, CUDNN5.1, NCCL, OPENCV3.1 본문

DNN

Install Caffe on Ubuntu 16.04 with GTX 1080, CUDA8.0, CUDNN5.1, NCCL, OPENCV3.1

Small Octopus 2016. 11. 24. 19:57

cudnn v5 이상을 사용해야지 GeForce GTX 1080 Pascal 아키텍쳐을 돌릴 수 있다고 한다.

Ubuntu 16.04.x에 GTX1080 graphic driver, CUDA 8.0, cudnn5.1, nccll, opencv3.1, caffe을 설치해보자.


0. 가장 도움이 된 싸이트는 아래와 같다 Caffe 공식 설치 Wiki다.

아래 싸이트를 따라하면 잘 설치가 된다. 아래 글에서는 아래 설치과정과 다른점 및 부족한 점을 포스팅한다.

https://github.com/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide


1.우분투 설치

- 부팅 usb 만들기

http://sergeswin.com/1178


-그래픽드라이버문제로 설치로 안넘어갈때 nouveau 라는 기본드라이버가 현 GPU를 지원못해서 orgx..

설치페이지로 못넘어간다.

installing 선택에서 e누르고 nomodeset 설정 아래 링크에 젂혀있음

http://blog.neonkid.xyz/66

grub을 이용해서 recovery mode로 부팅, shift + esc를 한번누르면 grub으로 진입 recovery mode를 선택 할 수 있고

nouveau 를 무시하는 파일을 작성.


- internet 설정

/etc/networking/interfaces 문서에 랜카드 아이디를 젂어줌



2. 그래픽드라이버 설치

몇몇 지인으로 부터 아래방법으로 드라이버가 잘 안깔린다는 소리를 들었다.

이유는 이미 드라이버가 자동으로 깔린 경우가 있다고 한다.

--- 자동으로 깔려있는 경우 설정 방법

https://www.youtube.com/watch?v=-mWl1zJu_hw


--- 직접설치하는 방법

아래 링크에서 설치된 GPU에 맞는 드라이버를 다운 받는다.

http://www.nvidia.com/Download/index.aspx?lang=kr

GEFORCE GTX 1080의 경우는 

GeForce, GeForce 10 Series, GeForce GTX 1080, Linux 64-bit, English(US) 로 검색

375.20 번전이였고 다운 받은 파일은 NVIDIA-Linux-x86_64-375.39.run 이였다.

기존 NVIDIA 드라이버 제거

$ sudo apt-get purge nvidia*

CTRL+ALT+F1~F6 로 커멘드창모드로 진입, 그래픽모드로 돌아올때는 CTRL+ALT+F7

커멘트 창 모드에서 로그인한다.

끊현재동작되고 있는 그래픽 인터페이스를 끊다.

$ sudo service lightdm stop

$ sudo service gdm stop

드라이버 다운 받은 폴더로 이동

$ sudo chmod 755 NVIDIA-Linux-x86_64-375.20.run

$ sudo ./NVIDIA-Linux-x86_64-375.20.run

$ reboot

만약 설치된 드라이버를 지우고 싶다면 

$ sudo ./NVIDIA-Linux-x86_64-375.20.run --uninstall


3. CUDA8.0 설치

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

Linux > x86_64 > Ubuntu > 16.04 > deb(local) > Download

cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb 을 다운 받았다.

$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb

$ sudo apt-get update

$ sudo apt-get install cuda


cuda 제거

https://askubuntu.com/questions/530043/removing-nvidia-cuda-toolkit-and-installing-new-one


4. CUDNN 설치

https://developer.nvidia.com/cudnn 접속 

Download > Log in > Survey > cuDNN v5.1 for Linux

cudnn-8.0-linux-x64-v5.1.tgz 을 다운 받았다.

$ tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz

$ sudo cp ./cuda/include/* /usr/local/cuda-8.0/include/

$ sudo cp ./cuda/lib64/* /usr/local/cuda-8.0/lib64/

version check

$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

5. NCCL 설치 - 여러 GPU을 동시에 같이 쓸수 있게 해준단다.

https://github.com/NVIDIA/nccl에서 cuda 8.0 버전을 다운로드 압축 풀고 

$ cd nccl

$ make /usr/local/cuda-8.0 test

$ sudo make /usr/local/nccl/lib install

$ sudo cp ./build/include/* /usr/local/cuda-8.0/include/

$ sudo cp ./build/lib/* /usr/local/cuda-8.0/lib64/

cuda 디렉토리에 추가해주었어다.

PATH 설정을 해주고 nccl/build/test/singles에서 

$ ./all_reduce_test 10000000

을 실행해서 경로가 잘 설정 되었는지 확인 하자.


6. OpenCV 3.1 설치

우분투에 기본으로 설치되있던 opencv를 안지우는게 좋다 . 지우다 그래픽드라이버를 날릴 수 있다.

컴파일 중 오류가 많이 나서 여러 블로그에 나온 내용을 합쳐서 성공한 방법이다.

$ sudo apt-get update

$ sudo apt-get install --assume-yes build-essential cmake git

$ sudo apt-get install --assume-yes build-essential pkg-config unzip ffmpeg qtbase5-dev python-dev python3-dev python-numpy python3-numpy

$ sudo apt-get install --assume-yes libopencv-dev libgtk-3-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev

$ sudo apt-get install --assume-yes libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

$ sudo apt-get install --assume-yes libv4l-dev libtbb-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev

$ sudo apt-get install --assume-yes libvorbis-dev libxvidcore-dev v4l-utils

$ sudo apt-get install gtk2.0

$ sudo apt-get install libopencv-dev build-essential checkinstall cmake pkg-config yasm libtiff5-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg

$ mkdir OpenCV

$ cd OpenCV

$ sudo git clone https://github.com/Itseez/opencv.git

$ cd opencv

$ mkdir release

$ cd release

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=OFF -D WITH_OPENGL=ON ..

Qt가 에러나서 OFF했다.

--- cmake 현재 활성화된 파이썬에 opencv 설치 방법 추가 및 cuda 빌드를 끄니까 빌드 빨라진다

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D UILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=OFF -D WITH_OPENGL=ON  -D WITH_CUDA=OFF -D CMAKE_INSTALL_PREFIX=$(python -c "import sys; print(sys.prefix)") -D PYTHON_EXECUTABLE=$(which python) -D PYTHON_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -D PYTHON_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..



$ make -j8

$ sudo make install

$ sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

$ sudo ldconfig

$ sudo apt-get update

버전 확인 

$pkg-config --modversion opencv


7. 환경변수 설정

10번 cmake를 이용한 방법이 더 간단하다.!!!

폴더 익스플로어에서 CTRL+h 을 누르면 숨길 파일이 보인다. .profile 을 연다. 맨 아래 줄에 추가

# cuda & cudnn

export CUDA_HOME=/usr/local/cuda

export PATH=$CUDA_HOME/bin:$PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib64

# caffe

export CAFFE_HOME=~/caffe

export PYTHONPATH=$CAFFE_HOME/python:$PYTHONPATH

# digits

export DIGITS_HOME=~/digits


8. CAFFE 빌드

https://github.com/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide#the-gpu-support-prerequisites

위 홈페이지 내용을 따라하면 된다. 

Make 파일과 Make.config 파일을 수정해줘야한다.  Make.config 만 블로깅 한다. #는 주석 처리 된것은 뺏으며 수정 된 것은 아래와 같다.

USE_CUDNN := 1

USE_NCCL := 1

USE_OPENCV := 1

USE_LEVELDB := 1

USE_LMDB := 1

OPENCV_VERSION := 3

CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \

-gencode arch=compute_20,code=sm_21 \

-gencode arch=compute_30,code=sm_30 \

-gencode arch=compute_35,code=sm_35 \

-gencode arch=compute_50,code=sm_50 \

-gencode arch=compute_50,code=compute_50 \

-gencode arch=compute_61,code=compute_61

BLAS := atlas

PYTHON_LIB := /usr/lib

WITH_PYTHON_LAYER := 1

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial /usr/local/share/OpenCV/3rdparty/lib/

위에 홈페이지 내용 잘 읽어보고 Make파일 변경 및 3rdparty 잘 설치! 이제 카페 빌드 하면 끝!!

$ make all -j8

$ make test

$ make runtest

$ make pycaffe      -should be finished already, so you can omit this one

$ make distribute

$ python

>> import caffe


9. ETC

ubuntu 16.04 에서는 컴파일러가 이전 것과 많이 달라져서 이전에 만들어진 패키지와 잘 안 물릴수 있다고 한다.

나는 modprobe 에러가 한번 났었는데 nccl 경로문제였다.

https://github.com/BVLC/caffe/wiki/GeForce-GTX-1080,---CUDA-8.0,---Ubuntu-16.04,---Caffe


10. cmake build 

mkdir build
cd build
cmake ..
make all
make install
make runtest

- options

https://github.com/BVLC/caffe/pull/1667


11네트웍 추가하는법



I've solved the problem adding

# The secondary network interface
auto enp0s8
iface enp0s8 inet dhcp

to /etc/network/interfaces

and restarting the network using sudo service networking restart.

Now, here is the result of

$ ifconfig enp0s3    Link encap:Ethernet  HWaddr 08:00:27:47:52:7b  
          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe47:527b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6334 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7656 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2741526 (2.7 MB)  TX bytes:10824219 (10.8 MB)

enp0s8    Link encap:Ethernet  HWaddr 08:00:27:3e:1e:bf  
          inet addr:10.0.3.15  Bcast:10.0.3.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe3e:1ebf/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1730 (1.7 KB)  TX bytes:1882 (1.8 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2143 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2143 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:443165 (443.1 KB)  TX bytes:443165 (443.1 KB)















Comments