AWS GPU 인스턴스에 Caffe(py-faster-rcnn) 설치
2016-09-16 00:00:00AWS의 GPU 인스턴스 g2.2xlarge에 CUDA와 OpenCV, Caffe(py-faster-rcnn)를 차례로 설치하는 과정입니다.
전체적으로 2시간 이상 정도 소요됩니다.
저도 시행착오를 많이 겪은 만큼 중간에 제대로 설치 되었는지 체크하는 과정이 중요합니다.
Caffe 설치시 CUDA 7.5버전과 cuDNN 5.1버전을 이용했습니다.
기본적인 패키지 설치는 대부분 비슷합니다. CUDA 설치 시에 대부분이 의존성 설치로 되었으므로 항목을 놓치는 것만 주의하시면 되겠습니다.
저는 프로젝트마다 인스턴스를 생성하기에 virtualenv를 구성하지 않았습니다.
pip과 matplotlib가 caffe 컴파일 시 충돌이 일어나는 것 같아서 패키지 설치를 진행하였습니다.
2016년 9월 16일에 설치하였습니다.
- -d : detach, -R : new screen or reattach, -ls : list
screen -ls screen -d -R newname
SFTP 등을 이용하여 CUDA 다운로드 패키지를 EC2로 전송합니다.
sudo dpkg -i cuda-repo-ubuntu1404_7.5-18_amd64.deb
패키지 업데이트 & 업그레이드를 진행하여 CUDA 패키지를 추가합니다.
sudo apt-get update sudo apt-get upgrade
Git과 개발 도구를 설치합니다.
sudo apt-get install git sudo apt-get install python-pip python-dev sudo apt-get install gcc g++ gfortran
드라이버가 포함된 패키지입니다. 이 과정을 건너뛸 경우 CUDA 설치가 제대로 안될 수 있습니다. linux-image, linux-headers는 인스턴스에 미리 설치되어 있었습니다.
sudo apt-get install linux-image-extra-`uname -r`
Caffe Prerequisite
Caffe에 필요한 라이브러리 설치를 진행합니다.
http://caffe.berkeleyvision.org/install_apt.html
sudo apt-get install opencl-headers build-essential \ protobuf-compiler libprotoc-dev libboost-all-dev libleveldb-dev \ hdf5-tools libhdf5-serial-dev \ libopencv-core-dev libopencv-highgui-dev \ libsnappy-dev libsnappy1 libatlas-base-dev cmake libstdc++6-4.8-dbg \ libgoogle-glog0 libgoogle-glog-dev libgflags-dev liblmdb-dev
CUDA 7.5 설치
sudo apt-get install cuda sudo apt-get clean
cuDNN v5.1 설치
GPU를 이용한 딥러닝을 위한 cuDNN을 설치합니다. NVIDIA 멤버십 가입이 필요합니다.
tar xvzf cudnn-7.5-linux-x64-v5.1.solitairetheme8 sudo cp -v cuda/include/* /usr/local/cuda/include sudo cp -v cuda/lib64/libcudnn* /usr/local/cuda/lib64/ sudo ldconfig /usr/local/cuda/lib64
sudo ldconfig
를 진행했을 때 아래의 메시지가 나타나는 것은 영향이 없습니다.
/usr/local/cuda/lib64/libcudnn.so.5 is not a symbolic link
CUDA 환경변수 설정
vi ~/.bashrc export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH sudo -i reboot
Caffe와 py-faster-rcnn/caffe-fast-rcnn을 둘다 컴파일 할 경우 cuDNN 호환 에러가 발생합니다.
이 문제의 해결방법은 두 프로젝트 모두 Caffe 기반이므로 caffe-fast-rcnn에서 caffe master branch와 프로젝트 merge를 하는 방법입니다.
https://github.com/rbgirshick/py-faster-rcnn/issues/237
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
cd py-faster-rcnn/caffe-fast-rcnn
git remote add https://github.com/BVLC/caffe.git
git fetch caffe
git merge caffe/master
위 링크를 보시면 merge 한 후 충돌이 일어난 부분을 주석처리합니다.
vi include/caffe/layers/python_layer.hpp # 주석처리 // self_.attr("phase") = static_cast<int>(this->phase_);
아래 경로의 requirements.txt에 따른 python 모듈을 모두 설치합니다.
# sudo -H pip install --upgrade setuptools cd py-faster-rcnn/caffe-faster-rcnn/python for req in $(cat requirements.txt); do sudo -H pip install $req | cut -d ">" -f1; done
OpenCV GPU 설치
OpenCV를 사용하려면 Caffe 설치 전에 먼저 설치 해야 합니다.
그렇기 때문에 먼저 필요한 pip 설치를 먼저 진행 한 후에 OpenCV를 설치합니다.
순서대로 하지 않으면 Prerequisite 조건이 만족되지 않아 컴파일 시 오류가 발생할 수 있습니다.
OpenCV는 현재 git master branch인 3.1.0-dev 버전을 설치했습니다.
또한 GPU를 사용하여 컴파일했으므로 이전에 포스팅했던 OpenCV와 Tensorflow를 설치 했던 경우와 차이가 있습니다.
Prerequisite
라이브러리 대부분이 CUDA 설치 시에 설치 되었습니다.
# sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev (설치되어 있음)
sudo apt-get install libv4l-dev
git clone https://github.com/opencv/opencv.git cd opencv mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=ON \ -D WITH_CUBLAS=1 \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D BUILD_EXAMPLES=ON .. make -j8 sudo make -j8 install sudo ldconfig
http://stackoverflow.com/questions/29274638/opencv-libdc1394-error-failed-to-initialize-libdc1394
# sudo apt-get install libdc1394-22 libdc1394-22-dev(설치되어 있음)
sudo apt-get install libdc1394-utils
sudo ln /dev/null /dev/raw1394
버전이 제대로 설치 되었는지 확인합니다.
python >>> import cv2 >>> cv2.__version__ '3.1.0-dev'
py-faster-rcnn - caffe 설치
build cython
Caffe를 설치 한 후에 EC2 인스턴스의 GPU 장치가 올바르지 않다는 오류가 발생합니다. 이 오류를 해결하는 링크가 아래에 있습니다.
cd py-faster-rcnn/lib # https://github.com/rbgirshick/py-faster-rcnn/issues/2 vi fast_rcnn/config.py __C.USE_GPU_NMS = False make -j8
build caffe, pycaffe
주석을 읽어보시고 환경에 맞게 설정하셔야 합니다.
cd py-faster-rcnn/caffe-faster-rcnn cp -v Makefile.config.example Makefile.config vi Makefile.config #### 주석 해제 #### # CUDNN 활성화 USE_CUDNN := 1 # OpenCV 3.0.0 이상 버전 OPENCV_VERSION := 3 # 로컬 경로 numpy 추가 PYTHON_INCLUDE := /usr/include/python2.7 \ /usr/lib/python2.7/dist-packages/numpy/core/include \ /usr/local/lib/python2.7/dist-packages/numpy/core/include # caffe installation 조건 WITH_PYTHON_LAYER := 1 # sudo apt-get install pkg-config가 설치되어 있음 USE_PKG_CONFIG := 1
mkdir build
cd build
cmake ..
make -j8 all
make -j8 pycaffe
make -j8 install
make -j8 runtest
Caffe 환경 변수 설정
이 설정을 하지 않으면 설치를 해도 import 에러가 발생합니다.
vi ~/.bashrc export CAFFE_ROOT=/home/ubuntu/py-faster-rcnn/caffe-fast-rcnn export PYTHONPATH=/home/ubuntu/py-faster-rcnn/caffe-fast-rcnn/python:$PYTHONPATH
X Windows
EC2의 X Windows를 이용하여 사진이나 동영상을 원격으로 볼 수 있게 합니다.
Windows의 경우 Xmanager나 Xming이 설치 되어 있어야 합니다.
드라이버 설치 시 GTK가 설치 되어 있기 때문에 열려있는 포트번호를 확인하고 DISPLAY 환경 변수를 추가합니다.
netstat -an | grep "LISTEN " # 60xx port일 경우 export DISPLAY=localhost:xx.0
Caffe 설치를 완료하였습니다.
설치가 제대로 되었는지 확인합니다.
python >>> import caffe >>> caffe.__version__ '1.0.0-rc3'
Test
https://github.com/rbgirshick/py-faster-rcnn
sudo -H pip install easydict
# https://github.com/jflesch/paperwork/issues/283 python-gi-cairo or python-gobject-cairo
sudo apt-get install python-gi-cairo
sh py-faster-rcnn/data/scripts/fetch_faster_rcnn_models.sh
py-faster-rcnn/tools/demo.py
demo.py를 실행했을 때 아래와 같은 화면이 뜨면 성공입니다!