아래는 한성에서 나온 고성능 게이밍 노트북인 Bossmonster E54 에 우분투를 설치하고 인공지능 딥러닝을 위한 Caffe 패키지를 설치하는 과정을 정리한 것이다.

컴퓨터의 자세한 사양은 http://prod.danawa.com/info/?pcode=2841137 에 자세히 나와있다.

간략히 정리하면 다음과 같다.

CPU: i7-4720HQ 2.6GHz(3.6GHz)

Memory: 16GiB 

GPU: nvidia 지포스 GTX970M with 4GiB memory


운영체제 설치

우분투 16.04 64bit 버전을 다운로드하여 설치한다. 자세한 설치 방법은 다루지 않는다.


그래픽 카드 드라이버 설치


인공지능 딥러닝에 사용하는 빠른 연산능렬을 활용하기 위해서는 CUDA를 사용할 수있도록 하는 최신 드라이버를 설치해야 한다.

엔비디아 홈페이지에서 다운로드 받을 수도 있지만 조종 최신 버전이 아니거나 다른 프로그램과 호환이 안되거나 하는 문제가 있으므로 ppa로 설치하는게 추천된다.

먼저 우분투에 ppa 패키지 repository를 추가한다.


$ sudo add-apt-repository ppa:graphics-drivers/ppa

그리고 업데이트


$ sudo apt update
$ sudo apt-get update
$ sudo apt-get upgrade

이제 제어판 혹은 System Setings에서 Software & Updates를 선택한다.

 Additional Drivers 항목에서 다음을 선택한다.



CUDA 설치하기


nvidia 다운로드 페이지로 이동한다음 https://developer.nvidia.com/cuda-80-ga2-download-archive

Linux Ubuntu 16.04 x86_64 .deb 버전을 다운로드 한다. 회원 가입이 필요하다.

터미널을 열고 Download 폴더로 이동한 다음 다음을 수행한다.


$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb 

apt 업데이트 후 CUDA를 설치한다.


$ sudo apt-get update
$ sudo apt-get install cuda

CUDA 설치 패스를 적용한다.


$ export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

설치가 잘 되고 작동하는지 확인하기 위해 설치 폴더 안에 있는 샘플 프로그램 폴더로 이동하여 빌드를 수행해본다.

여기는 유저 영역이 아닌 시스템 영역이므로 sudo를 사용한다.


$ cd /usr/local/cuda/samples/5_Simulations/fluidsGL
$ sudo make

빌드가 정상적으로 이루어지면 녹색으로 된 실행 파일이 생성된다.


$ ./fluidsGL

새 창이 뜨고 동작하면 정상적으로 설치된 것이다.



OPENCV설치하기


영상인식을 위한 이미지 처리를 하기 위해 opencv 가 필요하다. 여기서는 3.3.1 버전을 설치한다.

opencv 를 설치하기 위해 필요한 패키지들을 설치한다.


$ sudo apt-get install build-essential cmake git pkg-config libjpeg8-dev \
libjasper-dev libpng12-dev libgtk2.0-dev \
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev gfortran
$ sudo apt-get install libtiff5-dev 

최적화를 수행하기 위한 BLAS 패키지를 설치한다.


sudo apt-get install libatlas-base-dev

opencv 와 caffe 를 사용하기 위해서는 python2.7-dev패키지가 필요하다.


$ sudo apt-get install python2.7-dev

파이썬에서 수치연산등을 수행하는 패키지인 numpy를 설치하기 위해 pip를 설치한다.


$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py

이제 pip 명령어를 사용하여 numpy 를 설치할 수 있다.


$ pip install numpy

opencv 설치하기

home 디렉토리로 이동하여 opencv 와 contrib 를 다운로드 받고 3.3.1 버전으로 체크아웃 한다.


$ cd ~
$ git clone https://github.com/Itseez/opencv.git
$ cd opencv
$ git checkout 3.3.1
$ cd ~
$ git clone https://github.com/Itseez/opencv_contrib.git
$ cd opencv_contrib
$ git checkout 3.3.1


opencv build 하기

opencv 안에 build 폴더를 만들고 cmake로 Makefile을 생성한다음 빌드한다.


$ cd ~/opencv
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
	-D CMAKE_INSTALL_PREFIX=/usr/local \
	-D INSTALL_C_EXAMPLES=ON \
	-D INSTALL_PYTHON_EXAMPLES=ON \
        -D BUILD_NEW_PYTHON_SUPPORT=ON \
        -D WITH_OPENGL=ON \
        -D WITH_V4L=ON \
        -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
	-D BUILD_EXAMPLES=ON ..
  
