1. 程式人生 > >【安裝教程】python3.6安裝Tensorflow-GPU路上的那些坑(WIN10)

【安裝教程】python3.6安裝Tensorflow-GPU路上的那些坑(WIN10)

最近A股動盪難料,筆者在最近的兩週裡證券賬戶裡的資金縮水了10%,成功地完成了一個合格中國韭菜的本分工作——我買就跌停,我賣就瘋漲。三個月的炒股經歷成功交了一大筆學費,昨天週五對股市徹底喪失信心,灰溜溜地清了波倉,準備潛心研究一手股票資料再重振旗鼓捲土歸來。

恰逢文字挖掘的小崔老師向我們推薦了python功能包Tensorflow,這個模組似乎在做自然語言處理方面有很大的優勢。其實前幾個月還在暑假的時候,準備入門深度學習開始學一手pyTorch,看教程看到pyTorch竟然可以用GPU加速,心想自己一個遊戲本960M的顯示卡又不玩遊戲,不用來深度學習簡直太浪費了。於是開始著手安裝CUDA跟CUDNN,然後始終安裝不上。百度了一下據說是NVIDIA獨立顯示卡驅動殘留,要清乾淨NVIDIA的所有產品再重灌CUDA。哼哧哼哧地清空了所有NVIDIA的產品發現還是裝不上CUDA(也許是筆者沒清乾淨或者其他原因),轉念一想算了,鹹魚一條就別想著用GPU加速了。準備把NVIDIA獨立顯示卡驅動重新安裝回來,然後發現獨顯驅動也安裝失敗了。再百度了一下說要卸掉Intel核心顯示卡驅動才能裝獨顯驅動。屁顛屁顛地了解除安裝了核顯驅動然後就呵呵了——一個顯示卡驅動都裝不回來了,顯示器靠著Microsoft最基礎的顯示卡驅動支撐著,就跟安全模式下的使用情況一樣。各種驅動精靈,驅動人生都能檢測到顯示卡卻安裝不了顯示卡驅動。筆者覺得那是我人生最艱難地一段時間之一了,我幾乎用盡了我所有的“聰明才智”,甚至想到回到計算機的初始備份中把兩張顯示卡的驅動備份一份到非系統盤,再回到當前狀態恢復初始備份中的顯示卡驅動備份,然而一一都失敗了。筆者又是一個極度強迫症的人,不捨得重灌系統破壞我精心整理的C盤結構,然後過了兩天WIN10釋出了更新(運氣真的好,這次更新剛好更新了驅動),然後更新完一切顯示卡驅動都正常了。真是無心插柳柳成蔭。

花這麼長篇幅講了這個鬱悶的經歷主要是想提醒各位朋友一定要常做備份,做任何事情之前先備份一下C盤,否則到時候真是搞得人慾哭無淚。這次安裝Tensorflow-GPU也是一個超級噁心的流程,因為各位朋友的計算機各項配置與筆者可能有很大不同,我的教程未必能夠適用與你們的計算機,因此安裝之前務必對C盤先做備份(也可以考慮把python根目錄做一次備份以防萬一)。

其實大家查詢就會發現很多Tensorflow的教程都是用conda安裝的,筆者的python3.6也用了一段時間,裝了許多非科學計算的包,所以不想解除安裝了python重灌anaconda,因此該教程是基於非conda的python3.6環境對Tensorflow進行的安裝。

預備工具

python 3.6

Visual Studio 2010(網上很多人說Tensorflow較高的版本需要用VS2015以上支援,筆者的VS2010仍然可以成功安裝,當然更高版本的VS應該同樣可以支援)

