win7-64安裝anaconda4.6.7+cuda9.0+cudnn7.0+tensorflow-gpu1.5.0+pycharm+jupyter過程及遇到的一些問題

學習的話,用linux還是比較好,但是雙系統虛擬機跑的話只能用CPU,太慢了,所以還是要裝windows,用上我的兩塊GPU。

因爲是照着別人的搭配選擇的版本,整體來說比較簡單,除了一些網絡問題和等待,沒太大的阻礙,比linux下默認自帶python3的anaconda弄需要python2的caffe簡單多了(手動滑稽)。

過於詳細的流水教程就不寫了,網上很多了,主要列一些自己遇到的坑。

 

目錄

Anaconda

conda 三方源

CUDA

CUDNN

CUDNN的版本兼容坑

tensorflow GPU版:

測試庫導入和顯卡信息:

pycharm和conda的兼容:

anaconda導航中jupyter啓動路徑設置:

使用GPU進行訓練,對比CPU、GPU性能表現:




 

  • Anaconda

 

Anaconda就算python發行版,只是自帶管理工具,所以,先把win下的python刪了比較好弄一些,尤其環境變量之類的

 

https://www.anaconda.com/distribution/#download-section

anaconda 官網

兩個版本,一個命令行,一個graphical,是圖形界面,而不是GPU版本

環境變量需要手動加scripts

d:\Anaconda3;d:\Anaconda3\Scripts;

也不行!!!!!!!!!

 

最新版本的anaconda弄成python3.7了,還得降級或者新建環境。

 

下載的graphical,卻沒有navigator,只有一個命令行,命令還沒有,安裝失敗。。

問題來自舊python,刪乾淨之後裝成功。

 

 

 

  • conda 三方源

 

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

conda config --set show_channel_urls yes

 

 

源搞定之後降級安裝一個3.6環境

 

conda create --name py36 python=3.6

conda activate py36

deactivate

 

 

 

 

 

 

  • CUDA

https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=7&target_type=exelocal

網絡不好,無論哪個版本,都可能是這樣,可能只有幾百B的exe,也可能看起來和官網描述的文件大小几乎一樣,但都是失敗。

 

顯卡支持9.1,但是別人都是9.0,tensorflow的話,有兼容問題吧。

https://developer.nvidia.com/cuda-90-download-archive?target_os=Windows&target_arch=x86_64&target_version=7&target_type=exelocal

 

網絡環境原因,下載老出故障,CSDN買個網盤下載。沒想到下了個win10的,win7不兼容,又換了一個win7版的,成功。

 

CUDA選精簡安裝的話不只是不能選擇安裝組件,還不能選路徑!!!C盤侷促的話需要注意。(我C盤SSD,還是先放C盤吧)

再次運行安裝程序也不提供卸載舊版本功能,需要自己去控制面板一個一個卸載,坑!

 

  • CUDNN

插入式,複製到CUDA的路徑下

 

windows下的文件會少一些,分別複製到 \NVIDIA GPU Computing Toolkit\CUDA\v9.0\對應位置,當然,結構是一樣的,整體複製就行了。

 

路徑不要找錯,有appdata,有安裝目錄,正確的操作應該會提示合併,沒有替換。

想卸載cudnn就是把這幾個文件刪掉。

 

CUDNN的版本兼容坑

Loaded runtime CuDNN library: 7500 (compatibility version 7500) but source was compiled with 7003 

CUDNN不是第一個大版本一致就行,第二個數字也有要求,我以爲CUDNN7就可以了,其實必須是7.0,不能是7.5,其實問題不在nvidia,支持CUDA9.0都是支持的,只是tensorflow的版本兼容,可能新版tensorflow會好,但是爲了整體兼容,我就不升高級tensorflow了,下載v7.0.5。

選個對應版本

 

 

  • tensorflow GPU版:

版本沒太多忌諱,我的6700也支持AVX。

 

 

 

 

 

我這套環境其實不適合直接裝最新,這會裝1.13.1,不支持我現在的CUDA9.0+CUDNN7.5!

pip install --ignore-installed --upgrade tensorflow-gpu

直接都卸載了。換個1.5。

 

如果有互相干擾的問題,最好是用conda來裝,別用pip。

pip install tensorflow-gpu=1.5.0

conda install tensorflow-gpu==1.5.0

 

  • 測試庫導入和顯卡信息:

import tensorflow as tf 

tf.test.gpu_device_name()

 

from tensorflow.python.client import device_lib device_lib.list_local_devices()

 

剩下就是其他的numpy、pandas、matplotlib之類的都用conda install走一遍。

 

  • pycharm和conda的兼容:

pycharm需要設置環境,而anaconda有虛擬環境,不可能直接找到。

 

工程設置,別選new,選已有的。從右邊按鈕手動添加

 

找到自己配置的envs路徑,找到python.exe

確定後,可以看到,自己裝的庫都加載出來了,說明設置成功

打印測試,我裝的TF1.5.0

 

  • anaconda導航中jupyter啓動路徑設置:

雖然可以從命令行改路徑啓動,但是還是導航界面方便些。

但是導航界面的jupyter只是運行,不能設置

他默認在C盤,不能再向上,但是我不在C盤運行

去命令行生成一個配置文件

jupyter notebook --generate-config

 

放開 c.NotebookApp.notebook_dir這句註釋,自己指定dir

 

成功

 

 

jupyter不像linux有多個內核可選了,因爲這個jupyter是根據每個虛擬環境單獨安裝的,就屬於py36,選python3即可。

加載成功

還有,快捷方式的用戶名後綴%USERPROFILE%刪掉,保持裸的.py就好。

 

 

 

 

如果從Anaconda導航啓動notebook,還會有個問題,沒有提示你口令是什麼:

他會找默認瀏覽器,比如IE,而你不想用,換個瀏覽器打開就完蛋:

根據提示,用jupyter notebook list可以看到列表,複製出來就好。

發現又一個問題,已經開了過多進程,卻沒法簡單的靠ctrl+c或者jupyter的shutdown(沒這個命令)關閉掉。不知道是不是ANACONDA NAVIGATOR的Bug,他沒有一個運行狀態反饋機制,只能讓你重複的點‘launch’,越開越多,煩。

只能殺掉了。所以還是用命令行啓動更方便點,或者啓動一次就一直掛着,以後就用口令繼續使用之前的進程。

 

使用GPU進行訓練,對比CPU、GPU性能表現:

使用簡單神經網絡進行MNIST的訓練。

顯存爆了,每個卡,3G,只剩下三百M(這裏可以通過配置動態增長或者指定顯存使用比例來解決)

使用nvidia自帶程序

瀏覽器和音樂播放器都在吃顯存。

運行太久了,重新開機,顯存足夠,發現不是顯存的問題,是cudnn的版本問題

 

換回CUDNN7.0.5之後,先不管嚇人但是沒卵用的warning,可以正常訓練了。

 

 

使用MNIST訓練,batch_size=50,沒有額外優化情況下,雙1060 3G對比i7 6700,大概是13倍的關係。

GPU:

虛擬機tensorflow-CPU版:

考慮到虛擬機只分了一半的核,使用windows跑,2000步也是188的時間,和虛擬機幾乎一樣,說明CPU訓練沒有多線程優化

爲了凸顯GPU的價值,加大batch_size到500試一下,21.7倍,batch_size大了就更可能利用到GPU的優勢。

CPU

GPU

 

弊端:

跑測試集,如果一下跑整個數據集,GPU會爆,CPU卻不一定爆內存(本機16GB)。

所以進行準確度檢測的時候,可以分批次進行,最後求平均。

 

 

 

 

 

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