Ubuntu 14.04에서 PyCaffe 설치하기

Ubuntu 14.04에서 PyCaffe를 구동하기 위한 수 일 동안의 삽질을 정리해보았다. 여러분은 이 포스트를 통해 조금이라도 삽질을 줄일 수 있길 바란다.

2016. 01. 13.

이 포스트는 아래의 문서를 참고로하여 작성되었습니다.

Dependencies 설치 및 환경 구축

Python

당연하지만 PyCaffe의 구동을 위해서는 Python의 설치가 필요하다. 대부분의 경우 이미 설치가 되어있겠지만, 만약 그렇지 않다면 다음과 같이 설치하자.

sudo apt-get install python-dev

필요한 라이브러리 설치

Caffe 구동을 위해서는 여러 라이브러리의 설치가 필요하다.

sudo apt-get update
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev

CUDA

Theano와 마찬가지로, Caffe도 딥 러닝 연산을 위해 GPU를 사용할 수 있다. Caffe에서는 GPU 연산을 위해 CUDA api를 사용한다.

CUDA는 NVIDIA에서 개발한 GPU 병렬 컴퓨팅 API이다. 어떤 연유인지는 잘 모르겠으나, 대부분의 문서에서 CUDA는 터미널이 아닌 GUI로 설치하는 것을 추천한다. 포스트의 작성 시점에서 최신 버전은 CUDA 7.5이다.

https://developer.nvidia.com/cuda-downloads. 이 곳에서 내려받을 수 있다.

Ubuntu는 Linux / x86_64 / Ubuntu / 14.04 의 순서로 선택하여 내려받으면 된다. deb 파일과 runfile은 취향껏 선택하자.

BLAS

Caffe 공식 설치 가이드라인에서는 BLAS 라이브러리를 설치할 것을 권장하고 있다. BLAS는 간단히 말하자면 리니어 연산에 대해 정의해놓은 서브 루틴의 모음이다.

sudo apt-get install libatlas-base-dev

위는 ATLAS를 사용하는 예시이며, 그 밖에 OpenBLAS나 다른 라이브러리를 사용해도 무방하다.

그 밖의 것들

우분투 14.04에서의 구동을 위해 필요한 라이브러리는 다음과 같다.

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

Caffe 설치 및 컴파일

내려받기

이제 Caffe를 컴파일하기 위한 환경 구축이 모두 완료되었다. 자신의 작업 폴더로 이동하여 아래와 같이 Caffe의 코드를 내려받자.

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

Makefile.config 수정

컴파일하기에 앞서 설정 파일을 환경에 맞기 수정해야한다. '''Makefile.config'''를 열고 필요한 부분을 수정하면 되며, 특히 중요한 부분들은 다음과 같다.

BLAS 설정

설치 과정에서 자신이 설치한 BLAS 라이브러리를 지정해준다.

# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE := /path/to/your/blas
# BLAS_LIB := /path/to/your/blas

Python

PyCaffe를 이용하기 위해서 파이썬의 경로를 지정한다. 설치시의 환경에 따라 경로가 조금씩 다를 수 있으니, 해당하는 디렉토리를 따라가보며 자신의 환경에 맞는 경로를 지정하자.

# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
PYTHON_INCLUDE := /usr/include/python2.7 \r
    /usr/local/lib/python2.7/dist-packages/numpy/core/include/

# We need to be able to find libpythonX.X.so or .dylib.
PYTHON_LIB := /usr/lib

만약 Anaconda Python을 사용한다면 위를 주석처리하고 아래의 줄을 찾아 주석을 해제한다.

ANACONDA_HOME := $(HOME)/anaconda
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \r
    # $(ANACONDA_HOME)/include/python2.7 \r
    # $(ANACONDA_HOME)/lib/python2.7/dist-packages/numpy/core/include \r

# We need to be able to find libpythonX.X.so or .dylib.
# PYTHON_LIB := /usr/lib
PYTHON_LIB := $(ANACONDA_HOME)/lib

그 밖의 설정은 빌드에 영향을 끼치지는 않으며, 주석을 읽어보고 환경에 맞게 값을 조율하면 된다.

컴파일

각 단계마다 수 분의 시간이 소요된다.

make clean
make all
make test
make runtest

간혹 필요한 패키지가 설치되지 않았다는 경고나 에러 메시지가 뜨는 경우가 있다. 이럴 때에는 해당하는 패키지를 설치하고 clean 부터 다시 진행해야한다.

PyCaffe

환경 구축

앞서 내려받은 caffe 디렉토리에 python 이라는 하위 디렉토리가 존재한다. 그 곳으로 이동하여 다음과 같이 설치를 진행한다.

for req in $(cat requirements.txt); do sudo pip install $req; done

간혹 scipy를 비롯한 일부 라이브러리가 설치되지 않는 경우가 있다. 이는 pip의 버전이 낮아 발생하는 경우가 많으며, pip의 버전 업그레이드를 통해 해결할 수 있다.

마지막으로 Python과 caffe, cuda 라이브러리의 경로를 지정해준다. ~/.bashrc에 다음 세 줄을 추가한다.

export PYTHONPATH=~/Documents/caffe/python:$PYTHONPATH
export CAFFE_ROOT=~/Documents/caffe
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

bash 적용을 위해 터미널을 재시작한다.

컴파일

다시 (caffe 경로)/python 디렉토리로 이동한다. 컴파일은 마찬가지로 간단하다.

make clean
make pycaffe

설치 완료!

Python을 실행하여 다음과 같이 라이브러리 import를 시도하자.

>>> import caffe

성공적으로 모든 설치가 완료되었다면 아무런 오류 메시지가 뜨지 않을 것이다.

크리에이티브 커먼즈 라이선스

이 저작물은 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

© 2011 - 2020 Do Hoerin, LYnLab