GPU vs CPU
GPU(graphics processing unit)圖形處理器,原本用來處理畫面像素的運算,例如電玩畫面需要大量圖形運算。CPU與GPU架構上有根本不同:CPU含有數顆核心,為循序處理進行最佳化,但是GPU可以達到,數千個小型而且高效率的核心,就可以發揮平行運算的強大功能。
TensorFlow GPU版本說明
TensorFlow要利用GPU強大的平行運算功能,必須安裝TensorFlow GPU版本。 Tensorflow GPU版本:主要是透過NVIDIA提供的CUDA和CudNN,才能運用GPU執行深度學習訓練。 如下圖:上圖說明如下:
- Keras:是Tensorflow的高階API,所以必須透過Tensorflow GPU的版本,才能運用GPU執行深度學習訓練。
- CUDA:是由NVIDIA所推出的整合技術,統一計算架構CUDA(Compute Unified Device Architecture),CUDA是NVIDIA的平行運算架構,可運用繪圖處理單元(GPU) 的強大處理能力,大幅增加運算效能。Nvidia已售出數百萬顆CUDA GPU,程式設計師、科學家等,將 CUDA 應用於各種領域,如影像處理、視訊處理、醫學診斷..等等。
- cuDNN: (CUDA Deep Neural Network library)是NVIDIA深度學習 SDK的一部分,是GPU的深度學習程式庫。cuDNN能為深度學習,提供高效能神經網絡層級,例如:卷積、池化和激活層..等等。
TensorFlow GPU執行環境安裝步驟
在第4章我們已經介紹如何在Windows安裝Tensorflow的CPU的執行環境。本章將介紹如何安裝TensorFlow GPU執行環境。因為CPU與GPU所需要安裝的Tensorflow版本不一樣。所以我們會分別建立CPU與GPU的anaconda虛擬環境,方便我們後續測試CPU與GPU的執行效能。
TensorFlow GPU執行環境安裝步驟如下:
詳細安裝步驟,請參考本書說明
啟動tensorflow-gpu環境
匯入tensorflow模組
TensorFlow GPU與CPU執行效能比較
我們將建立performanceTest函數,以TensorFlow執行矩陣運算,測試不同的矩陣大小,運用GPU與CPU執行效能。定義performanceTest函數,傳入下列參數:
- device_name:設定要使用GPU或CPU進行運算。
- size:設定要建立矩陣的大小
以下程式碼詳細說明,請參考本書說明
。
以for迴圈執行performanceTest函數
以for迴圈分別以GPU與CPU執行不同的矩陣大小(500x500、1000x1000、....5000x5000),測試執行效能。
將執行結果以圖形顯示
上圖X軸是矩陣大小,Y軸是執行時間,矩陣越大,CPU與 GPU的差距越大。也就是說,矩陣越大,越能發揮使用GPU的效能。
以TensorFlow與Keras深度學習模型實際範例,比較CPU與GPU的執行效能
接下來,我們將以實際範例,比較CPU與GPU的執行速度,我們將本書具代表性的範例程式,分別在TensorFlow CPU與GPU虛擬環境中執行:- 第18章的Tensorflow_Mnist_MLP_h1000.ipynb (Tensorflow多層感知器辨識手寫數字)
- 第19章的Tensorflow_Mnist_CNN.ipynb (Tensorflow卷積神經網路辨識手寫數字)
- 第10章的Keras_Cifar_CNN.ipynb (Keras卷積神經網路辨識Cifar-10影像)
書中會詳細說明如何在TensorFlow與Keras在CPU與GPU虛擬環境中執行,在這裡我們只整理執行後的結果,如下列表格是:15個訓練週期(epoch)所需時間。
以上執行結果,GPU比起CPU執行時間,平均大約減少了30%。筆者測試的GPU獨立顯示卡,是最入門型的GeForce GT 720,價格不到2000元,有這樣的執行效能還可以接受,您可以選用更高階的顯示卡GPU提高執行效能。
不好意思 我想請問我安裝tensorflow-gpu後安裝keras也自動安裝tensorflow cpu版所以我用keras在跑好像都是用cpu請問如何指定使用gpu版的tensorflow呢~??
回覆刪除可以到這個網址,安裝有兩種方式
回覆刪除https://www.tensorflow.org/install/install_windows