224秒!ImageNet上訓練ResNet-50最佳戰績出爐,索尼下血本破紀錄

夏乙 岳排槐 發自 亞龍灣

量子位 出品 | 公眾號 QbitAI

索尼大法好。

索尼自己說。

剛剛,索尼在arXiv上發文宣布:他們用224秒在ImageNet上完成了ResNet-50訓練,沒有明顯的準確率損失。

而且訓練誤差曲線與參考曲線非常相似。最大的mini-batch size可以增大到119K而沒有明顯的準確率損失,不過進一步增大到136K時準確率會降低約0.5%。

這是索尼給出的對比。

△ 在ImageNet/ResNet-50上的訓練時間和top-1 1-crop驗證準確率對比。

從這個表格可以看出,斜刺里殺出的索尼,堪稱完勝。比騰訊今年6月創造的成績還要好。比前幾年的成績,更是多個數量級的進步。

關於上表中騰訊的成績,有些同學可能會有疑問:不是4分鐘嗎?

情況是這樣的,騰訊今年6月的「4分鐘訓練ImageNet」,指的是AlexNet網路;而上面列出的,是訓練ResNet-50網路需要的時間和達到的準確率。

插播一個花絮,上表中騰訊公司的Xianyan Jia,現在已經供職於阿里巴巴了……

當然,索尼也是下了血本。為了達到這個成績,動用了更多的GPU。不過索尼自己也說,他們的方法也能更有效的利用大規模GPU。

在訓練速度和GPU規模效率上,索尼把自己的方法與單節點(4個GPU)進行了對比。下面這個表格顯示了當mini-batch size設置為32時,不同GPU數量的效率。

△ 在ImageNet/ResNet-50上訓練的GPU規模效率

如上表所示,當索尼使用1088個GPU時,規模效率超過90%。騰訊之前的工作中,使用1024個Tesla P40,GPU的規模效率為87.9%。

索尼表示,他們的互聯方案能基於更快(Tesla V100)和更多的GPU,實現更高的GPU規模效率。

兩件裝備

更快的訓練速度,更高的GPU規模化效率來自兩件加速裝備:

一是針對大批次(batch)訓練不穩定問題的批次大小控制,二是2D-Torus all-reduce,降低了梯度同步的通信開銷。

它們所解決的,正是困擾大規模分散式深度學習訓練的兩個問題。

所謂批次大小控制,是指在訓練過程中逐漸提升批次的整體大小。每當訓練的損失圖變「平」,就提大批次,這樣有助於避開局部最小值。

在這個224秒訓練完ImageNet的方案中,批次大小超過32k時,索尼五人組用這種方法來防止準確率的下降。

2D-Torus All-reduce,是一種「高效的」通信拓撲結構。不像之前的Ring All-redice等演算法,就算有上千個GPU,2D-Torus all-reduce也能完全利用它們的帶寬。

2D-Torus拓撲結構如上圖所示。這種結構下,簇里的GPU排列在2D網格中,all-reduce由3步組成:1) 水平進行的reduce-scatter、2) 垂直進行的all-reduce、水平進行的all-gather。

上面提到的兩件加速裝備,都是用索尼自家神經網路庫Neural Network Libraries(NNL)實現的,這個庫還有個可能稍微更為人所熟知一點的名字:nnabla

在nnabla這個名字里,nn代表神經網路(neural network)的縮寫,而nabla代表梯度的數學符號?。

2017年6月,索尼在GitHub上開源了這個庫,repo名叫nnabla。它在GitHub上一直在活躍更新,現在有2000多星,226次fork。

nnabla基本用C++11寫成,讓用戶能直觀地用少量代碼定義計算圖,帶有CUDA擴展,能添加新函數,支持動態計算圖,可以在Linux和Window上運行。

地址在這裡:github.com/sony/nnabla

最後,附上這篇224秒訓練ImageNet/ResNet-50:

ImageNet/ResNet-50 Training in 224 Seconds

https://arxiv.org/abs/1811.05233?

arxiv.org

歡迎大家關注我們的專欄:量子位 - 知乎專欄

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!

相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。

量子位 QbitAI· 頭條號簽約作者

?? ? 追蹤AI技術和產品新動態

推薦閱讀:

TAG:深度學習(DeepLearning) | 索尼(Sony) | 分散式計算 |