1. 程式人生 > >在ubuntu上配置cuda+cudnn+caffe(包括python和matlab介面)+digits

在ubuntu上配置cuda+cudnn+caffe(包括python和matlab介面)+digits

這篇算是自己對caffe學習的一個總結系列的開頭。首先因為caffe的依賴項比較多,配置起來也比較麻煩。這篇算是比較詳盡地把caffe的各種相關配置說清楚。轉載請註明出處。
推薦ubuntu14.04版本,因為digits的支援比較好。顯示卡支不支援GPU加速要搞清楚啊,不支援就全用CPU算吧,別浪費時間折騰cuda了。
大家基本要按照官方教程上面來。但是官方教程有的坑沒有點出來的,本文也一併列上了。

CUDA的安裝

  1. 禁用nouveau驅動,nouveau是ubuntu自帶的對nivida的開源驅動,對安裝nvidia的官方驅動會有問題,所以先將其禁用。
  2. 按Ctrl+Alt+F1 進入tty1控制檯,輸入

    sudo vim /etc/modprobe.d/blacklist-nouveau.conf

    在裡面寫上

    blacklist nouveau
    options nouveau modeset=0

    按esc 輸入:wq 儲存退出

    ps:vim編輯器很好用啊,還不會的小夥伴要抓緊時間學啊。

  3. 執行

    lspci | grep nouveau

    查詢pci匯流排中是否還有nouveau,grep後面接正則表示式過濾。

  4. 重新啟動

    sudo reboot

    ps:顯示卡驅動掛掉之後很可能你就看不到系統介面了,啟動之後顯示器一團漆黑,其實系統是在執行的。我的做法是先提前裝好了SSH服務,碰到這種情況就通過另一臺電腦SSH登陸進去安裝驅動。

  5. CUDA官網下載。其實應該先下載好的,如果沒來得及用圖形介面下載,用wget, curl什麼的下載也一樣。 據說331的驅動有坑啊,大家不要用那個驅動。下面安裝一些依賴項/

    sudo service lightdm stop
    sudo apt-get install g++
    sudo apt-get install freeglut3-dev

下載好的cuda是一個shell指令碼,執行

sudo sh cuda_7.5_linux.run

安裝先按空格到文件100%然後回答一些accept,yes的問題,預設就好。安裝完成後重啟,然後

ls /dev/nvidia*

生成四個左右以nvidia開頭的檔案,如果有,則說明安裝成功。沒有可以按照下面方法解除安裝:

sudo /usr/local/cuda-7.5/bin/uninstall_cuda_7.5.pl
sudo /usr/bin/nvidia-uninstall

最後,配置環境變數,我們直接放在系統配置檔案profile裡面,先開啟profile檔案
sudo vi /etc/profile

在最後面加入兩行程式碼:

export PATH=/usr/local/cuda-7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH

至此cuda安裝完畢

CUDNN安裝

CUDNN是給CUDA加速的。cudnn官網下載。貌似下載要先註冊,稽核通過還要幾天時間。下載好之後解壓。

cd cuda/include
sudo cp *.h /usr/local/include/
cd ../lib64
sudo cp lib* /usr/local/lib/
cd /usr/local/lib
sudo chmod +r libcudnn.so.4.0.4
sudo ln -sf libcudnn.so.4.0.4 libcudnn.so.4
sudo ln -sf libcudnn.so.4 libcudnn.so
sudo ldconfig

這樣CUDNN就安裝完畢了,是不是很簡單啊。

caffe的安裝

首先先安裝opencv,推薦2.4的版本。opencv1.x是純C語言編寫的,2.x c和c++的包都有,opencv3是隻用c++寫的。為了別人寫的程式碼也能正常執行,還是推薦裝2.x。
opencv2.4安裝很簡單了,下載下來解壓,然後進入目錄make, sudo make install就搞定了。

caffe官方下載 基本按照官方安裝指南就可以了,有幾個坑要稍微注意下。先安裝依賴:

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

