Mask_RCNN入門(三)—— 使用gpu進行訓練和測試

cpu換成gpu

之前的工作:
Mask_RCNN入門(一)—— 跑通代碼
Mask_RCNN入門(二)—— 訓練自己的數據集
其實是在CPU上跑的,這一點可以在requirements.txt中可以看到:
在這裏插入圖片描述
tensorflow就是CPU版,GPU版本是tensorflow-gpu。
所以第一步是卸載tensorflow,安裝tensorflow-gpu,爲了避免兼容性衝突,tensorflow-gpu同樣使用1.6.0版本。
卸載tensorflow:

python -m pip uninstall tensorflow

安裝tensorflow-gpu:

python -m pip install tensorflow-gpu==1.6.0

driver,CUDA,cuDNN和tensorflow-gpu

安裝完tensorflow-gpu之後,如果直接運行demo.py或者train.py會報錯:ImportError: Could not find 'cudart64_90.dll’
在這裏插入圖片描述
其實信息明確了,到指定網址下載安裝CUDA 9.0。
這裏開一下上帝視角:CUDA,包括後面同樣會報錯需要下載的cuDNN,它們是什麼,還有和CUDA版本緊密相關的顯卡驅動又是什麼?

driver

這個最好理解,這個和鍵盤驅動,鼠標驅動,打印機驅動等等沒本質區別,計算機(確切地說是CPU)與外設(這個外設是廣義的,顯卡也算在內)的任何通信都要統一好接口,而驅動就是硬件統一CPU和外設通信的接口,以驅動程序的形式呈現。
對於一個顯卡驅動是自動安裝好了的,不然我們連開機畫面都沒,這個不用多說,關於驅動的版本可以看這裏:
電腦 —— 屬性 —— 管理 —— 設備管理器 —— 顯示適配器,雙擊,選擇“驅動程序”:
在這裏插入圖片描述
但其實只用看倒數第一個小數點往左的第一個數字開始,一直到結尾部分,對於上圖來說,即:411.31
如果瞭解nvidia-smi命令的話(使用前要將其目錄添加進環境變量,具體可見我的另外一個文章:nvidia-smi命令),可以使用它快速查看:
在這裏插入圖片描述
值得注意的是,顯卡支持的驅動是一直在更新的。

CUDA

CUDA全稱Compute Unified Device Architecture,NVIDIA推出的顯卡並行計算框架,這看名字大概也知道什麼意思。更爲專業性的知識這裏也不多說(我也不懂),反正知道tensorflow-gpu的運行需要它的底層支持就夠了,但是,它是一個計算框架,抽象層次比驅動高,每個版本的CUDA都是基於一定版本的驅動建立的,所以它對驅動的最低版本是有要求的(應該就是寫它的時候那個版本),具體要求可見:CUDA對顯卡驅動版本的要求,BTW:

  1. 很多教程在安裝CUDA和cuDNN時不怎麼提驅動的事,但是這也是一個隱藏坑:萬一你的顯卡比較老就會報錯:CUDA driver version is insufficient for CUDA runtime version:
    在這裏插入圖片描述
    其實這個CUDA runtime就是顯卡驅動。
  2. NVIDIA下載特定版本的地址:NVIDIA 驅動程序下載
cuDNN

cuDNN全稱The NVIDIA CUDA Deep Neural Network library,即基於CUDA架構的神經網絡庫,這是專門用於神經網絡計算的加速包,這可以看做是CUDA的一部分(並行計算框架下的一個包),這從cuDNN實際安裝過程 —— 解壓放入CUDA安裝目錄對應的子文件夾也能看出來。
所以cuDNN和CUDA的版本肯定是有對應關係的,這一點在官網下載cuDNN時可以看到:CUDA和cuDNN對應關係

tensorflow-gpu

tensorflow-gpu本身不多說,但是tensorflow-gpu的運行需要用到CUDA框架,特別是cuDNN庫(神經網絡加速包),就像CUDA是基於特定版本驅動構建的一樣,tensorflow-gpu也是調用的也是特定版本的CUDA,二者的對應關係可見:tensorflow-gpu和CUDA的關係

關係圖

在這裏插入圖片描述
先說明一下圖中情況:

  • driver決定了CUDA的版本
  • CUDA決定了cuDNN版本
  • CUDA決定了tensorflow-gpu版本,可見tensorflow-gpu和CUDA的關係
  • tensorflow-gpu基於一定版本的python,這在tensorflow-gpu和CUDA的關係中也能看出
  • 如果在算法中還要用到Keras,那麼tensorflow-gpu和Keras也有約束關係
    詳見:tensorflow-gpu和Keras版本兼容性


    在實操中,一般採用自上而下的確定方式:
  • 確定python版本
  • 確定項目的tensorflow-gpu版本
  • 確定CUDA版本,從而確定cuDNN版本,更新驅動版本

安裝CUDA

回到之前的問題:
在這裏插入圖片描述
接下來安裝cuda 9.0
在這裏插入圖片描述
一路next,命令行nvcc -V驗證:
在這裏插入圖片描述
BTW:
① 網絡教程很多要設置環境變量,單經實測,安裝過程中會自動添加,不用手動添加。
② 一臺機器可以同時安裝多個版本CUDA,不矛盾。

### cuDNN 7

再次運行demo.py,繼續報錯:
在這裏插入圖片描述
cuDNN官方地址下載,不過這回要註冊用戶:
在這裏插入圖片描述
join now,註冊用戶,giaogiaogiao

這裏下載:
在這裏插入圖片描述

下載,解壓,三個文件分別放入cuda對應文件夾(其實就是手動給cuda安裝cuDNN模塊):

  1. 把cuda\bin\cudnn64_7.dll複製到 C:\Program Files\NVIDIA GPU Computing\Toolkit\CUDA\v9.0\bin 目錄下
  2. 把\cuda\ include\cudnn.h複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include 目錄下
  3. 把\cuda\lib\x64\cudnn.lib複製到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64 目錄下


    運行,搞定!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章