當前位置:
首頁 > 科技 > 沒有最快,只有更快!富士通74.7秒在ImageNet上訓練完ResNet-50

沒有最快,只有更快!富士通74.7秒在ImageNet上訓練完ResNet-50

大數據文摘出品

編譯:林安安、蔣寶尚

74.7秒!

根據日本富士通實驗室最新研究。他們應用了一種優化方法,在ABCI 集群上,實現了74.7秒的訓練時間。訓練吞吐量為173萬圖像/秒,top-1驗證準確率為75.08%。

當然,如此快的速度也依賴於巨量的算力——使用了2,048個GPU。

目前此論文已經放在了arxiv上面供大家免費下載。

論文下載地址:

https://arxiv.org/abs/1903.12650

論文中提到,深度學習在過去的兩年內迅速發展,發展速度加快了三十倍,人們對於能夠高效執行機器學習的演算法的需求越來越大。使用大規模mini batch的分散式深度學習是解決這個需求的關鍵技術,但很難準確地在大型集群上實現很高的可擴展性。

在大型數據集上訓練的深度神經網路(DNN)模型在各領域(如物體檢測,語言翻譯等)都取得了令人矚目的成果。然而,隨著DNN模型和數據集的增多,DNN訓練的計算成本也增加了。

眾所周知,具有數據並行性的分散式深度學習能快速進行群集訓練。此方法中,在群集上進行的所有進程都具有相同的DNN模型和權重。每個進程使用不同的mini batch訓練模型,但是所有進程的權重梯度通過組合來更新。

這種通信開銷(communication overhead)成為大型集群的重要問題。為了減少大型集群的開銷,研究團隊增加了DNN的mini batch並且同時進行DNN訓練。然而,使用大型mini-batch訓練通常會導致DNN模型的驗證準確性更差。因此,他們使用幾種方法來增加mini-batch的大小,這代表在迭代中計算的輸入圖像的數量,而且不會影響驗證準確性。

關於使用的計算資源,他們在ABCI 集群和優化的MXNet深度學習框架上使用2,048個GPU。在ImageNet上使用81,920 mini-batch,74.7秒內就訓練好 ResNet-50,達到了75.08%驗證準確度。

具體方法

根據論文介紹,具體的研究方法分為3個部分,準確率提升、框架優化以及通信優化(Communication Optimizations)

關於準確率提升,其使用了通常用於深度學習優化的隨機梯度下降(SGD)。當使用 large mini-batch 訓練時,SGD 更新數量會隨著小批量的增加而減少。所以,提高 large mini-batch 上最終驗證準確率是一個很大的挑戰,他們採用了學習速率控制:由於更新次數少,需要使用較高的學習速度來加速訓練。然而,高的學習率使模型的訓練在早期階段變得不穩定。因此,我們通過使用熱身(warmup)來穩定SGD,從而逐漸提高學習率。此外,對於某些層次來說,所有層的學習速度都太高,使用分層自適應率來穩定訓練。

ImageNet 上 ResNet-50 的訓練時間和 top-1 驗證準確率。

關於框架。其使用了MXNet,這是一個用C ++和CUDA C語言編寫的開源深度學習框架。MXNet具有靈活性和可擴展性,可以在集群上高效地訓練模型。然而,在中小型集群環境中只佔總時間的一小部分的處理可能成為大規模集群環境中的瓶頸。他們分析了CPU和GPU的性能,並找出了瓶頸。 優化了瓶頸,提高訓練吞吐量如下。採用的方法包括:並行DNN模型初始化( Parallel DNN model initialization)、在GPU上的批量規範計算(Batched norm computations on the GPU)

分散式並行深度學習需要所有減少通信以在所有進程之間交換每層的梯度,由於每個GPU的batch規模小,因此通信時間變長,而計算時間變短,所以減少通信開銷在大型集群環境中是不可忽略的。 為了克服這些問題,他們採用的方法包括:調節通信的數據大小(Adjusting data size of communication),即研究人員收集了各層的梯度,然後將 allreduce 的數據大小調整為幾兆位元組;最佳的通信調度(Optimal scheduling of communications)即預先以統計的方式將所有層分為好幾組。一旦每個進程完成一組中所有層的反向處理,就計劃開始 allreduce 操作。

最後,訓練準確度以及驗證準確度結果如下

志願者介紹

點「在看」的人都變好看了哦


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 大數據文摘 的精彩文章:

TAG:大數據文摘 |