ImageNet 訓(xùn)練紀(jì)錄再次被刷新!富士通實驗室在 74.7 秒內(nèi)完成了 ImageNet 上訓(xùn)練 ResNet-50 網(wǎng)絡(luò),使用 2048 個 GPU,準(zhǔn)確率為 75.08%,刷新了此前谷歌 1.8 分鐘的記錄。
在過去兩年中,深度學(xué)習(xí)的速度加速了 30 倍。但是人們還是對 “快速執(zhí)行機(jī)器學(xué)習(xí)算法” 有著強(qiáng)烈的需求。
Large mini-batch 分布式深度學(xué)習(xí)是滿足需求的關(guān)鍵技術(shù)。但是由于難以在不影響準(zhǔn)確性的情況下在大型集群上實現(xiàn)高可擴(kuò)展性,因此具有較大的挑戰(zhàn)難度。
最近,富士通實驗室的一項研究刷新了一項紀(jì)錄:
論文地址:
https://arxiv.org/pdf/1903.12650.pdf
這項研究在74.7 秒內(nèi)完成了 ImageNet 上訓(xùn)練 ResNet-50 網(wǎng)絡(luò),使用 2048 個 GPU,準(zhǔn)確率為 75.08%,刷新了此前谷歌 1.8 分鐘的記錄。
表1:ImageNet上訓(xùn)練ResNet-50的記錄
增加 mini-batch 大小,實現(xiàn)短時間內(nèi)的高準(zhǔn)確性
基于大數(shù)據(jù)集的深度神經(jīng)網(wǎng)絡(luò) (DNN) 模型在對象檢測、語言翻譯等領(lǐng)域取得了令人矚目的成果。然而,隨著 DNN 模型和數(shù)據(jù)集規(guī)模的增大,DNN 訓(xùn)練的計算量也隨之加劇。
具有數(shù)據(jù)并行性的分布式深度學(xué)習(xí)是加速集群訓(xùn)練的一種有效方法。
在這種方法中,集群上啟動的所有進(jìn)程都具有相同的 DNN 模型和權(quán)重。每個過程都用不同的 mini-batch 訓(xùn)練模型,但是來自所有過程的權(quán)重梯度被組合以更新所有權(quán)重。
對于大型集群,這種通信開銷成為一個重要的問題。
為了減少大型集群的開銷,該研究增加了 DNN 的 mini-batch 大小,且并行計算了 DNN 訓(xùn)練。然而,在 minni-batch 訓(xùn)練中,DNN 模型的驗證精度普遍較差。
因此,研究者們采用了幾種技術(shù)來增加 mini-batch 的大小,這表明了在迭代中計算的輸入圖像的數(shù)量,而不會影響驗證的準(zhǔn)確性。
在實驗過程中,本文使用了人工智能橋接云基礎(chǔ)設(shè)備 (AI Bridging Cloud Infrastructure,ABCI) 集群 GPU和自優(yōu)化的 MXNet 深度學(xué)習(xí)框架。并在 ImageNet 上使用 81,920 mini-batch 大小,74.7 秒內(nèi)實現(xiàn)了 ResNet-50 的 75.08%驗證準(zhǔn)確度。
技術(shù)方法三部曲
本文的技術(shù)方法主要分為三個部分:準(zhǔn)確性改良、框架優(yōu)化和通信優(yōu)化。
A. 準(zhǔn)確性改良
這部分采用了通常用于深度學(xué)習(xí)優(yōu)化器的隨機(jī)梯度下降(SGD)。在對 large mini-batch 進(jìn)行訓(xùn)練時,SGD 更新的數(shù)量隨著小型批大小的增加而減少,因此提高 large mini-batch 的最終驗證精度是一個很大的挑戰(zhàn),本文采用了以下技術(shù)。
學(xué)習(xí)速率控制:由于更新數(shù)量較少,需要使用高學(xué)習(xí)率來加速訓(xùn)練。 然而,高學(xué)習(xí)率使得模型訓(xùn)練在早期階段不穩(wěn)定。 因此,我們通過使用逐漸提高學(xué)習(xí)率的預(yù)熱 (warmup) 來穩(wěn)定 SGD。此外,對于某些層,所有層的學(xué)習(xí)速率都太高了,還通過使用層次自適應(yīng)速率縮放(LARS)來穩(wěn)定訓(xùn)練,LARS 根據(jù)規(guī)范權(quán)重和梯度調(diào)整每層的學(xué)習(xí)速率。
其它技術(shù):據(jù)報道,標(biāo)簽平滑提高了 32,768 個 mini-batch 的準(zhǔn)確性。本文也采用了這種方法,并對 81920 個 mini-batch 進(jìn)行了精度改進(jìn)。
batch 標(biāo)準(zhǔn)化層的均值和方差的移動平均 (moving average) 在每個過程中獨立計算,而權(quán)重是同步的。這些值在 large mini-batch 上變得不準(zhǔn)確;因此,本文調(diào)整了一些超參數(shù)來優(yōu)化移動平均線。
B. 框架優(yōu)化
我們使用了 MXNet,MXNet 具有靈活性和可擴(kuò)展性,能夠在集群上高效地訓(xùn)練模型。然而,在中小型集群環(huán)境中只占總時間的一小部分的處理方式可能成為大規(guī)模集群環(huán)境中的瓶頸。我們使用了幾個分析器來分析 CPU 和 GPU 性能,找出了瓶頸。我們對瓶頸進(jìn)行了優(yōu)化,提高了訓(xùn)練吞吐量。
1) 并行 DNN 模型初始化:
在數(shù)據(jù)并行分布式深度學(xué)習(xí)中,必須初始化所有層,使所有進(jìn)程的權(quán)重相同。通常,根進(jìn)程初始化模型的所有權(quán)重。然后,進(jìn)程將這些權(quán)重傳遞 (broadcast) 給所有進(jìn)程。傳遞時間隨著進(jìn)程數(shù)量的增加而增加,在有成千上萬個進(jìn)程進(jìn)行分布式深度學(xué)習(xí)時,其成本不可忽視。
因此,我們采用了其他初始化方法,即每個進(jìn)程具有相同的種子并并行地初始化權(quán)重。這種方法無需 broadcast 操作就可以同步初始權(quán)重。
2) GPU 上的 Batch Norm 計算:
每層的 norm 計算都需要使用 LARS 更新權(quán)重。與 GPU 上的內(nèi)核數(shù)量相比,ResNet-50 的大多數(shù)層沒有足夠的權(quán)重。如果我們在 GPU 上計算每一層的 weight norm,線程數(shù)不足以占據(jù)所有 CUDA 核心。因此,我們實現(xiàn)了一個特殊的 GPU 內(nèi)核,用于 batched norm 計算到 MXNet。該 GPU 內(nèi)核可以啟動足夠數(shù)量的線程,并且可以并行計算層的范數(shù)。
C. 通信優(yōu)化
分布式并行深度學(xué)習(xí)要求所有 reduce 通信在所有進(jìn)程之間交換每一層的梯度。在大集群環(huán)境中,由于每個 GPU 的 batch size 較小,使得通信時間變長,計算時間變短,因此 reduce communication 開銷是不可忽略的。為了克服這些問題,我們采用了以下兩種優(yōu)化方法。
1) 調(diào)整通信的數(shù)據(jù)大小
2) 通信的優(yōu)化調(diào)度
實驗設(shè)置與實驗結(jié)果
我們使用 ABCI 集群來評估基于 MXNet 的優(yōu)化框架的性能。ABCI 集群的每個節(jié)點由兩個 Xeon Gold 6148 CPU 和四個 NVIDIA Tesla V100 SXM2 GPU 組成。此外,節(jié)點上的 GPU 由 NVLink 連接,節(jié)點也有兩個 InfiniBand 網(wǎng)絡(luò)接口卡。圖 1 為 ABCI 集群節(jié)點結(jié)構(gòu)示意圖。
圖 1:ABCI 集群中一個計算節(jié)點的示意圖。它由兩個 GPU、四個 GPU 和兩個連接到相應(yīng) CPU 的 HCA 組成。
我們使用混合精度方法,使用半精度浮點數(shù)計算和通信,并使用單精度浮點數(shù)更新權(quán)重。我們使用了原始優(yōu)化器,它可以很好地控制學(xué)習(xí)率。除了穩(wěn)定訓(xùn)練精度外,我們還使用了 warmup 和 LARS 技術(shù)。
我們對 ResNet-50 訓(xùn)練的測量依據(jù) MLPerf v0.5.0 規(guī)則。也就是說,我們度量了從 “run start” 到 “run final” 的運行時間,其中包括初始化和內(nèi)存分配時間。
結(jié)果表明,優(yōu)化后的 DNN 框架在 74.7 秒內(nèi)完成了 ImageNet 上 ResNet-50 的訓(xùn)練,驗證精度為 75.08%。
圖 2:優(yōu)化后的框架的可擴(kuò)展性用實線表示,虛線表示理想曲線。
我們還測量了 ResNet-50 的可擴(kuò)展性。圖 2 顯示了根據(jù) GPU 數(shù)量計算的吞吐量。在圖 2 中,虛線表示理想的每秒圖像吞吐量,實線表示我們的結(jié)果。如圖表明,直到 2048 個 GPU,我們的框架的可擴(kuò)展性都非常好。使用 2048 個 GPU 的吞吐量為每秒 170 萬張圖像,可擴(kuò)展性為 77.0%。
圖 3:在 49152 個或更大的 mini-batch 訓(xùn)練中,top-1 驗證精度的變化
圖 3 顯示了 81,920 個或更大的 mini-batch 訓(xùn)練中 top-1 驗證精度的結(jié)果。從圖 3 中可以看出, mini-batches 超過 81,920 個的驗證精度低于 74.9%,不符合 MLPerf 規(guī)定。因此,ImageNet 數(shù)據(jù)集一個 epoch 的圖像數(shù)量為 1,280,000 張,如果使用 81,920 mini-batch,一個 epoch 中的更新數(shù)量僅為 16 張,其中更新總數(shù)為 1,440 張。這個數(shù)字太小,SGD 求解器無法訓(xùn)練 DNN 權(quán)重。因此,使用大的 mini-batch 是一個很大的挑戰(zhàn),我們嘗試使用盡可能大的 mini-batch。
如表 1 所示,與其他工作相比,81,920 mini-batch size 已經(jīng)很大,驗證精度達(dá)到 75% 以上。
圖 4:訓(xùn)練精度與驗證精度之比較
圖 4 顯示了訓(xùn)練精度與驗證精度的對比。從圖中可以看出,使用 batch normalization 和 label smoothing 技術(shù),我們的驗證精度結(jié)果并沒有過擬合。
結(jié)論
我們開發(fā)了一種新的技術(shù),可以在大規(guī)模 GPU 集群上使用 large mini-batch,而不會降低驗證精度。我們將該技術(shù)應(yīng)用到基于 MXNet 的深度學(xué)習(xí)框架中。使用 81920 minibatch size,我們的 DNN 訓(xùn)練結(jié)果在 74.7 秒內(nèi)訓(xùn)練完 ResNet-50,驗證精度達(dá)到 75.08%。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100778 -
gpu
+關(guān)注
關(guān)注
28文章
4740瀏覽量
128955 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8418瀏覽量
132655
原文標(biāo)題:74.7秒訓(xùn)練完ImageNet!刷新記錄,2048 GPU暴力出奇跡
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論