1. 程式人生 > >回顧在Windows7上安裝TensorFlow-GPU的一路坑+Windows7上安裝TensorFlow的GPU版本後記

回顧在Windows7上安裝TensorFlow-GPU的一路坑+Windows7上安裝TensorFlow的GPU版本後記

目錄(?)[+]

離完成上一篇文章有近1年了。2016年發生了太多的事情,從而沒能堅持哪怕是每月一篇這樣的頻率。終於在2017年的1月份抽出幾天搞出了一些東西。一路坑窪,趕緊記錄下來。

2016年初就開始看深度學習的東西,主攻TensorFlow。但是一路專案再加上換了公司,每次都是搞兩天就停一陣子,然後再拾起來重頭搞兩天,再被打斷。而且換了公司後沒有了隨意能呼叫的計算資源,CPU版的TensorFlow直到11月份才安裝完,並跑了一些例子。因為一般虛擬機器都不支援GPU,所以GPU版就完全沒有機會實踐。直到TensorFlow出了Windows版,而且發現新換的電腦居然是NVIDIA的GeForce 940M顯示卡,立刻決定在筆記本上實驗安裝一把TensorFlow-GPU版本。

但因為手賤,就那麼一抖,居然把整個過程搞了近4天才真正地讓MNIST的例子跑在GPU上。

不再發騷了,直接上過程,並介紹碰到的這個大大大大坑!!

下面的過程不是一步一步的手把手教程,而是一個簡略的敘述,所以如果你想重複實現,最好先了解一些TensorFlow的基礎知識。

安裝環境:

  • Windows 7 64bit
  • GPU: GeForce 940M
  • Python: 3.5.2
  • CUDA: 8

