NVIDIA GTX 1070 參見
經過兩次的Udacity DNN Projects後, 我受不了用CPU訓練了! 這實在是太慢了!
考量應該會長期使用GPU, AWS實在不怎麼便宜 (1hr=1USD @ Tokyo site), 加上local端訓練也比較方便, 就殺下去了!!
安裝 CUDA and cuDNN
大致上的安裝流程如下, 並不複雜, 更詳細可參考 link
安裝 CUDA Drivers
上述聯結中有下載路徑, 然後照頁面一步步選擇 (Operating System, Version, Installer Type)
Installer Type如果網路不好建議選擇 exe local, 然後下載後執行安裝就對了
Windows 環境變量中 CUDA_PATH 是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
, 但是仍須加上bin\
和lib\x64\
, 記得加上.安裝 cuDNN
要下載這個還要填一些登入資料, 需要再Accelerated Computing Developer Program註冊, 總之註冊後就可下載
解壓後會有一個資料夾cuda
, 裡面三個子資料夾bin, include, lib
將上述的檔案放到相對應的 CUDA Driver 的安裝路徑內, 預設是在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
安裝 tensorflow-gpu
最簡單的一步pip install tensorflow-gpu
然後即可測試, 如果有成功會有以下畫面, 注意 successfully 字有無出現1234567import tensorflow as tfI c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cublas64_80.dll locallyI c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cudnn64_5.dll locallyI c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cufft64_80.dll locallyI c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library nvcuda.dll locallyI c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library curand64_80.dll locally>>>
測試 GTX 1070 強大能力
使用兩個極端例子分別測試有無使用GPU速度上的差異
Neural Art 的例子: A Neural Algorithm of Artistic Style
這個例子是所有的東西都可以 load 進 memory 中, 因此沒有任何 I/O, 直接比拚運算能力! 因此可以直接看出 GPU 和 CPU 的計算能力差異
結果:時間沒有很嚴格計算, 是看產生結果的時間稍微計算的, 但這效能已經很誇裝了, 60倍, 60倍, 60倍!
跑出來的圖:- Content Image
- Style Image
- Result Image
- Content Image
不是所有的情況都能把 training data 和 model 都 load 進 memory 中, 所以勢必會有其他拖慢速度的環節, 其中最慢的就是 I/O
剛好 Udacity 的 project 3 就是每筆 training data 都需要去 load image 並且 on-the-fly 運算一堆 preprocessing.
這個情況剛好是另一種可能的極端
結果跑一個epoch所花的時間為
這種case看來只能加速到約 2倍. 沒辦法, 其他拖油瓶的動作佔太多比例了
短結
大部分的情況下, 提升的速度範圍會落在 2~60 倍 之間, 總之是值得的!
就算不玩DNN, 電動也要把它打到物超所值!