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網路執行結果