我的安裝過程:

  1. 首先下載Anaconda3的Win7 64bit版,安裝Python3.5版本。因為目前TensorFlow對Windows只支援Python3.5。可以直接下載Anaconda的安裝包安裝即可,一般不會有問題。
  2. Anaconda安裝完成後,直接在Windows的命令窗口裡敲Python就應該能看到版本是否是3.5。
  3. 用conda安裝jupyter:conda install jupyter
  4. 建立一個jupyter notebook的目錄,然後cd到此目錄後啟動jupyter notebook:jupyter notebook
  5. 然後用conda命令安裝pip:conda install pip。
  6. 用conda命令建立tensorflow執行環境:conda create -n tensorflow-gpu。這一步的目的是建立一個單獨的python執行環境,方便同時安裝CPU版和GPU版本,不會互相影響。
  7. 啟動此執行環境:activate tensorflow-gpu
  8. 用pip安裝tensorflow:pip install tensorflow-gpu
  9. 啟動python命令列編輯器,然後import tensorflow as tf,報錯說沒有cuda庫。
  10. 按照tensoflow的git網頁上指定的CUDA地址下載CUDA8和cudnn的庫。其中想下載cudnn的庫,需要去註冊一下會員。略微麻煩了點。不過都順利下載。
  11. 安裝CUDA8,直接執行cuda_8.0.44_windows.exe檔案,一路預設的點下去。半小時後安裝完畢。
  12. 然後CUDA安裝程式會安裝一個什麼NVIDIA Experience的程式,然後這個程式會自動啟動,並詢問是否要升級顯示卡的驅動程式。我腦子一暈,想當然的認為最新的肯定是最好啦,就手賤點了升級。然後一路綠燈的升級完畢。
  13. 接著解壓縮cudnn的庫檔案cudnn-8.0-windows7-x64-v5.1.zip。把其中的資料夾放到一個地方,比如E:\CUDA。然後可以有兩種方法把cudnn庫設定成tensorflow可以用。
    1. 把此目錄路徑放到Windows的系統PATH引數裡面;
    2. 把目錄裡面的內容放到CUDA的安裝目錄(我的是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0)下面相對應的目錄裡面,bin的放到bin,lib的放到lib,include的放到include。
  14. 一切就緒,還是在命令列的tensorflow-gpu的執行環境裡,啟動啟動python命令列編輯器,然後import tensorflow as tf。發現5行successfully load的東西,說明找到了cuda的庫。
  15. 定義一個session,如 s=tf.Session() 然後回車,詭異的事情出現了!!
    1. Windows彈出了一個警告框,說什麼“此硬體裝置不可拔出或是不能移動......";
    2. Python命令列裡面的錯誤提示是:......can not cuInit: CUDA_NO_DEVICE_ERROR......
  16. 完全無頭緒的兩個提示,立刻開始一頓狂搜百度。結果發現居然沒有人碰到這樣的問題。馬上翻牆出去上google,再搜,得到的資訊極其稀少。首先是安裝在Windows上的就很少,而碰到這個問題的就更少。唯一一個一樣的是stackoverflow上某人提到了裝置不能拔出和移動,還是英語,一開始就沒留意。而且他最後問題是解決了,解決方法是windows裡面把顯示卡解除安裝了再安裝就好了。基本沒有參考價值。
  17. 接著繼續搜,B+G滿世界的海搜。的一個初始的想法是CUDA安裝沒裝好,就把第11步反覆搞,結果還是一樣。
  18. 搞了一天,發現沒進展,開始懷疑是顯示卡的問題,於是把顯示卡給刪了,再裝。然後重複14步,沒問題,15步又出錯,但是這次報的錯不再是什麼硬體不能拔,而是Python程式出錯。眼淚立刻下來了,雖然還是錯,但終於開始接近問題的本質了。開始懷疑是顯示卡驅動程式的問題。立刻檢視,NVIDIA的控制面板裡給出了驅動資訊,是版本368.81。然後安裝了一個GPU-z,看看顯示卡的情況。驅動版本也是一樣的,但是提示顯示CUDA不支援。。。。。。
  19. 於是去Geforce的官網找驅動,然後找了最新的2016年12月的版本,下載安裝。然後第15步的錯誤再現!!根據18步的情況,判斷新的驅動版本可能不行。
  20. 於是去Geforece官網找舊版本,奇葩的是,Geforece最舊的版本只到2016年8月份的372.54版。下載372.54,安裝還是15步的問題。
  21. 只好滿世界的找舊版本驅動,大海撈針一般。前後下了7-8個版本。終於在安裝了一個很舊的版本後353.62(2015年出的驅動),情況開始發生逆轉了!!
  22. 安裝完此舊版,執行一個session後,tensorflow居然顯示找到了顯示卡,且能打印出顯示卡的資訊啦。那個心花怒放啊!!以為苦日子終於熬到頭了。
  23. 然而,真正開始跑MNIST例子的時候,一堆警告出現:...... cuda version is insufficient for cuda runtime environment....。居然出了新的問題。不過還好,之前搜尋驅動程式的時候見到過別人貼的這個問題,解決方案是顯示卡的驅動版本要足夠高。
  24. 於是從353.62版本開始,一個一個的試更高的版本,355.98,359.06,361.91,365.81全都試過了,不是版本過低就是高版本後python程式出錯。前前後後搞了2天多,還是不行。這時候開始冷靜下來整理思路了:
    1. 問題已經基本鎖定在顯示卡的驅動程式的版本上;
    2. 別人為什麼沒有出現過什麼問題,從而造成B+G上幾乎沒有出現15裡面的情況的帖子?
    3. 別人沒碰到,說明自然安裝就能解決掉。
    4. 那麼就有可能是CUDA庫會有自己支援的一個版本的驅動程式。
  25. 等分析到這裡,思路就清晰了,CUDA的版本是確定的,就是要找到和這個CUDA支援的驅動程式版本。於是仔細的又看了一下CUDA的安裝元件,果然發現,在安裝CUDA的過程中,安裝包自身就包括了一個369.30版的顯示卡驅動。那麼這個版本就應該是和CUDA8相互支援匹配的驅動程式。
  26. 發現了這個問題後,就立刻解除安裝掉已經安裝的高於369.30驅動程式,然後按照第11步從新裝一遍CUDA,選擇自定義安裝,選擇369.30的驅動。
  27. 裝完重啟,再次執行,終於只有successfully,沒有其他的警告啦。GPU-Z也顯示GPU load在80%左右。CPU的用量很低。
到此為止,終於解決了Windows7上安裝執行TensorFlow GPU版本,成功運行了簡單版和卷積版的MNIST。

