Windows 環境 Tensorflow2.3.0 入坑指南(關於配置CUDA和CUDNN)
我是使用的Pycharm進行Tensorflow學習的,特別在此記錄一下環境配置的過程。(最開始我只在Pycharm上安裝了Tensorflow 2.3.0的包,就開始跑程序了)結果報了一堆很神奇的東西,可是仍是出現了最後正確的結果:python
本章樣本
首先這是我跑的代碼(很是簡單,入門過程而已):windows
# Author:JinyuZ1996 # Creation date:2020/8/15 11:39 import tensorflow as tf a = tf.constant([1.0, 2.0], name='a') #構建一個二維數組常量 b = tf.constant([2.0, 3.0], name='b') print(a)
問題重現
Runtime console當中打印出了以下的東西(不少紅色的進度信息,這是Tensorflow的日誌模式):數組
他其中有一類日誌是 W 開頭的,好比 W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library 'cublas64_10.dll';........網絡
這是在提示咱們目前沒能找到足夠的dll運行庫來進行訓練,其實就是尚未去配置CUDA致使的。(日誌的中部會有以下提示):ide
W tensorflow/core/common_runtime/gpu/gpu_device.cc:1753] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.學習
Skipping registering GPU devices...(跳過了使用GPU)網站
而後我就看到它跳過了使用GPU,而轉用CPU來進行訓練。這可不大行……雖然照樣能獲得結果,由於如今比較簡單嘛,但是將來咱們要訓練比較複雜的模型的時候,CPU比GPU的效率可就差遠了,因此有必要花時間探索一下如何安裝和使用CUDA來啓動咱們的GPU用於訓練。ui
而使用CUDA就須要咱們去針對本身的顯卡來進行一番探索了,接下來開始以步驟進行講解:spa
第一步:去查看本身的NVIDIA控制面板
打開本身的NVIDIA控制面板,去查看一下系統信息,目的是找到咱們目前安裝的驅動程序的CUDA版本:.net
而後在系統信息中查看一下,本身的CUDA版本(如圖):
個人顯卡是GTX 1050Ti,截至我寫這篇文章的時候個人顯卡驅動程序版本是451.82,從這裏看到他自帶的CUDA對應版本是V11.0,那麼好的咱們就去下載一個完整版的CUDA v11.0來配置咱們的GPU訓練。
第二步:下載對應CUDA版本
百度搜索CUDA 11.0,一般第一個搜索結果就是的,或者直接https://developer.nvidia.com/cuda-downloads下載也能夠,這個地方我要給你們補充一下,CUDA包含兩種版本,一種是network版大概五六十M(其實就是個下載器,還須要在下載3個G左右的資源才能開始安裝),另一種是Local版本也就是離線安裝版(接近3個G,下載下來就能全面安裝,我是用的這個版本)下載頁面以下圖:
這裏補充一點,有的時候這個下載頁面會打不開,我也不知道是什麼緣由,多是個人win10版本問題或者是個人移動寬帶的問題,登錄很訪問英偉達的網站時總會很卡。我去找了一種相對可靠的解決方案來:
你能夠這樣作(按照個人步驟來):首先,右鍵開始菜單搜索cmd,用管理員權限打開cmd,輸入下面的代碼:
netsh winsock reset
而後你會看到以下界面:(它提示咱們再重啓一下就能夠了)
而後,我我的通過上面的操做後就能夠流暢訪問了,下載速度也能達到滿資源的狀態(我下的是local版2.88G,大概29M/s的下載速度吧)總之就能夠了,下載下來以後就能夠開始安裝了。固然爲了防止部分同窗就是登不上,我在這裏貼上network版CUDA v11.0的下載連接(免費資源就是給你們跑個腿):https://download.csdn.net/download/qq_39381654/12720656
至於CUDA的安裝過程,你們能夠參考這位博主的文章https://blog.csdn.net/a583621671/article/details/87272803,講的也比較詳細(實際上是主要我在安裝過程當中忘記了截圖,這裏很差再補充因此偷懶讓你們看看這位博主安裝9.0版本的過程來參考吧)即使咱們安裝的是v11.0,也儘可能不要勾選安裝Visio Studio Integration 11.0,太慢!並且可能會由於網絡問題而致使整個安裝過程失敗。
不過呢,你們能夠發現,我這篇文章指導你們安裝的v11.0不須要安裝升級包,它只有一個Base Installer。因此不用像,剛纔那篇博主同樣安裝不少補丁包仍是很走運的。
驗證安裝
安裝完畢以後,安裝程序會主動的給分配兩個環境變量,你們應該能夠經過cmd來驗證安裝的成功與否,好比咱們在命令行裏輸入代碼:nvcc -V 可以看到安裝的CUDA v11.0就說明安裝好了:。
CUDNN部分的配置
配置完CUDA就該去配置CUDNN了,CUDNN的版本是對應着CUDA來講的,若是你跟筆者同樣是按照剛纔的過程一路走來的,那麼你應該也須要個人這個版本的CUDNN(cudnn-11.0-windows-x64-v8.0.1.13)能夠看到我下載的這個v8.0.1.13是對應着CUDA v11.0的。你會發現它下載下來以後是一個lib,其實就是CUDA的補充,你們只須要把下載下來的CUDNN文件夾裏的CUDA子文件夾對應的東西複製替換到剛纔安裝的CUDA文件夾裏的相同位置就能夠,官網的下載地址爲:https://developer.nvidia.com/cudnn 不過呢,此次下載就要求必須登陸到NVIDIA帳戶才能下載了,我是當場註冊了一個NVIDIA開發者帳戶,綁定了我之前的郵箱才讓我下一步下載的(他有的時候還會先調查你下載CUDNN是爲了幹嗎,填寫完問卷自動到達下載頁面):
下載下來以後解壓應該能看到這樣的目錄結構:
下一步就是把,這個目錄裏全部的成分拷到剛纔安裝的CUDA子目錄下(例如我按默認路徑安裝的CUDA11,我就應該找到:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0)以下圖:
將剛纔全部的子目錄都複製過來(應該不會有替換,只是添加到對應子文件夾一些東西),就完成了。
固然仍是有可能有同窗下載不下來,因此我再放一個鏈接(依然免費提供cudnn-11.0-windows-x64-v8.0.1.13):https://download.csdn.net/download/qq_39381654/12721693
補充配置環境變量步驟
通常的教程到此結束,可是你會發現Pycharm的報錯依然還在,並且仍是解決不了幾個庫缺失的問題,這是由於咱們的Pycharm如今還找不到咱們的CUDA庫lib,須要咱們對Pycharm和環境變量都作配置才能解決一部分,若是仍然解決不了還能夠手動打上缺失的幾個庫,我也會分享在這篇文章裏面。
先給出我集合的其餘博主提到的環境變量修改方法,首先是當咱們安裝完CUDA後應該默認給咱們配好的兩個環境變量:(要是你沒有的話請本身加上這兩個)
而後根據個人整理,咱們還須要在環境變量Path裏把這幾個都添加好:
額外狀況(若是仍是不行*)
大部分同窗走到剛纔這一步,再去運行Tensorflow 2.3.0應該就能啓動GPU了,可是我再給出更誇張的狀況下的解決方案,那就是仍是不行的時候的解決方案:多個緣由(首先多是你的Pycharm安裝過程當中有問題,不自動綁定本機環境,那麼這是第一種狀況,其次,第二種狀況就是真的還缺.dll沒打上,我直接給在文末,本身打上就好了)
再去多配置一步Pycharm IDE的環境變量:LD_LIBARARY_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\lib\x64(把這行代碼粘到我如圖所示的位置):
若是IDE是英文版應該File->Setting->搜索 Python Console 在Enviroment框下輸入我剛纔給你的代碼(若是你的CUDA按到了其餘位置別生搬硬套,此處應填寫你的CUDA目錄相應位置)。
若是是第二種狀況,或者說,你按照我剛纔這給出的第一種解決方案仍是沒能解決,那麼不要緊,咱們本身去補上缺失的dll不就好了嗎,這時候,大部分的動態連接庫CUDA應該都帶過來了,你只須要在W 開頭的Tensorflow警告裏找到could not found 的那些.dll庫就能夠了。(我在文末會給出一般會缺失的幾個庫,其實仍是但願你們本身找吧,這個應該不難找的)通常會缺失的幾個我列在這裏:
你會發現我拿方框圈起來兩組,爲何呢,由於這兩組缺失的都是64_10,而我所作的就是把64_11複製了一個副本改了個名字,就好了(特別神奇,推測應該是v11.0把須要的東西封裝到了64_11而Tensorflow2.3.0不知道,因此找不到,給他改個低版本的名字就好了……)。但若是還有其餘的缺失的話,就請自行去網上百度補充吧,一般若是正確安裝了CUDA而且環境變量配置無誤的話應該只缺寥寥幾個。缺的不少的話應該是CUDA沒配置好或者環境變量垮了。不要緊,我在這裏給出幾個我當時缺失的動態連接庫,你們能夠看看能不能知足你的需求: