學習的話,用linux還是比較好,但是雙系統虛擬機跑的話只能用CPU,太慢了,所以還是要裝windows,用上我的兩塊GPU。
因爲是照着別人的搭配選擇的版本,整體來說比較簡單,除了一些網絡問題和等待,沒太大的阻礙,比linux下默認自帶python3的anaconda弄需要python2的caffe簡單多了(手動滑稽)。
過於詳細的流水教程就不寫了,網上很多了,主要列一些自己遇到的坑。
目錄
-
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
網絡不好,無論哪個版本,都可能是這樣,可能只有幾百B的exe,也可能看起來和官網描述的文件大小几乎一樣,但都是失敗。
顯卡支持9.1,但是別人都是9.0,tensorflow的話,有兼容問題吧。
網絡環境原因,下載老出故障,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)。
所以進行準確度檢測的時候,可以分批次進行,最後求平均。