隨著深度學習應用不斷進入商用化,各類框架在服務器端上的部署正在增多,可擴展性正逐漸成為性能的重要指標。香港浸會大學褚曉文團隊近日提交的論文對四種可擴展框架進行了橫向評測(Caffe-MPI、CNTK、MXNet 與 TensorFlow)。該研究不僅對各類深度學習框架的可擴展性做出了對比,也對高性能服務器的優(yōu)化提供了方向。
近年來,深度學習(DL)技術(shù)在許多 AI 應用當中取得了巨大成功。在獲得大量數(shù)據(jù)的情況下,深度神經(jīng)網(wǎng)絡(DNN)能夠很好地學習特征表示。但是,深度神經(jīng)網(wǎng)絡和大規(guī)模數(shù)據(jù)有著很高的計算資源要求。幸運的是,一方面,硬件加速器例如 GPU,F(xiàn)PGA 和 Intel Xeon Phi 可減少模型訓練時間。另一方面,近期的一些研究已經(jīng)證明,具有非常大的 mini-batch 的 DNN 可以很好地收斂到局部最小值。這對于利用大量處理器或集群而言是非常重要的。單個加速器的計算資源(比如計算單元和內(nèi)存)有限,無法處理大規(guī)模神經(jīng)網(wǎng)絡。因此,人們提出了并行訓練算法以解決這個問題,比如模型并行化和數(shù)據(jù)并行化。這也讓科技巨頭們在云服務中部署可擴展深度學習工具成為可能。亞馬遜采用 MXNet 作為云服務 AWS 的主要深度學習框架,谷歌采取 TensorFlow 為谷歌云提供支持,而微軟為微軟云開發(fā)了 CNTK。此外,浪潮集團開發(fā)了 Caffe-MPI 以支持 HPC 的分布式部署。
在英偉達高性能 DNN 庫 cuDNN 的幫助下,CNTK,MXNet 和 TensorFlow 除了能在單 GPU 上實現(xiàn)高吞吐率之外,還能在多個 GPU 和多種機器之間實現(xiàn)良好的可擴展性。這些框架為開發(fā)者提供了一個開發(fā) DNN 的簡便方法。此外,嘗試相關算法優(yōu)化,通過使用多核 CPU、眾核 GPU、 多 GPU 和集群等硬件來實現(xiàn)高吞吐率。但是,由于軟件開發(fā)商的實施方法不盡相同,即使在同一個硬件平臺上訓練相同的 DNN,這些工具的性能表現(xiàn)也不盡相同。研究者已經(jīng)對各種工具在不同 DNN 和不同硬件環(huán)境下進行了評估,但是深度學習框架和 GPU 的升級太過頻繁,導致這些基準無法反映 GPU 和軟件的最新性能。另外,多 GPU 和多機平臺的可擴展性還沒有得到很好的研究,但這是計算機集群最重要的性能指標之一。
本文擴展了我們之前的工作,嘗試評估 4 個分布式深度學習框架(即 Caffe-MPI、CNTK、MXNet 和 TensorFlow)的性能。我們使用四臺由 56 Gb 的 InfiniBand 架構(gòu)網(wǎng)絡連接的服務器,其中每一個都配備了 4 塊 NVIDIA Tesla P40,以測試包括單 GPU,單機多 GPU,和多機在內(nèi)的 CNN 架構(gòu)的訓練速度。我們首先測試了隨機梯度下降(SGD)優(yōu)化的運行性能,然后關注跨多 GPU 和多機的同步 SGD(S-SGD)的性能,以分析其細節(jié)。我們的主要研究發(fā)現(xiàn)如下:
對于相對淺層的 CNN(例如 AlexNet),加載大量訓練數(shù)據(jù)可能是使用較大 mini-batch 值和高速 GPU 的潛在瓶頸。有效的數(shù)據(jù)預處理可以降低這一影響。
為了更好地利用 cuDNN,我們應該考慮自動調(diào)優(yōu)以及輸入數(shù)據(jù)的格式(例如 NCWH,NWHC)。CNTK 和 MXNet 都對外顯露了 cuDNN 的自動調(diào)優(yōu)配置,這都有利于在前向傳播和反向傳播中獲得更高的性能。
在擁有 multiple GPU 的 S-SGD 當中,CNTK 不會隱藏梯度通信的開銷。但是,MXNet 和 TensorFlow 將當前層的梯度聚合與前一層的梯度計算并行化處理。通過隱藏梯度通信的開銷,擴展性能會更好。
所在四個高吞吐量的密集 GPU 服務器上,所有框架的擴展結(jié)果都不是很好。通過 56Gbps 網(wǎng)絡接口的節(jié)點間梯度通信比通過 PCIe 的節(jié)點內(nèi)通信慢得多。
深度學習框架已經(jīng)被廣泛部署于 GPU 服務器上,已為學術(shù)界和工業(yè)界的深度學習應用提供支持。在深度學習網(wǎng)絡(DNN)的訓練中,有許多標準化過程或算法,比如卷積運算和隨機梯度下降(SGD)。但是,即使是在相同的 GPU 硬件運行相同的深度學習模型,不同架構(gòu)的運行性能也有不同。這篇文章分別在單 GPU,多 GPU 和多節(jié)點環(huán)境下評估了四種先進的分布式深度學習框架(即 Caffe-MPI、CNTK、MXNet 和 TensorFlow)的運行性能。首先,我們構(gòu)建了使用 SGD 訓練深度神經(jīng)網(wǎng)絡的標準過程模型,然后用 3 種流行的卷積神經(jīng)網(wǎng)絡(AlexNet、GoogleNet 和 ResNet-50)對這些框架的運行新能進行了基準測試。通過理論和實驗的分析,我們確定了可以進一步優(yōu)化的瓶頸和開銷。文章的貢獻主要分為兩個方面。一方面,對于終端用戶來說,針對他們的場景,測試結(jié)果為他們選擇合適的框架提供了參考。另一方面,被提出的性能模型和細節(jié)分析為算法設計和系統(tǒng)配置而言提供了更深層次的優(yōu)化方向。
表 2 針對數(shù)據(jù)并行化的實驗硬件配置
圖 1 GPU 集群的拓撲
表 3 實驗所用的軟件
表 4 試驗中神經(jīng)網(wǎng)絡的設置
表 5 SGD 不同階段的時間(單位:秒)
圖 3 三種神經(jīng)網(wǎng)絡在單 GPU 上的性能比較(數(shù)值越低越好)
圖 4 三種神經(jīng)網(wǎng)絡在單節(jié)點多 GPU 上的擴展性能
表 6 多 GPU 前端節(jié)點梯度聚合的數(shù)據(jù)通信開銷
表 7 多機梯度聚合的數(shù)據(jù)通信開銷
圖 5 多機環(huán)境下三種神經(jīng)網(wǎng)絡的擴展性能。請注意,每臺機器 4 塊 GPU,8 塊 GPU 和 16 塊 GPU 的情況是分別跨 2 個與 4 個機器的。
表 8 所有測試案例的速度