當我們使用 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 在機器學習中的提升對吧!