1. 引言
毫無疑問,GPU 對於 機器學習從業者來說一直扮演著非常重要的角色,尤其是在需要大量平行計算能力的 深度學習領域。由於英偉達 CUDA 架構 [1] 的出現,開發者得以利用 GPU 的平行計算能力,不需付出額外的努力就能實現通用計算。自 2007 年初首次推出 CUDA 以來,英偉達一直在改變 GPU 市場的格局以及 深度學習等 GPU 驅動的應用。
繼 2018 年秋髮布最新的圖靈架構並推出 GeForce 20 系列以後,英偉達最終於 2018 年末釋出了 Titan RTX。表 1.1 展示了 20 系列 GPU 及 10 系列代表性 GPU 1080 Ti 之間的主要差別。除了電晶體體積、CUDA Core、記憶體容量、記憶體頻寬上的升級之外,20 系列還增加了 Tensor Core 和 光線追蹤(RT)核兩個主要新部件。Tensor Core 使得 Titan RTX 可以實現高速浮點運算以及大型矩陣運算。Tensor Core 用 深度學習超級取樣(DLSS)代替抗鋸齒(anti-aliasing)。RT Core 用於生成反射和陰影。
強大的 GPU 促進了整個 機器學習和 深度學習社群的繁榮。由 GPU 支援的流行框架已經發布並迭代更新。 TensorFlow、PyTorch 和 MXNet 是具備 GPU 支援的、使用最廣泛的三種框架。雖然這些框架被設計為通用 機器學習平臺,但是它們的設計、架構和實現的內在差異導致了 GPU 上 機器學習效能的潛在差異。例如,在 VGG16 訓練測試中, TensorFlow 的訓練速度比 MXNet 快了 49%,PyTorch 比 MXNet 快了 24%。這種差異對於 機器學習從業者來說非常重要,他們在選擇帶有特定型別 GPU 的適當框架時必須考慮時間和金錢成本。
我們的目標是評估 TensorFlow、PyTorch 和 MXNet 在 Titan RTX 上實現的效能。此外,通過執行各種混合精度和單精度標準模型的訓練階段和推理階段,我們不僅收集了訓練/推理的進度資料,還記錄了 GPU 利用率、記憶體利用率等實時的 作業系統(OS)指標。這些 作業系統級別的指標進一步幫助區分各個框架利用底層硬體的能力。
安裝了 Titan RTX 測試臺上的實驗表明,在 ImageNet 和 COCO2017 這樣相對較大的資料集上, TensorFlow 和 PyTorch 的訓練速度可能比 MXNet 略快。但在相對較小的影象上, MXNet 有最好的訓練表現。這一轉變相當有趣,可能表明 TensorFlow 和 PyTorch 在資料密集型任務的優化上較有潛力,而 MXNet 在一般的 機器學習處理上較好。
另一個有趣的點在於,混合精度在 深度學習中表現非常好,在我們選擇的所有實驗中,我們不犧牲 準確率就能提高訓練速度。這表明,混合精度有成為 深度學習訓練主流的潛質。