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