$ make
$ sudo make install
$ sudo ldconfig

CuDNN 설치하기


이제 CuDNN을 설치한다. Cudnn GPU가속 기능을 활용하여 Deep 신경망을 만들기 위한 primitives를 제공하는 패키지다.

다시 nvidia의 다운로드 페이지  https://developer.nvidia.com/rdp/cudnn-download 로 이동하여
앞서 설치한 CUDA 8.0을 위한 다음 항목을 다운로드 한다.



cuDNN v7.0.5 Runtime Library for Ubuntu16.04 (Deb)
cuDNN v7.0.5 Developer Library for Ubuntu16.04 (Deb)

Runtime을 먼저 설치하고 나서 Developer패키지를 설치해야 한다.


$ sudo dpkg -i libcudnn7_7.0.4.31-1+cuda8.0_amd64.deb
$ sudo dpkg -i libcudnn7-dev_7.0.4.31-1+cuda8.0_amd64.deb


설치 메뉴얼(cuDNN Install Guide)에 적혀있는 대로 정상적으로 설치되었는지 확인하기 위해 다음을 수행해본다.


샘플 코드를 HOME 폴더로 복사하고 


$ cp -r /usr/src/cudnn_samples_v7/ ~/


복사한 폴더로 이동 후 빌드한다.


$ cd cudnn_samples_v7/mnistCUDNN/

$ make clean && make


그런데 이때 문제가 발생하는 경우가 있다.


/usr/local/cuda/include/cuda_runtime_api.h:1628:101: error: use of enum ‘cudaDeviceP2PAttr’ without previous declaration

이런 경우에는 /usr/include/cudnn.h 파일을 root권한으로 편집기로 열고 다음과 같이 변경한다.


#include "driver_types.h" <-- 부분을 아래와 같이 변경

#include <driver_types.h>


이렇게 저장한 다음 다시 빌드를 시도하면 정상적으로 완료되는 것을 확인할 수 있다.


$ ./mnistCUDNN cudnnGetVersion() : 7005 , CUDNN_VERSION from cudnn.h : 7005 (7.0.5) Host compiler version : GCC 5.4.0 There are 1 CUDA capable devices on your machine : device 0 : sms 12 Capabilities 5.2, SmClock 1126.5 Mhz, MemSize (Mb) 4040, MemClock 2505.0 Mhz, Ecc=0, boardGroupID=0 Using device 0 ... Result of classification: 1 3 5 Test passed!

 추가 내용

Tensorflow를 설치하게 되면 이 CUDNN의 라이브러리 파일의 위치를 알아야 한다. 보통 /usr/local/cuda-8.0/lib64/ 이라는 곳에 존재하는데 
debian 패키지로 설치하는 경우 설치 위치가 조금 이상하다. 

엉뚱하게도 아래와 같은 곳에 lib 파일이 있는것을 확인할 수 있다. 나중에 cudnn 위치 지정에 햇갈리지 않도록 하자.


/usr/lib/x86_64-linux-gnu/libcudnn.so.7.0.5



Caffe 설치하기


몇가지 패키지들을 추가로 설치한다.


$ sudo pip install scikit-image protobuf lmdb pandas

git 명령어로 caffe를 다운로드한 다음 Makefile.config 를 복사한다.


$ git clone https://github.com/BVLC/caffe
$ cd caffe
$ cp Makefile.config.example Makefile.config

복사한 Makefile.config 파일을 편집기로 열어 다음과 같이 수정한다. 원본 파일은 첨부파일 참조


# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1

# Uncomment if you're using OpenCV 3
OPENCV_VERSION := 3

# We need to be able to find Python.h and numpy/arrayobject.h.
PYTHON_INCLUDE := /usr/include/python2.7 \
        /usr/local/lib/python2.7/dist-packages/numpy/core/include

# Uncomment to support layers written in Python (will link against    Python libs)
WITH_PYTHON_LAYER := 1

# Whatever else you find you need goes here.
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/

이제 빌드를 수행한다. 각각 따로 수행하는것이 좋다.


$ make all & make test && make runtest && make pycaffe


파이썬에서 caffe 모듈을 불러와서 정상적으로 실행되는지 확인한다.


$ python
>>> import caffe

아무 에러가 없으면 정상적으로 설치가 된 것이다.


전체 명령어는 별도의 첨부파일을 참조하면 된다.



2018/1/30, CUDNN 설치부분 추가됨

+ Recent posts