linux, caffe, opencv, tensorflow를 설치하자.
<참고: http://thebeautifulfuture.tistory.com/68>
<참고: https://github.com/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide>
<참고: 이전 정리한 내용(old), 새롭게 업데이트한 내용(new)>
해결 (updated on 2018.04.20)
0. linux를 설치(new), 약 30분 소요.
그냥 설치하면 될 것 같지만, linux version에 따라 caffe, tensorflow, opencv를 설치할 수 있는 버전이 달라지는 것 같다. 물론 최신 버전이면 좋을 듯하다.
-> linux 16.04.xx LTS를 설치
-> Install 보단 Try Ubuntu로 집입 후 Install Ubuntu를 추천
-> Download updates, Install third-party software는 uncheck후 진행.
->필요한 옵션 설치 및 세팅
- network 커넥션: IP, netmask등 세팅 -> 인터넷 열어서 확인하기(혹은 ifconfig로 확인)
- 한글 사용: 참고: http://luckeex.tistory.com/289
-- System Settings -> Language Support -> 언어탭에서 한국어를 맨위로 올린다.
-- System Settings -> Language Support -> 맨 아래 Keyboard input method system: IBus로 선택
-- System Settings -> Text Entry -> + -> ibus 입력해서 한국어(ibus)를 추가함.
-- Win키+space로 우상단 En->한국어 바뀜을 확인.
-- (안해도 됨) System Settings -> Keyboard -> Typing -> Alter. Char. Key -> Alt Left
-> 기타 설치 추천 소프트웨어: Meld(winmerge같은 프로그램)
* 혹시 ubuntu설치 후, PCIe Bus Error: severity=Corrected 와 같은 에러가 생긴다면
<https://unix.stackexchange.com/questions/327730/what-causes-this-pcieport-00000003-0-pcie-bus-error-aer-bad-tlp>
sudo gedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 찾아서 아래와 같이
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=nommconf" 밑줄부분 추가
저장.
1. 그래픽 드라이버를 설치(new)
그냥 설치하지 않아도 기본적으로 설치가 된다. 혹은 아래를 따라하면 설치가 된다.
System Settings->Software&Updates->Additional Drivers -> choose Using NVIDIA binary driver -> apply change
만약 여러개의 드라이버가 보인다면, 하나만 남겨두고 제거한 후, 아래를 수행하자(동시에 여러개가 떠 있는 경우, 경우에 따라 원치않은 드라이버를 선택하여 설치될 수 있다).
혹은 그냥 설치하고 싶다면,
>> http://www.linuxandubuntu.com/home/how-to-install-latest-nvidia-drivers-in-linux
sudo apt-get purge nvidia*
sudo add-apt-repository ppa:graphics-drivers
sudo apt-get update
sudo apt-get install nvidia-375
lsmod | grep nvidia
2.3.4의 다운로드를 한번에 걸면 효율적.
2. CUDA install(new)
https://developer.nvidia.com/cuda-downloads 에 접속하기.
Linux->x86_64->Ubuntu0>16.04->deb(local)->download
최근에는 CUDA 9.1까지 나왔기에 8.0은 우하단 Legacy에 가야 받을 수 있음.
다운받은 폴더에서
`sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb`
`sudo apt-get update`
`sudo apt-get install cuda`
https://docs.nvidia.com/deploy/cuda-compatibility/index.html
CUDA-GPU compatibility check.
Pascal - 1080TI, 1080
Maxwell - TitanX
* 만약 dependency 에러가 생기면서 막줄이 안된다면 아래 참고
https://askubuntu.com/questions/598607/package-dependency-problem-while-installing-cuda-on-ubuntu-14-04
* sudo apt-get update -> Invalid 'Date' entry in Release file /var/lib/apt/lists/_var_cuda-repo-~~_Release
-> change date format to UTC
ex:) Date: 2016-09-23T15:09:35-07:00
If still get error, no solution.
-끝-
version check는
'ls /usr/local/cuda/lib64'
입력하여 확장자를 볼 경우, ~~~.so.8.0 식이라면 cuda 8.0이 설치된 것임.
https://developer.nvidia.com/cudnn
Download -> Log in -> Survey (pass) -> Download cuDNN v5.1 for CUDA 8.0 -> cuDNN v5.1 Library for Linux
'tar -zxvf cudnn-8.0-linux-x64-v6.0.tgz' (later version is not verified)
'sudo cp ./cuda/include/* /usr/local/cuda-8.0/include/'
'sudo cp ./cuda/lib64/* /usr/local/cuda-8.0/lib64/'
-끝-
version check는
'ls /usr/local/cuda/lib64/libcudnn*'
후 확장자를 봐서, ~~.so.5.1.5이면 5.1 버전임.
the path of CUDA and CUDNN will be set at 7.
4. NCCL install(new)
https://github.com/NVIDIA/nccl
master가 아닌 8.0으로 받을 것.
제약조건은 CUDA7.0 + Kepler GPU 이상이야 함.
(TITAN X Maxwell, TITAN 1080 Pascal, TITAN X Pascal이라면 여기에 해당됨.)
'unzip nccl-8.0.zip'
'cd nccl-8.0'
'make CUDA_HOME=/usr/local/cuda-8.0 test -j28'
'sudo make /usr/local/lib install'
확인하는 방법은.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./build/lib
./build/test/single/all_reduce_test 10000000
후 테이블처럼 숫자들이 나오면 성공.
=> 만약에 여기까지 설치 후, nvidia-smi시 failed to initialize nvml driver/library version mismatch 이 나온다면,
그냥 reboot하면 보통 해결됨.
If you will use Anaconda, then install below in Conda environment.
5. OpenCV 3.1 설치 (new)5.1 or 5.2
5.1 Just download and use it on python. (easy)
sudo apt-get install libopencv-dev python-opencv
5.2 Download and compile
opencv는 ubuntu의 경우 apt-get으로 설치가능하다.
귀찮으니 sudo su로 root로 실행하자.
sudo su
// 업데이트 및 다운로드
a.'apt-get update' and 'apt-get upgrade'
b.'apt-get install --assume-yes build-essential cmake git build-essential pkg-config unzip ffmpeg qtbase5-dev python-dev python3-dev python-numpy python3-numpy libopencv-dev libgtk-3-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev v4l-utils'
h.'apt-get install gtk2.0'
i.'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'
// 다운로드 폴더로 이동
'cd ~/Downloads'
'cd OpenCV'
'wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.2.0.zip'
'unzip opencv.zip'
'cd opencv-3.2.0'
'mkdir release'
'cd release'
// make 전 cmake로 conf를 설정함(아래 명령어 따라하면 됨).
// QT가 off임.
'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 ..'
* 만약 linux/videodev.h 파일이 없다고 하면
sudo apt-get install libv4l-dev
cd /usr/include/linux
sudo ln -s ../libv4l1-videodev.h videodev.h
* 만약 sys/videoio.h 파일이 없다고 하면위의 옵션에 WITH_V4L=OFF 으로 수정 and use below instead of upper cmake command.
'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=OFF -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=OFF -D WITH_OPENGL=OFF ..'
// make 후, 설치
grep ^processor /proc/cpuinfo | wc -l
CPU의 물리적 코어 수를 확인 후, make시에 make -j core수를 적어주면 빠르다. 'make -j8' // use cpu's 8 cores 활용 2h~
'sudo make install -j8'
// 다음 라인은 끝에 '를 포함하여야 함.
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'
버전이 나옴.
6. DIGITS 설치 및 사용(old)
- 1.1. 설치
-- https://developer.nvidia.com/digits 사이트보고 그냥하면 됨. 쉬움.
-- install link
--- https://github.com/NVIDIA/DIGITS/blob/master/docs/UbuntuInstall.md
- 1.2. 사용
-- https://github.com/NVIDIA/DIGITS/blob/master/docs/GettingStarted.md 에 가면, 사용 설명서가 있음.
-- ./runme.sh 서버 실행하기
-- 1.2.1 DIGITS 서버에 접속하기
--- http://localhost/ 혹은 http://localhost:5000/ 혹은 http://localhost:34448/
-- 1.2.2 데이터 셋 선택
-- 1.2.3 모델 선택
-- 1.2.4 학습
1.5 Anaconda install
7. 환경변수 설정
/etc/profile 파일의 맨 위에 다음을 추가하고 저장 후, 재로그인하면 된다.
sudo gedit /etc/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
# nccl
export NCCL_ROOT_DIR=/usr/local/nccl
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/nccl/lib
# digits
export DIGITS_HOME=~/digits
________________________________________________________________
8. caffe 설치(new)
// BVLC/caffe에서 복사해옴. 먼저 관련 라이브러리 업데이트
sudo apt-get updatesudo apt-get upgrade
<yochin> sudo apt-get install -y build-essential cmake git pkg-config sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install -y libatlas-base-dev sudo apt-get install -y --no-install-recommends libboost-all-dev sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev # (Python general) sudo apt-get install -y python-pip # (Python 2.7 development files) sudo apt-get install -y python-dev sudo apt-get install -y python-numpy python-scipy# (or, Python 3.5 development files) sudo apt-get install -y python3-dev sudo apt-get install -y python3-numpy python3-scipy# (OpenCV 2.4) sudo apt-get install -y libopencv-dev(or, OpenCV 3.1 - see the instructions below --> skip)
// caffe 다운로드
'git clone https://github.com/BVLC/caffe'
// 사용자권한을 바꿈.
chown -R ID:ID caffe (ID is yourid)
cd caffe
cp Makefile.config.example Makefile.config
복사한 후, 아래와 같이 되어있는지 확인한다. 없으면 추가하거나 수정한다. 앞부분에 아래와 같이 #이 없어야 함.
USE_CUDNN := 1USE_NCCL := 1
USE_OPENCV := 1
USE_LEVELDB := 1
USE_LMDB := 1
OPENCV_VERSION := 3
// \ 다음에 space 없어야 됨.
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/
// hdf5용 링크 교체
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
터미널창 새로 열고
cd caffe/python
for req in $(cat requirements.txt); do pip install $req; done
cd ..
// Makefile 수정 for Ubuntu16.04
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)을
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)으로 교체
# LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
LIBRARIES += glog gflags protobuf leveldb snappy \
lmdb boost_system boost_filesystem hdf5_hl hdf5 m \
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs opencv_videoio
으로 교체
// caffe build
cd /caffe
make all -j8
make test
make runtest
make pycaffe
make distribute
에러없이 완료되면 성공한 것!
이후, caffe 폴더를 ~/caffe로 이동.
caffe -version을 입력하면 버전을 확인할 수 있다.
9. PyCharm설치 및 module연결
https://www.jetbrains.com/pycharm/
Download -> Community -> Save -> 원하는 곳에 압축풀기(~/)
./bin/pycharm.sh
로 실행
간단한 테스트 프로젝트 및 python코드 생성
-Test Code-____________________________________________________________________
# coding=utf-8
__author__ = 'yochin'
import sys
sys.path.append('/usr/lib/python2.7/dist-packages')import numpy as np
import caffe
if __name__ == "__main__":
caffe.set_device(0)
caffe.set_mode_gpu()
____________________________________________________________________________________________
- ImportError: No module named caffe가 뜬다면 caffe모듈을 python이 읽을 수 있도록 설정해야 됨.
/caffe에 _caffe.so가 있는지 확인 후,
/etc/profile 에
PYTHONPATH에 caffe 경로가 추가되어있는지 바르게되어있는지 확인
아니면
export CAFFE_HOME=~/caffe
export PYTHONPATH=$CAFFE_HOME/python:$PYTHONPATH
과 같이 설정함.
10. Tensorflow 설치하기
tensorflow는 source부터가 아닌 binary를 그냥 사용하기로 함.
https://www.tensorflow.org/get_started/os_setup 에 접속하여 Pip install을 따라하면 되는데 다음과 같다.
'sudo apt-get install python-pip python-dev'
'sudo pip install tensorflow-gpu'
if you want to install a specific version of tensorflow, use below commnad
'sudo pip install tensorflow-gpu==1.2.0.rc0'
if you want to install by compiling, link below
http://goodtogreate.tistory.com/entry/TensorFlow-GPU-%EB%B2%84%EC%A0%84-%EC%9A%B0%EB%B6%84%ED%88%AC-1604%EC%97%90-%EC%84%A4%EC%B9%98-%ED%95%98%EA%B8%B0?category=620143
11. PyCharm에서 TF연결 및 테스트하기
https://www.tensorflow.org/get_started/os_setup#test_the_tensorflow_installation
를 따라하자
$ python...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>
'sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb` 혹은 `sudo dpkg -i cuda-repo-ubuntu1404-8-0-rc_8.0.27-1_amd64-deb``sudo apt-get update``sudo apt-get install cuda`
.make matcaffe.make distribute <외부에 배포시 필요함.안해도 됨>
# coding=utf-8__author__ = 'yochin'import syssys.path.append('/usr/lib/python2.7/dist-packages') import numpy as np import caffe import caffe.draw
if __name__ == "__main__": caffe.set_device(0) caffe.set_mode_gpu()
* error case>>> error: ‘CUDNN_PROPAGATE_NAN’ was not declared in this scope cudnn header의 path체크. 맞다면 cudnn버전 문제일수 있음.>>> fatal error: python.h: no such file or directory빌드시에 python 경로설정문제로 Makefile.config에서 PYTHON_INCLUDE의 경로가 맞는지 확인할 것.>>> error while loading shared libraries: libhdf5_hl.so.10: cannot open shared object file: No such file or directory
LD_LIBRARY_PATH가 제대로인지 체크할 것.