下面這個我安裝一次跪一次,因為你每次安裝的版本都是最新的,但是最新的版本之間相互未必相容,所以這裡推薦手動安裝。

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

賈揚清大神還說了,大家一定要看清楚啊!

Note that glog does not compile with the most recent gflags version (2.1), so before that is resolved you will need to build with glog first.

我這裡推薦boost-1.55,gflags-2.0,glog-0.3.3。至少這個版本親測無誤。以後這種問題能不能解決不得而知,目前只好這樣了。

# glog
tar zxvf glog-0.3.3.tar.gz
cd glog-0.3.3
./configure
make && sudo make install
# gflags
unzip gflags-master.zip
cd gflags-master
mkdir build && cd build
export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
make && sudo make install
# lmdb
cd lmdb/libraries/liblmdb
make && sudo make install

下面開始配置caffe並且開始編譯了。

cp Makefile.config.example Makefile.config
# Adjust Makefile.config (for example, if using Anaconda Python, or if cuDNN is desired)
make all
make test
make runtest

配置檔案有幾點要注意:

# cuDNN acceleration switch (uncomment to build with cuDNN).
# USE_CUDNN := 1
# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1

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

這幾個地方根據自己情況選擇。
make all沒有問題的話,caffe就算成功了啊。
在開始下面內容之前,我們先用caffe跑個著名的mnist的例子吧(號稱深度學習的hello world)。

下載mnist資料

cd ~/caffe
sh data/mnist/get_mnist.sh
sh examples/mnist/create_mnist.sh

執行時,如果你有GPU,則不需要修改配置檔案,如果沒有gpu,則需要修改配置檔案lenet_solver.prototxt

sudo vi examples/mnist/lenet_solver.prototxt

將最後一行的solver_mode:GPU改為solver_mode:CPU

配置好後,就可以運行了

sh examples/mnist/train_lenet.sh

最後正確率反正99%點多吧,這個庫已經跑得很好了。

MKL的安裝

BLAS: install ATLAS by sudo apt-get install libatlas-base-dev or install OpenBLAS or MKL for better CPU performance.

為了獲取更好的效能,我們安裝MKL。
先去Intel官網註冊下載,學生可以申請學生版,裡面會有註冊號。
執行裡面install指令碼就可以安裝。
配置MKL:
sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
在檔案中新增內容
/opt/intel/lib
/opt/intel/mkl/lib/intel64
注意把路徑替換成自己的安裝路徑。 編輯完後執行
sudo ldconfig

如果改了預設路徑,在caffe裡面的Makefile.config也要改一下。
# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := mkl
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

DIGITS的安裝

digits官網下載
digits 相當於一個圖形化介面,對於初學者來說方便不少。另外還支援torch(另一個深度學習框架)。
這個只要根據官網教程做就可以了,ubuntu14.04就是這麼簡單,可以直接apt-get。

CUDA_REPO_PKG=cuda-repo-ubuntu1404_7.5-18_amd64.deb &&
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/$CUDA_REPO_PKG &&
sudo dpkg -i $CUDA_REPO_PKG
ML_REPO_PKG=nvidia-machine-learning-repo_4.0-2_amd64.deb &&
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/$ML_REPO_PKG &&
sudo dpkg -i $ML_REPO_PKG
sudo apt-get update
sudo apt-get install digits

python和matlab caffe安裝

python

先安裝依賴專案:(在caffe/python/requirements.txt裡面有詳細內容)

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

記得要在requirements的目錄下,而且安裝了pip哦,easy_install也可以的,稍微改下命令。
然後
make pycaffe

matlab

安裝好matlab之後,在配置檔案中配置matlab的路徑,

# This is required only if you will compile the matlab interface.
# MATLAB directory should contain the mex binary in /bin.
MATLAB_DIR := /usr/local/MATLAB/R2014a
然後:
make matcaffe