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方式選擇性安裝的說明截圖。
因為我要自己選擇安裝顯示卡驅動(跟隨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顯示卡也用來驅動顯示器,所以我可以安裝。安裝說明的截圖如下所示。
執行.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
如果安裝成功應該打印出顯示卡的工作資訊,如圖所示。
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 //測試系統和顯示卡之間的正常通訊
兩個測試列印的資訊如下圖所示。
第五步:安裝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
- 完全按照Caffe2的官方文件安裝,官網首頁:http://caffe2.ai
安裝文件(ubuntu+原始碼安裝):https://caffe2.ai/docs/getting-started.html?platform=ubuntu&configuration=compile
注意要新增的環境變數(我是在~/.bashrc中新增的)
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