1. 程式人生 > >Ubuntu16.04安裝配置Caffe教程(GPU版)

Ubuntu16.04安裝配置Caffe教程(GPU版)

GPU版:http://www.linuxidc.com/Linux/2016-12/138870.htm

CPU版:http://www.linuxidc.com/Linux/2016-09/135034.htm

 

1   電腦配置及軟體說明
1)     Ubuntu 16.04 x64系統,GPU:Quadro M4000(提示:在linux下可以通過命令lspic | grep –i vga 檢視)

2)     Caffe:Convolutional Architecture for Fast FeatureEmbedding

3)     NVIDIA顯示卡驅動(不同的GPU對應不同的版本)

4)     CUDA 9.0

5)     cuDNN v7.0.5 for CUDA 9.0

6)     OpenCV 3.2.0

 

2          安裝NVIDIA GPU驅動
2.1         查詢GPU驅動
首先去NVIDIA官網http://www.nvidia.com/Download/index.aspx?lang=en-us檢視適合自己顯示卡的驅動並下載。如下圖1,圖2所示。

圖1. 填寫GPU和系統資訊

圖2. 搜尋結果

       本文中顯示卡型號是Quadro M4000,系統linux 64-bit,按照要求點選serach出現圖2所示搜尋結果,點選下載。本文中下載的驅動檔案是:NVIDIA-Linux-x86_64-384.111.run。

注意:我們要把這個檔案放到英文目錄(e.g. /home)下,原因是下面我們要切換到文字介面下,如果放到中文目錄下,我們沒有辦法進入這個目錄(沒有中文輸入法,且中文全部是亂碼)。

2.2         安裝GPU驅動
2.2.1         遮蔽自帶顯示卡驅動
1) 在終端下輸入: sudo gedit /etc/modprobe.d/blacklist.conf

2) 輸入密碼收在最後一行加上:blacklist nouveau. 這裡是將Ubuntu自帶的顯示卡驅動加入黑名單

3) 在終端輸入:sudo update-initramfs –u,使修改生效

4) 重啟電腦

2.2.2         安裝新驅動
1) 啟動電腦後,按Ctrl+Alt+F1~F6進入命令列介面(安裝GPU驅動要求在命令列環境),輸入使用者名稱和密碼進入使用者目錄

2) 輸入命令:sudo service lightdm stop

3) 進入驅動所在的資料夾,sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run,修改許可權。然後:sudo ./NVIDIA-Linux-x86_64-384.111.run,進入安裝程式

4) 完成安裝後,重啟電腦

5) 重啟電腦後,輸入以下指令進行驗證:sudo nvidia-smi,若列出了GPU的資訊列表則表示驅動安裝成功。如下圖3所示。

圖3. GPU資訊列表

3          安裝CUDA
CUDA是NVIDIA的程式語言平臺,想使用GPU就必須要使用cuda。

(1)   下載CUDA

首先在官網上https://developer.nvidia.com/cuda-downloads下載CUDA。下載CUDA時一定要注意CUDA和NVIDIA顯示卡驅動的適配性。現在的情況是:CUDA_8.0支援375.**及以上系列的顯示卡驅動;CUDA_9.0支援384.**及以上系列的顯示卡驅動;CUDA_9.1支援389.**及以上系列的顯示卡驅動。本文中的顯示卡驅動為384.111系列,所以不能下載最新版本的CUDA_9.1,最後下載的是cuda_9.0.176_384.81_linux.run(當然,CUDA_8.0也是沒問題的)。下載介面如下圖4所示。

圖4. CUDA_9.0下載介面

(2)   執行安裝程式

執行以下命令:

sudo chmod 777 cuda_9.0.176_384.81_linux.run

sudo ./cuda_9.0.176_384.81_linux.run

注意:執行後會有一系列提示讓你確認,但是注意,有個讓你選擇是否安裝nvidia384驅動時,一定要選擇否:Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.**?

因為前面我們已經安裝了更加新的nvidia384,所以這裡不要選擇安裝。其餘的都直接預設或者選擇是即可。

(3)   環境變數設定

開啟~/.bashrc檔案:sudo gedit ~/.bashrc

將以下內容寫入到~/.bashrc尾部:

exportPATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}

exportLD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

(4)    測試CUDA是否安裝成功

執行以下命令:

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

sudo make

sudo ./deviceQuery

如果顯示一些關於GPU的資訊,則說明安裝成功。如下圖5所示。

圖5. CUDA測試資訊

4          配置cuDNN
cuDNN是GPU加速計算深層神經網路的庫。

(1)   首先去官網 https://developer.nvidia.com/rdp/cudnn-download 下載cuDNN,需要註冊一個賬號才能下載。下載cuDNN時也一定要注意與CUDA版本的適配性,此資訊官網中已經給的很清楚。下載介面如下圖6所示。

圖6. cuDNN下載介面

