1. 程式人生 > >重灌Ubuntu 恢復 Cuda + cudnn + GPU driver + tensorflow 環境走過的坑

重灌Ubuntu 恢復 Cuda + cudnn + GPU driver + tensorflow 環境走過的坑

接上

最近要重現YOLOv3 實時線上物體檢測演算法,程式碼要求Python3.6及以上由於Ubuntu 自帶的Python版本是3.5.2於是索性直接給卸掉了, 由於是Ubuntu自帶的版本, 可能系統需要用到裡面的元件,再次重啟系統的時候產生登陸迴圈login loop 問題。 

關於login loop 問題,看上一個帖子,在本機上以及解決

解決login loop 問題只是開始, 由於要恢復cuda + cudnn + tensorflow 的GPU計算環境 所以要重新考慮版本以及相容相容性的問題

首先安裝python3.6版本, 以及如何設定為預設選項

pip3 安裝 升級 解除安裝 

完了首先搭建好cuda + cudnn + 顯示卡驅動的環境 然後再安裝tensorflow (個人認為應按按照這個順序)

首先檢視本機上的Nvidia 顯示卡型號 : sudo dpkg --list | grep nvidia-*

由於安裝cuda需要用到驅動程式中的程式碼塊, 安裝驅動是安裝cuda過程的一部分,這樣就不會有cuda和驅動的相容性問題, 自己安裝的驅動版本和cuda的版本不一定能相容,我是首先卸掉自己本機上的驅動然後再安裝的cuda 

解除安裝驅動程式命令: 

sudo apt-get remove --purge nvidia-*

sudo apt-get autoremove 

sudo apt-get install -f  

sudo reboot 

注意: 只有第一個命令 是解除安裝驅動,如果同時使用了第二個第三個命令,會將已經安裝的CUDA全部解除安裝,解除安裝完驅動程式之後需要重啟電腦使之生效,登出也行

現在安裝cuda 

進入Nvidia cuda-toolkit-archive 網站

挑選自己心儀的版本,最近剛出的CUDA-10.0 最新版本, 不推薦使用,因為版本剛釋出,太新,很多其他的軟體包更新跟不上導致相容性問題。 

在挑選完自己心儀的版本之後

根據提示首先下載,然後後面依次 有4個命令,前三個都沒有問題在terminal 輸入

注意第四個命令:sudo apt-get install cuda 

如果直接輸入這個命令無論選哪個版本的cuda 最後都會安裝最新的 cuda-10.0 版本

應該用: sudo apt-get install cuda-9-0    指定所要安裝的版本 

等待系統自動安裝大概需要15分鐘左右, Ubuntu 會在/usr/local 目錄下新建兩個資料夾

一個cuda  一個 cuda-9.0  安裝完畢

然後將cuda路徑新增到環境變數中

首先cd 回到主目錄

gedit ~/.bashrc       # 編輯 .bashrc 檔案在後面新增兩行

$ export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}  $ export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

source ~/.bashrc    #  source 命令 使之生效 

然後測試 cuda 安裝成功與否, 執行cuda 自帶的sample 成功的話會看到GPU 運算的煙花

$ cd /usr/local/cuda-8.0/samples/5_Simulations/nbody $ sudo make $ ./nbody

接下來安裝cudnn, 網上下載適合自己的相容的版本 這裡我用的是cudnn-9.0 版本

$ tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz $ sudo cp cuda/include/cudnn.h /usr/local/cuda/include $ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 $ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

解壓,然後將相關檔案新增到cuda資料夾中 ,至此tensorflow 所需要的檔案環境就搭建起來了

中間的若干相容性問題需要根據自己所有的版本型號進行搭配

現在安裝tensorflow 前面已經安裝python3.6 和 pip3  

使用pip3 包管理器直接安裝tensorflow-gpu 

pip3 install tensorflow-gpu  

直接使用這個命令 出現permission denied 的問題

pip3 install tensorflow-gpu --user 

解決

開啟python  import tensorflow 測試安裝是否正確,已經GPU能不能使用

Python 進入python3.6 的介面 

import tensorflow 然後提示 匯入錯誤

ImportError: libcudnn.so.7: cannot open shared object file: No such file or directory

libcudnn.so.7是cudnn的檔案, tensorflow-gpu 安裝成功 但是 與 cudnn 發生連線錯誤, 這裡需要重新建立連線

2.CUDNN連線建立

 cd /usr/local/cuda/lib64

sudo rm -rf libcudnn.so libcudnn.so.7  #刪除原有版本號,版本號在cudnn/lib64中查詢

sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7 #生成軟連線,注意自己下載的版本號

sudo ln -s libcudnn.so.7 libcudnn.so 

sudo ldconfig #立即生效

測試 import tensorflow as tf 匯入成功   

接下來安裝Pycharm 跑個CNN 

下載 ubuntu版本

然後解壓到當前資料夾

cd Downloads/pycharm-2017.1.4/bin

sh ./pycharm.sh

然後跳出來安裝介面,然後根據自己喜好配置 

然後Create New Project  

新增Python剛剛安裝好的python3.6直譯器 正常的話  就可以用GPU跑CNN了