2018年8月27日 星期一

Installation of NVcaffe required by NVIDIA Digits in CentOS 7.5

前言
記錄一下如何在CentOS 7.5下安裝Nvidia Digits所需要的NVcaffe,跟caffe官方網站上面的BVLC(Berkeley Vision And Learning Center) caffe有些微不同,使用digits最好使用NVcaffe,不然就要再去做其他的設定才能使用,這邊不做討論。
記錄這篇的原因在於官方只提供Ubuntu 16.04的安裝教學,對於CentOS 7的使用者來說有些微的不同,很容易導致對兩個系統環境不熟的人造成不歸路。

使用環境
OS : CentOS 7.5 64bit
CUDA version : 9.0 (綁定於tensorflow)
cudnn : 7.1(綁定於tensorflow)
Tensorflow : 1.10 (版本有變請自行確認所需要的CUDA版本及cudnn版本)
protobuf : 3.4.0 (在這邊用不到,順便記錄)
Python : 2.7
Cmake : 3.6 (在這邊用不到,順便記錄)
Boost : 1.64 (綁定於Cmake及一些瑣碎問題,建議不要更動)
Digits : 6.1.1 (沒特別注意是否對於其他軟體有版本相依問題)
NVcaffe : 0.15.14 (跟著Digits官方github下載就對了)

安裝說明

首先更新yum,預設應該沒有sudo使用者,請自行找如何設定,或是直接用su
sudo yum update 
確認gcc版本是否最新
#sudo yum install gcc gcc-c++
安裝python和pip
#sudo yum install python python-devel python-pip pip
下載NVcaffe,參考Nvidia Digits的官方github的BuildCaffe.md說明
先決定要安裝的路徑,本人安裝在根目錄下,因此需要superuser的權限
告知系統caffe安裝路徑
#export CAFFE_ROOT=/caffe
之後請記得加入到環境變數中,digits啟動才不會找不到caffe
安裝caffe需要的python packges
#sudo pip install -r $CAFFE_ROOT/python/requirements.txt
剛才是用NVcaffe內提醒的需求進行安裝,有些沒有被提及的也需要,只是他們覺得大家應該都有而沒有標註,故需要使用下面指令檢查一些安裝
#sudo yum install protobuf-devel leveldb-devel openblas-devel snappy-devel opencv-devel boost-devel hdf5-devel gflags-devel glog-devel lmdb-devel
反正就是系統提示缺什麼就補什麼,再來請至$CAFFE_ROOT下複製make的設定檔
#cd $CAFFE_ROOT
#cp Makefile.config.example Makefile.config
進行客製化編譯設定
#sudo gedit Makefile.config
找到
BLAS := atlas 
更改並且新增一行
BLAS := open
BLAS_INCLUDE := /usr/include/openblas
Ubuntu使用的是atlas,但CentOS不是,需要改成OpenBlas
再來請找到
/usr/lib/python2.7/dist-packages/numpy/core/include
改掉lib成lib64
/usr/lib64/python2.7/dist-packages/numpy/core/include
再來設定使用GPU,找到
# USE_CUDNN := 1
刪除註解#符號改成下面這樣
USE_CUDNN := 1
註解掉CUDA版本檢查
#CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
          -gencode arch=compute_20,code=sm_21 \
          -gencode arch=compute_30,code=sm_30 \......................略
就可以開始make
sudo make all -j12
sudo make runtest
sudo make pycaffe
sudo make distribute
-j12是使用12核心make,runtest可以跳過也沒關係
再次檢查剛剛提及的環境變數即可完成安裝


登入啟動請直接新增指令至~/.bash_profile並在指令後面加上符號&