본문 바로가기

Programming/Environment Settings

ubuntu 16.04 에 caffe 설치하기 from scratch! 1)CUDA와 CUDNN

지난주에 3일에 걸쳐서 윈도우에 caffe 설치를 시도했다..
정말 많은 에러가 있었지만 하나씩 해결했고, 마지막 단계에서 에러는 해결 못하고 우분투로 pc를 옮겼다 .. ㅜㅜㅜ
비쥬얼스튜디오 컴파일에러라는 거 말고는 왜 오류가 났는지 도무지 알 수가 없었다..

이제부터는 우분투 os가 깔려있는 pc를 내 자리에서 원격조종하면서 caffe를 설치해보려 한다.
그 과정을 헤메는 것까지 전부다 블로그에 적으면서 동시에 설치해보려고 한다.
(비록 실패했지만.. 조만간 윈도우 설치 방법도 포스팅 할 예정이다.)

나는 우분투를 써본 경험이 거의 없으므로.. 나와 같이 우분투를 처음 써보고 카페를 설치하려는 사람들이 헤메지 않기 위해 참고하면 좋을것 같다.

1.  VGA(그래픽카드) 확인하기.

VGA 의 약자는 Video Graphic Arrays이다. 사실 처음 들어봤다. 그래픽카드라고 생각하면 될 것같다.
 GPU 버전의 caffe를 설치할 예정이기 때문에, 컴퓨터에 그래픽카드와 그래픽카드 드라이버가 설치되있는지 확인하고,
만약 아니라면 설치하는 것이 좋을 것 같다. 

~$ lspci -k

위와같은 코드를 터미널에 입력하면 각종  장치목록이 나온다.
그중에 VGA를 확인한다.

이렇게 사용중인 그래픽카드와 커널 정보를 확인 할 수 있다. 
그래픽카드가 두개 설치되어서 두개가 뜬 모양이다.
GPU장치는 1b80 두개,
둘 다 드라이버로 버전 390을 쓰고있다. 
그래픽카드랑 드라이버가 설치 되어 있으니 마음 놓고 caffe를 본격적으로 설치한다.



2. Caffe Installment Tutorial 따라하기

나는 caffe 공식 페이지에서 우분투 설명서를 찾아 따라했다.
- The following guide includes the how-to instructions for the installation of BVLC/Caffe on Ubuntu 16.04 with Cuda Toolkit 8.0.61-1, CUDNN library 7.0.2.38-1 and OpenCV version 2.x or 3.3. This guide also covers the KUbuntu distribution and the related distributions.

설명 맨 윗줄을 보니, 내가 caffe 설치 전에 설치해야 할 것들이 명확해졌다.
CUDA Toolkit 8.0,
CUDNN 7.0
OpenCV version 2.x or 3.3


2-1. CUDA Toolkit 설치


CUDA 설치는 NVIDIA CUDA Installation Guide for Linux 페이지를 참고하였다.
https://docs.nvidia.com/cuda/archive/8.0/cuda-installation-guide-linux/index.html

홈페이지 설명에 따르면 CUDA 설치는 2가지 방법으로 할 수 있다.
distribution-specific packages, 또는 a distribution-independent package. 
distribution specific을 추천한다고 써있으므로 이 방법으로 설치해본다.
아래 링크에서 CUDA Toolkits를 다운받는다.
https://developer.nvidia.com/cuda-80-ga2-download-archive

최신버전은 9.2이지만 우리는 8.0이 필요하므로 위 링크에서 다운로드 한다.

위와같이 내 PC에 맞게 설정하면 다운로드 버튼이 나온다.

다운로드 후 다운로드 받은 경로에서 terminal을 실행하고 

sudo sh cuda_8.0.61_375.26_linux.run

으로 runfile을 실행시킨다.

그러면 몇몇 nvidia 약관이 나오고, 다음과 같은 물음에 대답하면 된다. 

1.accept : 동의한다.
2. 지금 컴퓨터에 375 이상의 드라이버가 깔려있으므로 드라이버 설치를 하지 않는다고 대답했다. n
3. y
4. 그냥 엔터 : 디폴트 경로
5. y
6. y
7. 그냥 엔터 : 디폴트 경로

설치가 완료되면 생성된 cuda-8.0폴더를 path variable에 추가해준다.
$ export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64\ 
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
$ source ~/.bashrc
32bit os의 경우 lib64 -> lib

$ nvcc --version 
위 명령어로 쿠다 버전 확인한다. 아래처럼 뜨면 잘 설치됬다는 뜻이다.

이제 Nouveau 드라이버를 disable할 차례이다. Display Driver 설치를 위해 필요한 작업이다. 

$ sudo vi /etc/modprobe.d/blacklist.conf 
으로 Vi 편집기를 열어 아래 내용을 추가해 파일을 생성한다. // VI 에디터 검색하여 참고
blacklist nouveau 
options nouveau modeset=0

2-2. CUDNN library 7.0 설치 
https://developer.nvidia.com/rdp/cudnn-archive

위 사이트에 들어가서 자신의 CUDA와 맞는 버전의 CUDNN을 다운받는다. 
위에서 CUDA 8.0을 설치했고, caffe 페이지에서 7.0을 요구하였으므로  다음을 다운받았다.


CUDNN을 설치하기 위해서는 엔비디아 계정이 필요하다.
터미널에서 다운받은 경로로 이동후 
$ tar -xzvf cudnn-8.0-linux-x64-v7.tgz 
명령어로 cudnn파일의 압축을 푼다. 

CuDNN의 라이브러리들을 CUDA의 경로에 복사해야 한다. 이는 다음과 같은 명령어로 실행한다.

$sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64
$ sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h 
$ sudo chmod a+r /usr/local/cuda-8.0/lib64/libcudnn*

cuda-8.0 는 CUDA디렉토리 이름
cuda는 CuDNN이 압축이 풀린후 디렉토리 이름.

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
를 입력했을 때, 출력화면에 CUDNN_MAJOR가 포함되어 있으면 제대로 설치 되었음을 확인할 수 있다.