模型參數太多怎么辦?用谷歌高效訓練庫GPipe啊
不用調整超參數,就能用更多加速核心來訓練更大的模型,提升性能。
曉查 發自 凹非寺
量子位 報道 | 公眾號 QbitAI
BigGan、BERT和GPT-2的出現表明,越大的神經網絡模型可以帶來越好的性能。其中能寫出各種假新聞的GPT-2參數就有15億個之多。
如果你也在訓練一個參數超多的模型,那么現在有個好消息要告訴你。
谷歌在最近公布的Lingvo框架下開源了GPipe。它讓研究人員不用調整超參數,就能用更多加速核心來訓練更大的模型和提升性能。
GPipe適用于多個連續層組成的任何DNN,而且訓練模型的大小與分區數成正比。
參數越多,效果越好
在計算機視覺圖像分類任務上,模型大小和分類準確性之間存在很強的相關性。
△不同圖像分類模型在ImageNet上的表現,顯示出準確度和參數數量的強相關性
從2014年到2017年,ImageNet視覺識別的冠軍的準確度從74.8%提升到了82.7%,模型參數增加了36倍。
而在這三年間,GPU顯存僅僅增加了3倍,因此迫切需要一種高效的神經網絡訓練庫來解決參數太多的問題。
核心越多,參數越多
GPipe就可以減少參數模型對內存的占用。
谷歌研究人員在8核心64GB內存的云TPUv2進行測試。如果沒有GPipe,由于內存的限制,每個加速核心只能訓練8200萬個參數。
使用GPipe后,活動內存從6.26 GB降低到3.46GB,可以在單個加速核心上訓練3.18億個參數,接近原來的4倍。
通過GPipe,AmoebaNet能夠在云TPUv2上加入18億個參數,比沒有GPipe的情況下多25倍。
△?谷歌將AmoebaNet-D模型分配到四倍數量的加速核心上,實現了3.5倍的加速
GPipe不僅僅速度更快,在訓練模型的質量上也有提高。
為了驗證這一點,谷歌訓練了另一種圖像分類算法AmoebaNet-B,它總共有5.57億個模型參數。
該算法在一些常用的數據集上表現很好,將single-crop ImageNet精度提高到了84.3%,在CIFAR-10上的精度為99%,在CIFAR-100上的精度為91.3%。
GPipe為何能實現高效
原則上我們可以通過并行計算在GPU或者TPU上訓練更大的DNN模型。但是由于DNN的順序性,這種方法可能導致在計算期間只有一個加速器處于活動狀態,不能充分利用設備的計算能力。
谷歌在GPipe使用了兩種AI訓練技術:一種是同步隨機梯度下降,另一種是并行pipeline,將上一步的輸出作為流傳輸到下一步。
Gpipe將模型劃分到不同的加速核心,并自動將mini-batch的訓練樣本分成更小的micro-batch,并在pipeline中運行,使TPU核心能夠并行操作。
此外,梯度一直在micro-batch中累積,因此分區數量不會影響模型質量。
以上都是在云TPUv2上的結果,實際上GPipe在云TPUv3上有更好的性能,每個TPUv3都有16個加速器核心和256 GB(每個加速器16 GB)。用GPipe訓練80億參數的Transformer模型時,能實現11倍的加速。
開源地址:
https://github.com/tensorflow/lingvo/blob/master/lingvo/core/gpipe.py
—?完?—
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復“招聘”兩個字。
量子位?QbitAI · 頭條號簽約作者
?’?’ ? 追蹤AI技術和產品新動態
- 性能超越何愷明Mask R-CNN!華科碩士生開源圖像分割新方法2019-03-05
- 學霸筆記!吳恩達新書《機器學習訓練秘籍》六大要點總結2019-03-05
- 微信AI拿下NLP競賽全球冠軍,“二孩”智言團隊的實習生立功了2019-03-01
- 蔚來2018年平均每天虧掉2641萬,車輛交付預期環比腰斬2019-03-06



