索尼大法好。git
索尼本身說。github
剛剛,索尼在arXiv上發文宣佈:他們用224秒在ImageNet上完成了ResNet-50訓練,沒有明顯的準確率損失。算法
並且訓練偏差曲線與參考曲線很是類似。最大的mini-batch size能夠增大到119K而沒有明顯的準確率損失,不過進一步增大到136K時準確率會下降約0.5%。網絡
這是索尼給出的對比。機器學習
從這個表格能夠看出,斜刺裏殺出的索尼,堪稱完勝。比騰訊今年6月創造的成績還要好。比前幾年的成績,更是多個數量級的進步。分佈式
關於上表中騰訊的成績,有些同窗可能會有疑問:不是4分鐘嗎?函數
狀況是這樣的,騰訊今年6月的「4分鐘訓練ImageNet」,指的是AlexNet網絡;而上面列出的,是訓練ResNet-50網絡須要的時間和達到的準確率。學習
插播一個花絮,上表中騰訊公司的Xianyan Jia,如今已經供職於阿里巴巴了……spa
固然,索尼也是下了血本。爲了達到這個成績,動用了更多的GPU。不過索尼本身也說,他們的方法也能更有效的利用大規模GPU。ci
在訓練速度和GPU規模效率上,索尼把本身的方法與單節點(4個GPU)進行了對比。下面這個表格顯示了當mini-batch size設置爲32時,不一樣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上運行。
地址在這裏:https://github.com/sony/nnabla
最後,附上這篇224秒訓練ImageNet/ResNet-50:
ImageNet/ResNet-50 Training in 224 Seconds
https://arxiv.org/abs/1811.05233
— 完 —
年度評選申請
加入社羣
量子位AI社羣開始招募啦,歡迎對AI感興趣的同窗,在量子位公衆號(QbitAI)對話界面回覆關鍵字「交流羣」,獲取入羣方式;
此外,量子位專業細分羣(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。
進專業羣請在量子位公衆號(QbitAI)對話界面回覆關鍵字「專業羣」,獲取入羣方式。(專業羣審覈較嚴,敬請諒解)
誠摯招聘
量子位正在招募編輯/記者,工做地點在北京中關村。期待有才氣、有熱情的同窗加入咱們!相關細節,請在量子位公衆號(QbitAI)對話界面,回覆「招聘」兩個字。
量子位 QbitAI · 頭條號簽約做者
վ'ᴗ' ի 追蹤AI技術和產品新動態