GTX 1070

NVIDIA GTX 1070 參見

經過兩次的Udacity DNN Projects後, 我受不了用CPU訓練了! 這實在是太慢了!
考量應該會長期使用GPU, AWS實在不怎麼便宜 (1hr=1USD @ Tokyo site), 加上local端訓練也比較方便, 就殺下去了!!


安裝 CUDA and cuDNN

大致上的安裝流程如下, 並不複雜, 更詳細可參考 link

  1. 安裝 CUDA Drivers
    上述聯結中有下載路徑, 然後照頁面一步步選擇 (Operating System, Version, Installer Type)
    Installer Type如果網路不好建議選擇 exe local, 然後下載後執行安裝就對了
    Windows 環境變量中 CUDA_PATHC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0, 但是仍須加上 bin\lib\x64\, 記得加上.

  2. 安裝 cuDNN
    要下載這個還要填一些登入資料, 需要再Accelerated Computing Developer Program註冊, 總之註冊後就可下載
    解壓後會有一個資料夾 cuda, 裡面三個子資料夾 bin, include, lib
    將上述的檔案放到相對應的 CUDA Driver 的安裝路徑內, 預設是在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

  3. 安裝 tensorflow-gpu
    最簡單的一步
    pip install tensorflow-gpu
    然後即可測試, 如果有成功會有以下畫面, 注意 successfully 字有無出現

    1
    2
    3
    4
    5
    6
    7
    >>> import tensorflow as tf
    I 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 locally
    I 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 locally
    I 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 locally
    I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library nvcuda.dll locally
    I 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速度上的差異

  1. Neural Art 的例子: A Neural Algorithm of Artistic Style
    這個例子是所有的東西都可以 load 進 memory 中, 因此沒有任何 I/O, 直接比拚運算能力! 因此可以直接看出 GPU 和 CPU 的計算能力差異
    結果:
    table1

    時間沒有很嚴格計算, 是看產生結果的時間稍微計算的, 但這效能已經很誇裝了, 60倍, 60倍, 60倍!
    跑出來的圖:

    • Content Image
    • Style Image
    • Result Image
  2. 不是所有的情況都能把 training data 和 model 都 load 進 memory 中, 所以勢必會有其他拖慢速度的環節, 其中最慢的就是 I/O
    剛好 Udacity 的 project 3 就是每筆 training data 都需要去 load image 並且 on-the-fly 運算一堆 preprocessing.
    這個情況剛好是另一種可能的極端
    結果跑一個epoch所花的時間為
    table2
    這種case看來只能加速到約 2倍. 沒辦法, 其他拖油瓶的動作佔太多比例了


短結

大部分的情況下, 提升的速度範圍會落在 2~60 倍 之間, 總之是值得的!

就算不玩DNN, 電動也要把它打到物超所值!