模型參數(shù)太多怎么辦?用谷歌高效訓(xùn)練庫GPipe啊
不用調(diào)整超參數(shù),就能用更多加速核心來訓(xùn)練更大的模型,提升性能。
曉查 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
BigGan、BERT和GPT-2的出現(xiàn)表明,越大的神經(jīng)網(wǎng)絡(luò)模型可以帶來越好的性能。其中能寫出各種假新聞的GPT-2參數(shù)就有15億個(gè)之多。
如果你也在訓(xùn)練一個(gè)參數(shù)超多的模型,那么現(xiàn)在有個(gè)好消息要告訴你。
谷歌在最近公布的Lingvo框架下開源了GPipe。它讓研究人員不用調(diào)整超參數(shù),就能用更多加速核心來訓(xùn)練更大的模型和提升性能。
GPipe適用于多個(gè)連續(xù)層組成的任何DNN,而且訓(xùn)練模型的大小與分區(qū)數(shù)成正比。
參數(shù)越多,效果越好
在計(jì)算機(jī)視覺圖像分類任務(wù)上,模型大小和分類準(zhǔn)確性之間存在很強(qiáng)的相關(guān)性。
△不同圖像分類模型在ImageNet上的表現(xiàn),顯示出準(zhǔn)確度和參數(shù)數(shù)量的強(qiáng)相關(guān)性
從2014年到2017年,ImageNet視覺識(shí)別的冠軍的準(zhǔn)確度從74.8%提升到了82.7%,模型參數(shù)增加了36倍。
而在這三年間,GPU顯存僅僅增加了3倍,因此迫切需要一種高效的神經(jīng)網(wǎng)絡(luò)訓(xùn)練庫來解決參數(shù)太多的問題。
核心越多,參數(shù)越多
GPipe就可以減少參數(shù)模型對(duì)內(nèi)存的占用。
谷歌研究人員在8核心64GB內(nèi)存的云TPUv2進(jìn)行測(cè)試。如果沒有GPipe,由于內(nèi)存的限制,每個(gè)加速核心只能訓(xùn)練8200萬個(gè)參數(shù)。
使用GPipe后,活動(dòng)內(nèi)存從6.26 GB降低到3.46GB,可以在單個(gè)加速核心上訓(xùn)練3.18億個(gè)參數(shù),接近原來的4倍。
通過GPipe,AmoebaNet能夠在云TPUv2上加入18億個(gè)參數(shù),比沒有GPipe的情況下多25倍。
△?谷歌將AmoebaNet-D模型分配到四倍數(shù)量的加速核心上,實(shí)現(xiàn)了3.5倍的加速
GPipe不僅僅速度更快,在訓(xùn)練模型的質(zhì)量上也有提高。
為了驗(yàn)證這一點(diǎn),谷歌訓(xùn)練了另一種圖像分類算法AmoebaNet-B,它總共有5.57億個(gè)模型參數(shù)。
該算法在一些常用的數(shù)據(jù)集上表現(xiàn)很好,將single-crop ImageNet精度提高到了84.3%,在CIFAR-10上的精度為99%,在CIFAR-100上的精度為91.3%。
GPipe為何能實(shí)現(xiàn)高效
原則上我們可以通過并行計(jì)算在GPU或者TPU上訓(xùn)練更大的DNN模型。但是由于DNN的順序性,這種方法可能導(dǎo)致在計(jì)算期間只有一個(gè)加速器處于活動(dòng)狀態(tài),不能充分利用設(shè)備的計(jì)算能力。
谷歌在GPipe使用了兩種AI訓(xùn)練技術(shù):一種是同步隨機(jī)梯度下降,另一種是并行pipeline,將上一步的輸出作為流傳輸?shù)较乱徊健?/p>
Gpipe將模型劃分到不同的加速核心,并自動(dòng)將mini-batch的訓(xùn)練樣本分成更小的micro-batch,并在pipeline中運(yùn)行,使TPU核心能夠并行操作。
此外,梯度一直在micro-batch中累積,因此分區(qū)數(shù)量不會(huì)影響模型質(zhì)量。
以上都是在云TPUv2上的結(jié)果,實(shí)際上GPipe在云TPUv3上有更好的性能,每個(gè)TPUv3都有16個(gè)加速器核心和256 GB(每個(gè)加速器16 GB)。用GPipe訓(xùn)練80億參數(shù)的Transformer模型時(shí),能實(shí)現(xiàn)11倍的加速。
開源地址:
https://github.com/tensorflow/lingvo/blob/master/lingvo/core/gpipe.py
—?完?—
誠摯招聘
量子位正在招募編輯/記者,工作地點(diǎn)在北京中關(guān)村。期待有才氣、有熱情的同學(xué)加入我們!相關(guān)細(xì)節(jié),請(qǐng)?jiān)诹孔游还娞?hào)(QbitAI)對(duì)話界面,回復(fù)“招聘”兩個(gè)字。
量子位?QbitAI · 頭條號(hào)簽約作者
?’?’ ? 追蹤AI技術(shù)和產(chǎn)品新動(dòng)態(tài)



