Linux下CUDA+CUDNN+TensorFlow安裝筆記
之前用過TensorFlow的CPU版,現在買了個新電腦,就想把GPU也用起來,又因為目前大部分工作是在linux下做,所以有了在linux下安裝cuda和TensorFlow的計劃,快一個禮拜一直在搞這件事,重灌了N次系統,cuda和TensorFlow終於是能用了。姑且寫一下攻略吧,也算自己留個檔。
注意事項
- 此攻略適用於廣大使用Nvidia顯示卡的Ubuntu使用者,CentOS,RedHat,Windows等等使用者請自行閱讀Nvidia各種安裝說明,A卡使用者出門左轉。
- 雙顯示卡使用者注意,按此攻略安裝的nvidia顯示卡驅動可以支援TensorFlow等等的機器學習計算,然而並不能優化圖形介面。這個主要是因為我目前還沒找到好的辦法進行雙顯示卡切換,搞了幾次都搞到重灌,心累,所以現在圖形化介面還是用的Intel集顯。如果大家有好辦法歡迎共享。
- 關於軟體版本以及安裝方法,這裡安裝的是CUDA-8.0+CUDNN-7+TensorFlow-0.11.0,Nvidia驅動和CUDA都是指令碼安裝,CUDNN是Debian包安裝,TensorFlow是pip直接安裝。
廢話不多說了。
原料
- 一個有Nvidia顯示卡的電腦
要知道N卡的型號,不知道的可用命令sudo lspci | grep -i nvidia
檢視,我的是GTX960M - 一個Ubuntu系統
同樣要明確系統版本,我的是16.04 - GCC
GCC為系統自帶程式,無需自行安裝。有安裝教程說gcc需要降級到5以下,這個主要針對CUDA和你的Ubuntu系統版本,我用的gcc 5.4版本裝CUDA8完全沒有問題,Ubuntu14.04的使用者最好降一降。 - CUDA8安裝指令碼
貼個連結指路,官網現在預設你安裝的是9.0版本,然而9.0版本需要顯示卡驅動至少在384及以上,出於穩妥考慮裝了8.0版本,同樣對驅動有要求(在375及以上)。 - CUDNN安裝包
連結指路下載前需要註冊,然後要填個問卷,按步驟來就行很快,然後按照你的系統版本和你將要安裝的cuda版本選擇下載哪一個,Ubuntu使用者不要選power8,可以看到一共有三個包可以下載,分別是Runtime Library,Developer Library和Code Samples,都下了吧反正也不大(你走)。 - 驅動安裝指令碼
連結指路,按照提示找到適合自己電腦顯示卡型號的驅動,下載得到一個指令碼(.sh)檔案。
步驟
解除安裝原有的N卡驅動
這一步主要是針對像我這種以前為了各種謎之目的裝過Nvidia驅動而版本又不夠高導致後面CUDA裝了不能用的熊程式設計師,以及看了別家攻略安裝失敗了的你,不要覺得之前裝過Nvidia驅動裝錯了就可以直接丟開。
執行以下命令:
sudo apt-get --purge remove nvidia-*
對於之前從Nvidia官網下載安裝過驅動的,如果你的驅動版本小於CUDA的要求(8.0至少375,9.0至少384),找到之前安裝指令碼所在的目錄,執行以下命令:
sudo sh 你的指令碼.sh --uninstall
禁用開源驅動nouveau
Ubuntu系統預設使用的驅動即為開源的驅動nouveau,我們需要禁用它並且之後也不需啟用。
編輯系統配置檔案blacklist.conf
sudo gedit /etc/modprobe.d/blacklist.conf
在其中新增下面兩行:
blacklist nouveau
options nouveau modeset=0
儲存,退出,執行如下命令使配置生效:
sudo update-initramfs -u
重啟電腦,至此開源驅動就已被禁用了,可用如下命令進行檢查:
lsmod | grep nouveau
如果系統什麼也沒返回,說明nouveau禁用成功
關閉UEFI模式
這一步主要是安裝驅動的需要。在UEFI模式下安裝驅動需要為驅動生成簽名,公鑰需要儲存在linux核心信任的某目錄下,關於這方面沒有找到什麼資料,目前大部分的解決辦法都是直接關閉UEFI模式。
UEFI的關閉方法與電腦型號有關,我的戴爾靈越是F2進入BIOS後在Boot標籤下選擇關閉Secure Boot,之後就可以選擇從UEFI模式切換到Legacy模式,其他電腦型號請百度。
結束X server服務
在終端輸入以下命令:
sudo service lightdm stop
之後如果直接宕機請重啟檢視nouveau禁用設定是否正確。正常情況會黑屏,然後按Ctrl+Alt+F1進入字元終端介面,輸入使用者名稱和密碼通過驗證。
安裝Nvidia驅動
進入存放驅動指令碼的目錄,執行以下命令:
sudo chmod a+x 你的指令碼.sh
sudo ./你的指令碼.sh -no-x-check -no-nouveau-check -no-opengl-files
執行指令碼的三個引數是為了防止接下來迴圈登入。然後按照步驟進行就可以了,如果提示無法安裝32-bit lib不用擔心,回車繼續就好。
安裝完成後重新啟動X server服務:
sudo service lightdm start
如果執行以上命令後能夠正常進入圖形介面,恭喜你安裝驅動成功。
安裝CUDA
進入CUDA安裝指令碼所在的目錄,執行以下命令:
sudo sh 你的指令碼.sh
首先會出現一段極長的協議,最後輸入accept表示同意,然後會選擇是否安裝nvidia驅動367,選擇no,遇到詢問是否安裝opengl的地方如果你是雙顯示卡也務必選擇不安裝,其他同意或預設即可。
安裝完成後需要將CUDA的路徑加入環境變數,首先開啟~/.bashrc檔案,新增以下程式碼:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
中間不要加多餘的空格,如果你安裝的不是8.0版本則修改版本號,儲存,然後開啟/etc/profile,文末加上以下程式碼:
export PATH=/usr/local/cuda/bin:$PATH
儲存,至此CUDA安裝完畢。
安裝CUDNN
進入CUDNN安裝包所在目錄,執行以下命令:
sudo dpkg -i runtime包.deb
sudo dpkg -i developer包.deb
sudo dpkg -i 程式碼sample包.deb
至此,CUDNN安裝完成。
驗證CUDA和CUDNN是否安裝成功
CUDNN的code sample可以用來檢查CUDNN和CUDA是否安裝成功,執行以下命令:
sudo cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
sudo make clean
sudo make
sudo ./mnistCUDNN
正常情況下執行以上程式碼會得到Test passed!
的結果。如果在make步出錯,那麼可能gcc需要降級;如果出現CUDA driver version is insufficient for CUDA runtime version
,那麼或許你的顯示卡驅動安裝失敗,或許你之前安裝過低版本的nvidia的顯示卡又沒有刪掉。
安裝TensorFlow
如果以上步驟都沒有問題,恭喜你可以開始安裝TensorFlow了。這裡採用的是用pip安裝的方法。首先安裝pip和python dev:
sudo apt-get install python-pip python-dev
安裝完畢後執行如下命令:
sudo pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.11.0-cp27-none-linux_x86_64.whl
如果出現無法訪問的情況,翻個牆或者去清華映象站安裝吧,注意選擇tensorflow和python版本,通常來說是能夠正常下載安裝的。
至此TensorFlow安裝完成。
驗證TensorFlow是否安裝成功以及是否是否能夠使用GPU
注意:如果是關閉UEFI模式安裝的GPU驅動,那麼在使用GPU加速機器學習時也需要關閉UEFI模式,否則會報錯。
開啟一個python終端:
python
逐行敲入以下程式碼:
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print sess.run(hello)
如果出現以下字樣,說明TensorFlow安裝成功,並且能夠成功啟用GPU。
Ctrl+D關閉python終端。
如果出現以下錯誤,或許UEFI模式沒有關閉,或許顯示卡驅動安裝錯誤。
參考文件
- Nvidia Driver官方安裝指南
- Nvidia Cuda官方安裝指南
- Nvidia CUDNN官方安裝指南