問題分析:

  1. 根源其實很簡單,就是CUDA8有自己完全相容匹配的Geforece顯示卡的驅動程式。我的GeForece 940M對應的就是369.30版
  2. 用CUDA安裝程式預設就會把這個版本的驅動程式裝上。但這裡有兩個坑:
    1. CUDA安裝預設是全裝,神馬Experience、Insights都裝,裝完了就立刻檢測你機器的顯示卡驅動是否是最新的,發現不是最新的,就建議你升級。如果如我一般手賤了一下,後面就悲劇了。
    2. 如果你已經自己升級過驅動版本高於369.30,CUDA安裝不會降級,這個時候也會悲劇。
  3. 如果機器的驅動版本低於369.30,CUDA就會安裝升級。這種情況應該是最常見的,因此一般安裝完成後TensorFlow-GPU就能完美的識別GPU並用來進行計算。我猜測這也就是為啥網上幾乎沒有出現我碰到的問題的帖子。因為預設都是OK的。
雖然過程很痛苦也漫長,但是這麼一折騰還是學到了很多東西,NVIDIA的網站也看了不少。對GPU也有了一些瞭解。得失都有。下面就開始TensorFlow GPU的學習了。後記:用CPU和GPU搞了一下對比,結果還是很清楚的。CPU:4核的i5,GPU:GeForce 940MCNN的MNIST,CPU的4核全100%的負載,搞了56分鐘;GPU平均80%的負載,7分鐘搞定。實在是快!!!______________________________________________________________

上一篇寫了之前在我的Windows7上安裝TensorFlow GPU版的一路坑坑窪窪,本以為已經解決了。但實際上在過年的幾天內,又一次出現了問題。經過了反覆的嘗試,到今天為止終於穩定下來,特此記錄一下。但是具體原因還是不十分清楚。

上一篇寫到用CUDA自帶的安裝包裡的390.60版顯示卡驅動程式完成安裝後,終於可以執行TensorFlow的例子在GPU上了,很是開心了一陣子。但就在帶回家過年的幾天裡,再次執行例子,居然又出現了“此裝置不能移動或不能拔出”的問題,然後程式崩潰掉了,連切換到CPU都不行。徹底暈菜!!

之後按照之前的做法,卸掉顯示卡,卸掉驅動,卸掉CUDA程式,再從頭安裝,居然問題沒有解決。於是又一通解除安裝和安裝,但問題依舊。驅動程式版本低了說insufficient version,版本高了不是python崩潰,就是彈出顯示卡。

折騰了幾天,完全沒有頭緒了。後來想起CUDA在安裝的過程中曾經提出過Visual Studio的版本不相容的問題,再想起莫煩的視屏裡也提到需要Visual Studio 2015的一個情況,就在想是不是我本機的Visual Studio有問題。趕緊檢視,發現本機沒有安裝Visual Studio,但有一對Visual C++,最高是2013版。於是開始了心酸的VS升級的過程。

升級VS最大的問題出現在微軟的任何軟體都是超級大,不是一般的大,是超級大。公司的電腦C盤只給了75G,在剩餘15G的情況下,居然裝不了VS 2015 community版本!!!!最後C盤空間不足而失敗!!!

中間各種解除安裝其他軟體等等的苦難就不說了,最後還是找IT運維把C盤擴充套件到150G解決了這個狗屎問題。

裝完VS 2015,再裝各種CUDA和驅動,問題依然。此時已經幾乎是心灰意冷了,想想還是用用CPU版算了。

中間隔了幾天,恢復心態後,又仔細想想這個問題。總覺得和TensorFlow沒啥關係,因為TensorFlow自己報的錯是找不到硬體:CUDA_NO_DEVICE_ERROR。那麼就是硬體和Windows7自己的問題。於是上網去專門搜“此裝置不能移動或不能拔出”的問題,而不是和TensorFlow一起搜。

