【11分鍾訓練完ImageNet】DNN訓練再破紀錄,1024 CPU Caffe開源
此前,伯克利、TACC和UC戴維斯的研究人員使用新算法,在24分鍾內訓練完AlexNet,1小時訓練完ResNet,創下了紀錄。現在,他們繼續推進,使用1024個CPU,在11分鍾內訓練完AlexNet,48分鍾訓練完ResNet-50。研究人員表示,源代碼不久後將在Intel Caffe發布。
先來看論文摘要:
自創建以來,ImageNet-1k基準測試集被用於確定各種深度神經網絡(DNN)模型分類的精度,作為基準發揮了重要的作用。近年來,它也成為評估不同的DNN訓練方法的主要標準。
使用單塊NVIDIA M40 GPU,在ImageNet-1k訓練ResNet-50(90-epoch)需要14天的時間。訓練總共需要10^18次單精度運算。另一方麵,目前世界上最快的超級計算機,每秒可以完成2*10^17次單精度運算。如果能夠充分利用超級計算機訓練DNN,我們應該能夠在5秒內訓練完ResNet-50(ImageNet-1k,90-epoch)。
為了彌補性能的差距,一些研究人員已經把工作重點放在探索如何有效利用大規模並行處理器訓練深度神經網絡上麵。大多數擴展ImageNet訓練的成功方法,都使用了同步隨機梯度下降(SGD)。但是,為了擴展同步SGD,必須增加每次迭代中使用的批量的大小。
因此,對許多研究人員而言,擴展DNN訓練,實際上就成了開發方法,確保在不降低精度的前提下,增加固定epoch數據並行同步SGD中的批量大小。
過去的兩年裏,我們已經看到批量大小以及成功使用的處理器數量,從1K批次/128個處理器,增加到8K批次/256個處理器。最近發表的LARS算法將一些DNN模型的批量進一步增加到了32K。繼這項工作之後,我們希望弄清LARS是否可以用來進一步擴大DNN訓練中有效使用的處理器的數量,從而進一步縮短訓練的總時間。
在本文中,我們介紹了這次調查的結果:使用LARS,我們能夠在11分鍾內有效利用1024個CPU訓練完AlexNe(ImageNet,100-epoch),並在48分鍾內訓練完ResNet-50(ImageNet,90-epoch),批量大小為32K。
此外,當我們將批量增加到20K以上時,我們的準確性遠遠高於Facebook同等批量大小的準確率。如果需要,可以聯係我們提供源代碼。代碼不久後將在Intel Caffe發布。
此前新智元報道過, Facebook的人工智能實驗室(FAIR)與應用機器學習團隊(AML)合作,提出了一種新的方法,大幅加速機器視覺任務的模型訓練,用1小時訓練完了ImageNet。
為了克服minibatch過大的問題,Facebook團隊使用了一個簡單的、可泛化的線性縮放規則調整學習率(learning rate)。為了成功應用這一規則,他們在訓練中增加了一個預熱階段(warm-up phase)——隨著時間的推移,逐漸提高學習率和批量大小,從而幫助保持較小的批次的準確性。在訓練開始時使用較低的學習率,克服了早期的優化困難。重要的是,這種方法不僅符合基線驗證誤差,還產生與了比較小的minibatch基準線匹配的訓練誤差曲線。
作者在論文中寫道,他們提出的這種簡單通用的技術,能夠將分布式同步 SDG minibatch 大小最多擴展到 8k 張圖像,同時保持 minibatch 訓練前 Top-1 位的錯誤率不變。
“對於所有大小的 minibath,我們將學習率設置為 minibatch 的線性函數,並對前幾個訓練時期(epoch)應用一個簡單的預熱(warm-up)。所有其他超參數保持固定。使用這種簡單的方法,我們的模型精度對於 minibatch 尺寸是不變的。這項技術使我們可以在線性拓展 minibatch 大小的情況下,以高達 90% 的 efficiency 減少訓練時間,在 1 小時內在 256 顆 GPU 上訓練出了精確的 ResNet-50 模型,minibatch 大小為 8k。”
快速訓練視覺模型應用意義重大,這項工作出來以後引發了一個小小的轟動——不僅僅是因為論文作者包括賈揚清和何愷明,更是因為使用了256顆GPU(32台英偉達DGX-1工作站),硬件價格高達410萬美元,令人咋舌。
但很快,Facebook 1 小時訓練完ImageNet的記錄就被刷新。伯克利、TACC和UC戴維斯的研究人員使用新的算法,報告稱在24分鍾內訓練完了ImageNet(AlexNet,100-epoch)。
伯克利、TACC和UC戴維斯的研究人員報告稱在24分鍾內訓練完了ImageNet。
他們將批量大小擴展到32k,使用英特爾KNL,硬件費用120萬美元
同時,研究人員表示,他們僅使用了120萬美元的硬件,相比Facebook的410萬美元便宜了3倍多。
雖然相比Facebook確實節省了不少,但120萬美元的硬件設施還是引來不少吐槽。
正如上文介紹,Facebook的Goyal等人提出了預熱策略來應對大批量難以優化的問題。然而,伯克利、TACC和UC戴維斯的研究團隊發現,預熱策略也有局限。當設置AlexNet的批量大於1024或ResNet-50的批量大小大於8192時,測試精度將顯著降低。
於是,他們提出了一種新的算法,LARS(Layer-wise Adaptive Rate Scaling,層自適應率縮放)。這實際上是一種新的更新學習率的規則。在訓練時,每個層都有自己的權重和梯度,標準SGD算法對所有層使用相同的學習率,但伯克利、TACC、UC戴維斯的研究人員在實驗中觀察到,不同的層可能需要不用的學習率,這也是算法“層自適應率縮放”名稱的由來。
LARS算法使他們在不損失精度的條件下,將批量大小擴展到32k。實驗結果證明,LARS可以幫助ResNet-50保持高的測試精度。作者在論文中寫道,“我們的ResNet-50基線的準確性略低於最先進的結果(73%對76%),因為我們沒有使用數據增強。對於沒有數據增強的版本,我們可以得到最先進的精度(90-epoch,73%)”。
在論文最後,作者指出,我們不隸屬於英特爾或NVIDIA,我們對GPU或KNL也沒有任何偏好,我們隻想表明可以用更少的預算(便宜3.4倍)實現相同的效果。
繼這項工作之後,很自然地,伯克利、TACC和UC戴維斯的這些研究人員希望弄清,LARS算法是否可以用來進一步擴大DNN訓練中有效使用的處理器的數量,從而進一步縮短訓練的總時間。
於是這一次,他們使用CPU(總共1024個Intel Skylake),11分鍾訓練完AlexNet(ImageNet,100-epoch),48分鍾訓練完ResNet-50(ImageNet,90-epoch)。512個KNL的結果,24分鍾訓練完AlexNet,60分鍾訓練完ResNet-50。
在報告中,研究人員表示,他們采用模型並行,使用LARS算法(You,Gitman和Ginsburg,2017)和預熱方案(Goyal等,2017)來擴大批量大小。使用這兩種方法,批量大的同步SDG可以達到與基準相同的精度。
為了擴展到AlexNet模型的批量(例如擴大到32k),他們將LRN改變為批量規範化(BN,batch normalization),在每個卷積層之後添加BN。
下圖是批量大小=32K的結果,將AlexNet模型中的LRN改變為RN。11分鍾完成。精度與基準相當。
下圖則是訓練ResNet-50的結果,使用了數據增強,方法與Facebook(He等,2016年)一樣。48分鍾完成。精度與基準相當。
對於深度學習應用,更大的數據集和更大的模型會讓準確性有顯著提高,但這樣做的代價是需要花費更長的訓練時間。 而諸如計算金融,自動駕駛,石油和天然氣勘探和醫學成像等許多應用,幾乎肯定需要數十億規模的訓練元素和TB級的訓練數據集。
因此,加速深度神經網絡訓練是非常有意義的研究課題。而在保持訓練和泛化精度的同時,擴大批量大小,加速DNN訓練,對分布式學習尤其有意義。再加上代碼即將開源,其他研究人員和開發者也可以根據論文中列出的技術,享受類似的增益。
就像伯克利、TACC和UC戴維斯的研究人員在他們摘要中寫的一樣,目前世界上最快的超級計算機可以完成每秒2*10^17次單精度運算。如果能夠充分利用超級計算機訓練DNN,我們應該能夠在5秒內訓練完ResNet-50(ImageNet-1k,90-epoch)。
5秒內訓練完ImageNet!
期待那一天的到來。
相關論文
- [1] ImageNet Training by CPU: AlexNet in 11 Minutes and ResNet-50 in 48 Minutes https://arxiv.org/pdf/1709.05011v4.pdf
- [2] Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour https://arxiv.org/pdf/1706.02677.pdf
- [3] ImageNet Training in 24 Minutes https://www.researchgate.net/publication/319875600_ImageNet_Training_in_24_Minutes
本文作者:聞菲
本文來自雲棲社區合作夥伴新智元,了解相關信息可以關注“AI_era”微信公眾號
原文鏈接:【11分鍾訓練完ImageNet】DNN訓練再破紀錄,1024 CPU Caffe開源
最後更新:2017-11-06 11:03:50