(2)   下載cuDNN後進行解壓:sudo tar -zxvf ./cudnn-9.0-linux-x64-v7.tgz

(3)   進入解壓後的資料夾下的include目錄,在命令列進行如下操作:

cd cuda/include

sudo cp cudnn.h/usr/local/cuda/include  #複製標頭檔案到cuda標頭檔案目錄

(4)   進入lib64目錄下,對動態檔案進行復制和軟連結

cd ..

cd lib64

sudo cp lib*/usr/local/cuda/lib64/    #複製動態連結庫

cd /usr/local/cuda/lib64/

sudo rm -rf libcudnn.solibcudnn.so.7    #刪除原有動態檔案

sudo ln -s libcudnn.so.7.0.5libcudnn.so.7  #生成軟銜接

sudo ln -s libcudnn.so.7libcudnn.so      #生成軟連結

5          安裝OpenCV3.2
詳細的安裝請參考:http://www.linuxidc.com/Linux/2017-07/145446.htm

(1)   從官網(http://opencv.org/downloads.html)下載Opencv,並將其解壓到你要安裝的位置,假設解壓到了/home/opencv。

unzip opencv-3.2.0.zip

sudo cp ./opencv-3.2.0 /home/username

sudo mv opencv-3.2.0 opencv

 

(2)   安裝前準備,建立編譯資料夾

cd ~/opencv

mkdir build

cd build

 

(3)   配置

sudo apt install cmake

sudo cmake -D CMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..

 

(4)   編譯

sudo make -j8 (-j8表示平行計算,根據自己電腦的配置進行設定,配置比較低的電腦可以將數字改小或不使用,直接輸make)

 

(5)   安裝

以上只是將opencv編譯成功,還沒將opencv安裝,需要執行下面指令進行安裝:

sudo make install

6          配置Caffe
(1)   安裝相關依賴

sudoapt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-devlibhdf5-serial-dev protobuf-compiler

sudoapt-get install --no-install-recommends libboost-all-dev

sudoapt-get install libopenblas-dev liblapack-dev libatlas-base-dev

sudoapt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

(2)   下載Caffe

使用Git直接下載Caffe非常簡單,或者去https://github.com/BVLC/caffe下載。

下載完成後,會在家目錄下的下載裡找到caffe-master.zip,用unzip命令解壓到家目錄下,然後重新命名為caffe。

 

(3)   修改Makefile.config

因為make指令只能make Makefile.config檔案,而Makefile.config.example是caffe給出的makefile例子。因此,首先將Makefile.config.example的內容複製到Makefile.config:

sudo cpMakefile.config.example Makefile.config

開啟並修改配置檔案:

sudogedit Makefile.config #開啟Makefile.config檔案 根據個人情況修改檔案:

a.      若使用cudnn,則將

#USE_CUDNN:= 1

修改成:

USE_CUDNN:= 1

b.      若使用的opencv版本是3的,則將

#OPENCV_VERSION:= 3

修改為:

OPENCV_VERSION:= 3

c.      若要使用python來編寫layer,則將

#WITH_PYTHON_LAYER:= 1 

修改為WITH_PYTHON_LAYER := 1

d.      重要的一項,將

#Whatever else you find you need goes here. 下面的

INCLUDE_DIRS:= $(PYTHON_INCLUDE) /usr/local/include

LIBRARY_DIRS:= $(PYTHON_LIB) /usr/local/lib /usr/lib

修改為:

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/usr/lib/x86_64-linux-gnu/hdf5/serial      

這是因為Ubuntu16.04的檔案包含位置發生了變化,尤其是需要用到的hdf5的位置,所以需要更改這一路徑。

 

(4)   修改Makefile檔案

開啟Makefile檔案,做如下修改,將:

NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC$(COMMON_FLAGS)

替換為:

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX)-Xcompiler -fPIC $(COMMON_FLAGS)

 

(5)   編輯/usr/local/cuda/include/host_config.h

將其中的第115行註釋掉,將

#error-- unsupported GNU version! gcc versionslater than 4.9 are not supported!

改為:

//#error-- unsupported GNU version! gcc versionslater than 4.9 are not supported!

 

(6)   編譯

make all -j8  #-j根據自己電腦配置決定

 

(7)   測試

sudo make runtest

如果執行之後出現下圖7所示,說明caffe配置成功。

圖7. Caffe測試成功執行結果

7          MNIST資料集測試
配置caffe完成後,我們可以利用MNIST資料集對caffe進行測試,過程如下:

1.將終端定位到Caffe根目錄

cd ~/caffe

 

2.下載MNIST資料庫並解壓縮

./data/mnist/get_mnist.sh

 

3.將其轉換成Lmdb資料庫格式

./examples/mnist/create_mnist.sh

 

4.訓練網路

./examples/mnist/train_lenet.sh

訓練的時候可以看到損失與精度數值,如下圖8所示:

圖8. Lenet-5網路執行結果