4倍速!ML.NET Model Builder GPU 與 CPU 對比測試
當我們使用 Visual Studio 進行機器學習開發時,一般都會推薦安裝 ML.NET Model Builder ,這讓我們的開發更加視覺化,並且按照步驟載入相關的訓練集,選擇好模型就夠了,一切就是如此樸實無華。
說到ML.NET Model Builder ,之前的更新發布中有提到說,開發者有3種指定的訓練環境可選擇:本地 CPU,本地 GPU,Azure。我們在無數的機器學習介紹中都瞭解到,GPU 對於機器學習加速的優勢,在 ML.NET 中表現如何呢?說實話,很長一段時間我沒有深究過,對於小型影象識別模型,由於影象訓練集也很小,訓練時長在 CPU 和 GPU 之間相差幾乎看不到,所以我決定來點更具挑戰性的資料集認真做下對比測試。
在新的測試中我將採用來自 Kaggle 挑戰賽的一項計算機視覺方向的任務叫【State Farm Distracted Driver Detection】。這個任務旨在探索一種能夠識別開車中的司機分心,有可能導致危險駕駛的影象識別模型。這個任務有一個 1GB 左右的訓練用影象集,2.2 w+ 張照片,覆蓋了包括打電話、發簡訊、飲酒、往後看、操作收音機、與他人交談、化妝等10個分心的標註型別。開啟 Visual Studio 後,我在 ML.NET Model Builder 中配置瞭如下的訓練影象分類模型的方案:
CPU 訓練
這個訓練場景比以往的資料集要重得多。總時間為39.2分鐘。實驗總時間 : 2353.6729442 秒
------------------------------------------------------------------------------------------------------------------ | Summary | ------------------------------------------------------------------------------------------------------------------ |ML Task: image-classification | |Dataset: C:\Users\bean\AppData\Local\Temp\5e873581-2dab-4d46-911d-cfc0a0455eb1.tsv | |Label : Label | |Total experiment time: 2353.6729442 Secs | |Total number of models explored: 1 | ------------------------------------------------------------------------------------------------------------------
GPU 訓練
使用 GPU 後,簡直了!以 1/4 的時間完爆 CPU!僅用了9.6 分鐘。實驗總時間 : 581.1946062 秒
------------------------------------------------------------------------------------------------------------------ | Summary | ------------------------------------------------------------------------------------------------------------------ |ML Task: image-classification | |Dataset: C:\Users\bean\AppData\Local\Temp\cccb2b3f-dbce-45e5-b17e-872b6cc3f116.tsv | |Label : Label | |Total experiment time : 581.1946062 Secs | |Total number of models explored: 1 | ------------------------------------------------------------------------------------------------------------------
結論
GPU 對深度學習的加持再合適不過了,因為它們被設計用於處理的計算型別與深度學習中遇到的計算型別相同,專門處理影象、視訊和其他圖形的矩陣結構,執行類似放大效果或旋轉操作時,本質上做的只是對矩陣應用一些數學變換而已,機器學習過程中的資料運算剛好適配它。另一方面,ML.NET Model Builder 僅依賴於配置 CUDA 10.0 環境的 GPU,大多數 NVIDIA 顯示卡就能滿足。所以沒有理由拒絕 GPU 對於 ML.NET 在機器學習中的提升對吧!