1. 程式人生 > >caffe2環境配置:ubuntu16.04 LTS+GTX1070+CUDA8.0+cuDNN8.0+Caffe2

caffe2環境配置:ubuntu16.04 LTS+GTX1070+CUDA8.0+cuDNN8.0+Caffe2

主題

caffe2環境配置

背景

搭建一個平臺實踐機器學習演算法;賈揚清博士的盲粉,選擇caffe2。

環境

硬體配置

記憶體:16G
處理器:Intel® Core™ i7-7700 CPU @ 3.60GHz × 8
顯示卡:GeForce GTX 1070/PCIe/SSE2
硬碟:SSD 240G
其他:桌上型電腦,顯示器由NVIDIA顯示卡驅動

系統

作業系統:linux
系統版本:ubuntu16.04 LTS
核心:4.10.0-38-generic
系統型別:x86_64

安裝步驟

第一步:ubuntu系統安裝,略。

第二步:CUDA8.0安裝

CUDA的安裝我嘗試過兩種方法,有大家建議的runfile安裝,可以通過互動的文字介面選擇不安裝顯示卡驅動,當然了官方也建議以runfile安裝,但我最後是通過deb方式安裝成功的。

先說我的runfile安裝後出現的情況。runfile方式安裝成功後(命令列模式下輸入”nvcc -V”,有版本輸出,而且也填加了需要的環境變數),編譯不通過,報的錯誤是動態庫缺失(libcudadevrt和libcudart-static,這兩個只是編譯停止後報出來的,後續可能會有更多),但是我在檔案系統中搜索了這兩個庫,庫是存在的但是是靜態庫(.a格式而非.so),由於本人對編譯不是很精通,就沒有將編譯命令單獨抽出來修改,個人感覺安裝不是很成功,所以選擇重灌。

在runfile之前我就嘗試過deb方式安裝,但是都沒有成功。後來仔細閱讀官方說明文件(CUDA_Installation_Guide_Linux,在官網可以下到對應版本的,或者安裝完成後在/usr/local/cuda-8.0/doc/pdf中找),發現deb方式也可以選擇不安裝顯示卡驅動,而且可以實現選擇性的更新,我本人更青睞這種可以更新的安裝方式。下圖所示為官方文件對deb方式選擇性安裝的說明截圖。

cuda-deb-opetional-installation

因為我要自己選擇安裝顯示卡驅動(跟隨deb安裝的是最新的390,我想安裝低版本穩定的375),所以我的CUDA8.0安裝步驟是:

a. 將面向NVIDIA的開源驅動加入黑名單
方法是在‘/etc/modprobe.d/blacklist.conf’中加入如下兩行,新建一個nouveau-blacklist.conf檔案也可以:

blacklist nouveau
options nouveau modeset=0

b. 然後要輸入以下命令更新系統的啟動核心

$ sudo update-initramfs -u

可以通過”lsmod | grep nouveau”來檢視是否禁用成功。
在NVIDIA官網上選擇對應的版本的deb檔案,然後命令列進入檔案存放路徑,輸入以下命令

$ sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb //對應自己版本的.deb
$ sudo apt-get update
$ sudo apt-get install cuda-tookit-8-0
$ sudo reboot

CUDA的使用還需要新增環境變數,我的做法是在自己的使用者shell啟動指令碼中新增環境變數

$ vi ~/.bashrc 
//在.bashrc檔案中新增語句‘export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}’,並儲存
//如果是用runfile安裝,還需要新增動態連結庫路徑,‘export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}’
$ source ~/.bashrc //下次啟動就不用重新source

第三步GTX1070驅動安裝

在瀏覽一些安裝筆記時看到有人說高版本的驅動會存在問題,375問題比較少,所以選擇安裝375。安裝的方式是大家推薦的runfile。

在NVIDIA官網上查詢並下載對應系統和顯示卡型號版本的驅動run檔案,然後命令列進入run檔案存放路徑,輸入以下命令

$ sudo service lightdm stop //停止 X server
$ chmod +x NVIDIA-Linux-x86_64-375.66.run //對應自己的版本的.run
$ sudo ./NVIDIA-Linux-x86_64-375.66.run
$ sudo reboot