NVIDIA獨立顯示卡驅動(其他種類的獨立顯示卡我不是很清楚,大家可以另尋教程。注意需要不同獨立顯示卡所能支援的CUDA是不同的,但一般來說這點不是很大的問題,現在計算機的配置畢竟還是越來越高了,筆者960M的顯示卡可以支援到1.9.0版本的Tensorflow以及CUDA10.0,大家實在不放心可以看一下https://developer.nvidia.com/cuda-gpus連結中的對應資訊,僅作參考)

安裝流程中的注意點

安裝CUDA9.0及CUDNN7.1.4

由於筆者已經在今早兩點成功安裝好了所有的配件,所以無法一一截圖為大家展示安裝過程,所以我儘可能的詳細地提及所有我遇到的坑,以及解決的辦法。

截至筆者釋出這篇部落格,CUDA已經更新到10.0版本,Tensorflow-GPU版本已經更新到1.11.0,在這我強烈建議不要安裝最新版,目前還不能找到最新版的Tensorflow-GPU究竟需要什麼樣的CUDA與CUDNN來支援,筆者第一次安裝就是安裝CUDA10.0與Tensorflow-GPU V1.11.0,然後就成功出現了“ImportError: DLL無法load”的問題(對於這個問題百度上也是眾說紛紜,又說CUDA環境變數沒有配置好的,有說VS版本不夠的,還有說把哪裡的DLL複製一份到BIN裡的。說實話我覺得要是朋友你裝最新版本出這個問題,趕緊卸了CUDA和Tensorflow重灌低一點的版本了)。

tensorflow-gpu v1.9.0 | cuda9.0 |  cuDNN7.1.4可行  | 備註:7.0.4/ 7.0.5/ 7.1.2不明確

tensorflow-gpu v1.8.0 | cuda9.0 |  cuDNN  不明確 | 備註:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4

tensorflow-gpu v1.7.0 | cuda9.0 |  cuDNN  不明確 | 備註:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4

tensorflow-gpu v1.6.0 | cuda9.0 |  cuDNN  不明確 | 備註:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4

tensorflow-gpu v1.5.0 | cuda9.0 |  cuDNN  不明確 | 備註:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4

tensorflow-gpu v1.4.0 | cuda8.0 |  cuDNN 6.0 | 備註:6.0正常使用, 7.0.5不能用,5.1未知

tensorflow-gpu v1.3.0 | cuda8.0 |  cuDNN 6.0 | 備註:6.0正常使用, 7.0.5不能用,5.1未知

tensorflow-gpu v1.2.0 | cuda8.0 |  cuDNN 5.1 | 備註:5.1正常使用, 6.0/ 7.0.5 未知

tensorflow-gpu v1.1.0 | cuda8.0 |  cuDNN 5.1 | 備註:5.1正常使用, 6.0/ 7.0.5 未知

我建議大家先安裝CUDA9.0,Tensorflow放到最後再安裝(因為CUDA佔用到C盤,只要你的python根目錄不在C盤Tensorflow是不會佔用到C盤的,這樣方便備份與重新安裝)。

我在安裝CUDA上佔了點小便宜,由於我那段鬱悶的經歷我在安裝CUDA前我的系統中是沒有獨立顯示卡驅動的,因此我可以先安裝NVIDIA獨顯驅動(我沒有勾選3D Vision與physx因為我覺得我不玩遊戲應該用不到),然後立刻安裝CUDA成功率就非常高。CUDA安裝URL傳送門https://developer.nvidia.com/cuda-downloads,這裡面是最新版本的CUDA(10.0),大家可以點選右邊Legacy Releases 選項去選擇全部發行版本,可以看到有CUDA 9.0版本的可供下載。

 一般來說依次選擇Windows==>x86_64==>10==>exe(local)再把下面顯示出來的Base Installer(1.4G)下載即可(其他幾個不用下載)

 下載好後點擊安裝,這個安裝跟NVIDIA獨顯驅動安裝介面很像,進入到選項時一般選擇自定義安裝(不要選那個精簡),然後自定義安裝只要安裝第一項CUDA即可,下面三個分別是獨顯驅動,3D Vision,Physx,所以我覺得可能就算沒有獨立顯示卡驅動也可能可以直接安裝CUDA。

我記得安裝過程中還可以修改CUDA Development、Sample、Documentory的安裝路徑,如果你覺得自己的C盤沒問題那就預設它的路徑,否則你可以考慮把他們全部裝到同一個目錄下(我是全部安裝在E:\NVIDIA GPU Computing Toolkit\CUDA\v9.0目錄下,Sample你可以單獨放一個地方,它貌似不是很重要,其他兩個的內容可以並在一起放)。

下圖中安裝好後把Samples單獨放在Samples資料夾下,其他兩個的內容在當前資料夾中,並且去把C:\Program File\NVIDIA GPU Computing Toolkit\CUDA\v9.0資料夾下的所有東西也搬過來的結果(那個zip是CUDNN,之後會下。如果感覺麻煩就直接用預設路徑,這樣可以省事也可以少設定一點環境變數)。

 然後去環境變數裡先把所有以CUDA開頭的系統變數刪了(因為筆者上面修改了CUDA的檔案位置),換成如下的系統變數:

 

再到系統變數的Path變數中新增下面兩條路徑:

 然後就把CUDNN的ZIP下載到https://developer.nvidia.com/cudnn,我在暑假裡下在CUDNN的時候還可以直接下,現在比較NVIDIA學壞了,要註冊賬號才能下載(免費)。這個比較簡單,大家去下載上面提到的V7.1.4版本即可,下好是一個ZIP,解壓后里面有三個資料夾,每個資料夾下都是隻有一個名為CUDNN.*的檔案,大家只需要把這三個資料夾複製,然後複製到E:\NVIDIA GPU Computing Toolkit\CUDA\v9.0即可(因為是同名資料夾會自動合併,不放心可以分別把三個CUDNN.*剪下複製到該目錄下對應資料夾裡即可)。

然後檢驗一下CUDA及CUDNN是否安裝好:開啟CMD,輸入nvcc -V回車不報錯即可↓↓↓

安裝Tensorflow-GPU

一般教程說只要pip install tensorflow-gpu即可,這裡面大致有如下幾個坑點:

1、pip版本需要升級到較高的版本,低版本pip是無法安裝tensorflow的,因此可以考慮先升級pip

python -m pip  install --upgrade pip

2、直接pip install tensorflow-gpu安裝最新版本,當然你可以嘗試寫成pip install tensorflow-gpu==1.9.0自定義需要下載的版本但還是很容易因為網路連接出現READ TIME OUT的錯誤。這是因為tensorflow需要很多支援它的包(如numpy,scipy,tensorboard,protobuf等),安裝過程中還會安裝很多其他包,只要一個TIME OUT就安裝中止了,所以可以考慮先把其他包安裝好(注意版本,tensorboard必須對應的是1.9.0,protobuf最好裝3.6.0版本,目前最新的是3.6.1版本,我沒太注意我到底是裝的哪個了,但是我記得我看到過protobuf版本也可能使得最後import tensorflow出現莫名其妙的錯誤,當然這個算細節問題,也比較容易修正)。

3、最重要的就是選擇哪個tensorflow映象了,筆者先後採用pip install它預設的映象(即直接安裝),清華tuna的映象http://www.lfd.uci.edu/~gohlke/pythonlibs/,以及github上的原始碼處提供的.whl檔案,統統安裝好import tensorflow報錯,最後終於在Google提供的映象成功完成了Tensorflow-GPU的安裝。這裡是傳送門:https://tensorflow.google.cn/install/pip

進入該URL後拉到最下面可以看到支援python3.6的Tensorflow-GPU版本,複製後面這一長坨的連結,然後去pip install+<一長坨連結>即可,筆者使用了這個.whl檔案安裝後的結果是可以執行的Tensorflow的。

最後附一張成功的圖片↓↓↓

最後希望各位朋友早日安裝好Tensorflow-GPU並且能夠使用起來!

分享學習,共同進步!