果然,各個遊戲論壇裡關於這個問題的帖子很多,基本都是升級了顯示卡驅動程式後出現的。一般的解決方案都是回退顯示卡的驅動到前一個版本。但是對於我來說,是沒有了前一個版本的。最後抱著死馬當作活馬醫的想法,用GeForce Experience裡的驅動更新功能,來更新顯示卡驅動程式。發現最新的顯示卡版本已經是2017年1月24號的了,比之前折騰的時候還要新,於是就安裝了一把。

奇蹟出現了!!!安裝完是最新的378.49版本。然後一切正常,TensorFlow也可以用GPU來運算了,反覆重啟後還是很好用。完美解決!!

原因分析:基本能定位在是GeForce顯示卡的驅動程式上,但是具體明確的原因還是不清楚。之前安裝396.60版後成功了,但是又出問題,懷疑是Windows更新了驅動程式。同時估計是這個版本和當時機器上的VS還是存在相容的問題。而更新到VS 2015後,再用最新的驅動程式,兩者之間相容性很好,所以顯示卡就能正常工作了。

後記:利用GPU,現在跑Udacity教程,基本上調參再跑一次都是分鐘殺。在Linux CPU版本上如果做同樣的事情,那每個跑一次模型都要幾個小時,完全無法正常練習。所以還是強烈建議想學TensorFlow的童鞋,用GPU版本吧。人生會燦爛很多!!!

________________

轉載的,https://blog.csdn.net/infovisthinker

相關推薦

windows 面的tensorflow-GPU、cuda、cudnn 安裝

atm search 容易 oca api RM run correct 既然 安裝說明 平臺:目前可在Ubuntu、Mac OS、Windows上安裝 版本:提供gpu版本、cpu版本 安裝方式:pip方式、Anaconda方式 Tips: 在Windows上目前支持p

再寫博文,回顧Windows7安裝TensorFlow-GPU一路

離完成上一篇文章有近1年了。2016年發生了太多的事情,從而沒能堅持哪怕是每月一篇這樣的頻率。終於在2017年的1月份抽出幾天搞出了一些東西。一路坑窪,趕緊記錄下來。 2016年初就開始看深度學習的東西,主攻TensorFlow。但是一路專案再加上換了公司,每次都是搞兩天就

回顧Windows7安裝TensorFlow-GPU一路+Windows7安裝TensorFlowGPU版本後記

目錄(?)[+]離完成上一篇文章有近1年了。2016年發生了太多的事情,從而沒能堅持哪怕是每月一篇這樣的頻率。終於在2017年的1月份抽出幾天搞出了一些東西。一路坑窪,趕緊記錄下來。2016年初就開始看深度學習的東西,主攻TensorFlow。但是一路專案再加上換了公司,每次都是搞兩天就停一陣子,然後再拾起來

windows7安裝tensorflow-gpu開發環境

www. software 清華大學 jetbrains 清華 數據分析師 數據分析 ftw 數據科學 1、安裝anaconda anaconda想必大家都不陌生,由於網站登不上去,我找到了清華大學的一個開源鏡像,下載地址為http://mirrors.tuna.tsin

使用docker在Ubuntu安裝TensorFlow-GPU

基於docker在Ubuntu上搭建TensorFlow-GPU計算環境 由於實驗室的伺服器有多人共享使用,而不同人的程式碼對應的keras和tensorflow版本不一致,所以對應的cuda版本也不相同,因此,考慮使用docker安裝自己的容器,這樣就可以避免共享cuda版本不一致

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

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

Ubuntu16.04 原始碼安裝CUDA8.0 tensorflow GPU

Ubuntu16.04 原始碼安裝tensorflow GPU 踩坑記 最近需要原始碼安裝一下tensorflow的GPU原始碼,踩了很多坑留給需要的 1.首先安裝CUDA 1.1 如果你原來有NVIDIA的驅動先解除安裝掉 sudo ap

win10安裝tensorflow-gpu版本遇到的

ImportError: Could not find 'cudart64_90.dll'. TensorFlow requires that this DLL be installed in a directory that is named in your

windows10 下安裝tensorflow 並且在jupyter notebook 使用tensorflow