有很多安裝筆記說”sudo ./NVIDIA-Linux-x86_64-375.66.run”的命令應該加三個引數,如下。

$ sudo ./NVIDIA-Linux-x86_64-375.66.run -no-nouveau-check -no-x-check -no-opengl-files

為什麼我這裡可以不加呢?在此一一說明。
‘-no-nouveau-check’:禁用nouveau的,前期在安裝CUDA時已經禁用了
‘-no-x-check’: 命令‘service lightdm stop’已經將Xserver停掉了
‘-no-opengl-files’: 我在CUDA安裝說明中看到了原因,說是如果NVIDIA顯示卡沒有用來驅動顯示器,那麼OpenGL就不應該裝,因為會覆蓋負責驅動顯示器的顯示卡的OpenGL,導致圖形介面出錯,也就是大家常見的迴圈登入問題。我的NVIDIA顯示卡也用來驅動顯示器,所以我可以安裝。安裝說明的截圖如下所示。

cuda-opengl

執行.run開始安裝後NVIDIA Installer會提示幾個選擇:
a. 是否安裝32位相容庫,我選擇的是”Yes”。我第一次安裝提示說沒找到安裝的位置,我就在自己的系統上安裝了32位的庫,在命令列中執行。

$ sudo apt-get install lib32ncurses5 ​
$ sudo apt-get install lib32z1

然後再安裝驅動的32位相容庫時就不會找不到安裝位置
b. ‘是否安裝DKMS包管理器’,我選擇”Yes”
c. ‘是否執行nvidia-xconfig’產生xorg.conf配置檔案,我選擇”Yes”,如果不用NVIDIA顯示卡來驅動顯示,應該選擇‘No’
安裝完成

第四步:檢驗驅動和CUDA安裝

a. 檢驗顯示卡驅動,命令列輸入:

$ nvidia-smi

如果安裝成功應該打印出顯示卡的工作資訊,如圖所示。

nvidia-smi-information

b. 檢驗CUDA安裝

$ nvcc -V

安裝成功後會列印CUDA的版本資訊

c. 編譯並測試CUDA例子

$ cuda-install-samples-8.0.sh ./ //用cuda自帶的指令碼安裝例子到當前目錄(./)
$ cd NVIDIA_CUDA-8.0_Samples
$ make // 如果編譯成功會打印出‘PASS$ cd bin
$ ./deviceQuery //測試驅動正確安裝
$ ./bandwidthTest //測試系統和顯示卡之間的正常通訊

兩個測試列印的資訊如下圖所示。

devicequery-information

bandwidth-information

第五步:安裝cuDNN

參照Caffe2上的方法

$ CUDNN_URL="http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz"
$ wget ${CUDNN_URL}
$ sudo tar -xzf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local
$ rm cudnn-8.0-linux-x64-v5.1.tgz && sudo ldconfig

第六步:安裝Caffe2

export PYTHONPATH=/usr/local:$PYTHONPATH
export PYTHONPATH=$PYTHONPATH:/home/ubuntu/caffe2/build
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
  • 測試Caffe2是否安裝成功:
$ cd ~ && python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

成功的話會打印出”Success”

  • 測試樣例
$ python -m caffe2.python.operator_test.relu_op_test

如果CUDA安裝的有問題,輸出的結果會包一個”warning”,意思是例子是在CPU-only的模式下計算的,然後就說明CUDA可能沒有安裝成功(也可能是顯示卡的問題,我曾經有一次安裝就是驅動和CUDA的測試都通過了,但是 Caffe2的測試樣例用的是CPU,沒有用到GPU)。

參考

驅動和CUDA安裝:http://www.linuxdiyf.com/linux/26370.html
驅動和CUDA安裝:http://www.cnblogs.com/devilmaycry812839668/p/6867780.html
驅動和CUDA安裝:http://www.cnblogs.com/txg198955/p/5473419.html
ubuntu16.04啟動進入text-mode: https://askubuntu.com/questions/870221/booting-into-text-mode-in-16-04
ubuntu16.04安裝32位庫:http://www.linuxdiyf.com/linux/21656.html