回車 電腦 con 支持 連接 span python cond tps 1.安裝jupyter notebook並配置環境 首先建議大家安裝anaconda,最新版本請到官網下載(點擊下載連接),沒錯,直接點擊下載python3.6版本的(當然選擇做自己電腦相應的

utuntu安裝tensorflow-gpu

不同 flow ren nbsp code eve 遇到 sample ber 之前一直在windows下使用tensorflow,對cpu和gpu的安裝都是比較順利,都是使用anaconda環境下,創建虛擬conda環境,這樣方便不同python版本的管理。 一直也

ubuntu14.04_64位安裝tensorflow-gpu

family 電腦配置 str 驅動 water list 出現 切換 名單 電腦配置:GeForce GTX 1080 安裝GTX1080驅動 進入英偉達官網,下載GTX1080驅動,開始搜索,然後下載所需版本即可。我下載的是最新的384.130。 也可以在這裏下載。

環境配置(近期實測)——Ubuntu16.04+CUDA9.0+tensorflow-gpu

u盤 earch 實測 win 1.3 ted 等待 gef kernel 近幾年深度學習在物體檢測方面出現了許多基於不同框架的網絡模型,不同模型需要不同的版本的Python、TensorFlow、Keras、CUDA、cuDNN以及操作系統。不得不說,要把經典物體檢測網絡

Ubuntu 16.04 配置安裝 Tensorflow Gpu版本

Ubuntu 16.04 配置安裝 Tensorflow Gpu版本 1、安裝CUDA8.0 2、更改gcc版本 3、安裝深度學習庫cuDNN 4、安裝 Tensorflow Gpu enable python 2.7 版本

ubuntu16.04 LTS安裝Tensorflow-gpu(python)

最近在學習深度強化學習,模擬環境gym下的很多元件windows下不支援,只能移步linux,在linux下安裝tensorflow-gpu經常會出現各種奇奇怪怪令人生無可戀的問題,總是耗時耗力直到絕望,好在多次安裝,跳過各種坑,網上經常難以找到稱手的教程,自己寫一個,以後用,同時獻給需要的小夥伴們

Anaconda安裝Tensorflow-gpu精簡教程

最近因為專案的需要,需要給ubuntu安裝tensorflow-gpu,我在網上找了大量的教程,跟著網上的教程進行安裝 大致步驟是: 安裝顯示卡驅動   安裝CUDA   安裝CUDANN   安裝tensorflow-gpu 教

ubuntu安裝tensorflow gpu版本

由於之前用的1.4,cuda8.0,所以這次重灌了一下、 先裝驅動 再裝cuda9.0,下載 sudo sh cuda_9.2.148_396.37_linux.run Do you accept the previously read EULA, 輸入 acc

Ubuntu 16.04 安裝cuda9.0 &udnn7.0 之妙法:NVIDIA 驅動->cuda->cudnn->安裝tensorflow-gpu(windows 也可參考),試一下?

1. 安裝Ubuntu16.04 系統下載地址: http://releases.ubuntu.com/16.04/ 下載64位系統:ubuntu-16.04.4-desktop-amd64.iso 製作系統盤安裝,推薦使用rufus,這個簡單便捷,大力推薦。 下載網址:https://

【深度學習】安裝TensorFlow-GPU

1、Windows版 準備 乾淨的系統,沒有安裝過Python,有的話就解除安裝了。 另外我的系統安裝了VS2015 VS2017(這裡我不知道是不是必備的)。 現在TensorFlow和cuda以及cuDNN品名升級,所以這裡採用了幾乎是最新版的了(2018年11月19日) Anaconda

Linux下Anaconda安裝tensorflow-gpu

Linux下去官網下載需要版本的anaconda,官網有windows、Linux、mac對應的版本: 安裝:bash Anaconda3-4.4.0-Linux-x86_64.sh 一路回車根據提示安裝就好了 因為我是在組內伺服器部署,需要給伺服器聯網,(能上外網就不

記錄:Ubuntu 18.04 安裝 tensorflow-gpu 版本

  記錄:Ubuntu 18.04 安裝 tensorflow-gpu 版本 最近需要跑比較大的模型,電腦上的 cpu 版本太慢了,跑了兩天實驗室,大冬天的,還是待在宿舍學習比較舒服,於是狠下心來重新裝了系統,探索一下 gpu 版本的安裝。比較令人可喜的是,跟著前輩們的經驗,還是讓