大模型炼丹无从下手?谷歌、OpenAI烧了几百万刀,总结出这些方法论…
文 | Yimin_飯煲
都1202年了,不會(huì)真有深度學(xué)習(xí)煉丹俠還沒有訓(xùn)練/推理過大模型吧
“沒吃過豬肉,還沒見過豬跑嗎?”在深度學(xué)習(xí)算力高度增長(zhǎng)的今天,不論是學(xué)術(shù)界還是工業(yè)界的從業(yè)者,即使尚未達(dá)到從頭預(yù)訓(xùn)練一個(gè)百億級(jí)別參數(shù)模型的土豪程度,也必定嘗試過在自己的科研/工作中使用大模型。訓(xùn)練大模型已經(jīng)成為了刷排行榜SOTA、處理業(yè)務(wù)問題、提高工作受關(guān)注程度甚至是大廠“秀肌肉”的一個(gè)重要手段。如何高效地訓(xùn)練大模型,快速地推理大模型,方便地部署大模型也是產(chǎn)學(xué)研界所面臨的關(guān)鍵挑戰(zhàn)。
想刷SOTA想漲點(diǎn),沒有大模型,萬(wàn)萬(wàn)不行。可是,自己訓(xùn)練一個(gè)大模型,就一定能刷出SOTA和漲點(diǎn)么,那也未必?且不論數(shù)據(jù)質(zhì)量、工程實(shí)現(xiàn)難度這些一個(gè)比一個(gè)令人頭疼的問題,單單是大模型結(jié)構(gòu)和訓(xùn)練方法的設(shè)計(jì),就已經(jīng)讓人抓狂了。 作為一個(gè)訓(xùn)練大模型方面的小白,如果讓我訓(xùn)練一個(gè)大模型,我最關(guān)心的問題是:
為了解決我面對(duì)的問題,我需要訓(xùn)練一個(gè)多大的模型(十億/百億/千億)?這決定了需要多少算力資源,能否在盡可能節(jié)省資源的前提下完成任務(wù)。
我需要收集多少數(shù)據(jù)來(lái)“匹配”選擇的模型。如果我所需要處理的領(lǐng)域只能收集到幾十/幾百GB數(shù)據(jù),我應(yīng)該如何設(shè)置模型的參數(shù)量和訓(xùn)練方式?
在決定好模型的參數(shù)量之后,我應(yīng)該在模型的什么部分“堆料”?例如:我是應(yīng)該將模型的層數(shù)壘高,還是應(yīng)該將隱狀態(tài)的長(zhǎng)度加的更大,還是應(yīng)該將注意力頭個(gè)數(shù)目加多?在資源受限的情況下,我應(yīng)該更側(cè)重在什么部分增加參數(shù)?
在預(yù)訓(xùn)練語(yǔ)言模型、微調(diào)語(yǔ)言模型、跨域遷移語(yǔ)言模型這些常用的應(yīng)用大語(yǔ)言模型方式下,有沒有什么可以遵循的設(shè)計(jì)準(zhǔn)則?
幸運(yùn)地是,針對(duì)以上令小白無(wú)從下手的問題,訓(xùn)練大模型無(wú)數(shù)的工業(yè)界土豪Google/DeepMind/OpenAI熱心地為大家分享了自己的經(jīng)驗(yàn)。研究者們將研究模型大小、數(shù)據(jù)量、模型結(jié)構(gòu)等因素如何影響模型性能這一領(lǐng)域稱為深度學(xué)習(xí)的尺度定律,本文將為大家解析尺度定律這一領(lǐng)域的三篇經(jīng)典工作,分析了在預(yù)訓(xùn)練、微調(diào)和跨域遷移三個(gè)常見的應(yīng)用場(chǎng)景中的尺度定律,希望大家在讀完這篇推送后,能更好地設(shè)計(jì)和訓(xùn)練自己的大模型~
論文題目:
Scaling Laws for Neural Language Models
Scaling Laws for Transfer
Scaling Efficiently: Insights from Pre-training and Fine-tuning Transformers
預(yù)訓(xùn)練語(yǔ)言模型時(shí)的尺度定律
深度學(xué)習(xí)模型種類和任務(wù)五花八門,不妨從大模型數(shù)量最多、數(shù)據(jù)最充足、任務(wù)相對(duì)簡(jiǎn)單的預(yù)訓(xùn)練語(yǔ)言模型開始研究。OpenAI的工作 Scaling Laws for Neural Language Models 是尺度定律領(lǐng)域最早的研究。從預(yù)訓(xùn)練語(yǔ)言模型入手,想必也有OpenAI對(duì)GPT系列工作情有獨(dú)鐘的因素。這篇文章的主要結(jié)論是:
在預(yù)訓(xùn)練語(yǔ)言模型時(shí),模型的性能和模型的參數(shù)量明顯正相關(guān),而和模型的結(jié)構(gòu)關(guān)系較小(這對(duì)于其他類型的模型不一定成立)
模型的表現(xiàn)(以交叉熵loss衡量)與模型的參數(shù)量,數(shù)據(jù)集大小和訓(xùn)練計(jì)算開銷都有著明確的定量關(guān)系α α (不包含embedding層參數(shù)量)α ?α (token數(shù)目) , (PF-days)
當(dāng)數(shù)據(jù)集較小而模型較大時(shí)會(huì)出現(xiàn)過擬合現(xiàn)象,作者指出了為避免過擬合的經(jīng)驗(yàn)規(guī)律,也即當(dāng)我們將模型大小擴(kuò)大8倍時(shí)需要將數(shù)據(jù)集大小擴(kuò)大5倍。
大模型具有更好的樣本有效性,僅需要更少的優(yōu)化步驟,更少的訓(xùn)練數(shù)據(jù)就能達(dá)到與小模型相同的表現(xiàn)
在固定訓(xùn)練開銷的前提下,訓(xùn)練超大模型并且在收斂前停下能夠達(dá)到最優(yōu)的表現(xiàn)(而不是將小模型訓(xùn)練到收斂),由下圖可知,在訓(xùn)練開銷限制增加的過程中,最優(yōu)的訓(xùn)練配置是在模型大小上“堆料”,而不是增加Batch Size和訓(xùn)練步數(shù)。OpenAI的這一工作為隨后的尺度定律研究工作提供了基本的框架,在實(shí)驗(yàn)設(shè)計(jì)上有許多可取之處,限于推送篇幅無(wú)法為大家一一介紹,有興趣的小伙伴可以去看看原文哦!
微調(diào)語(yǔ)言模型時(shí)的尺度定律
OpenAI的工作告訴我們?cè)陬A(yù)訓(xùn)練語(yǔ)言模型時(shí),模型的參數(shù)量決定了模型的表現(xiàn),而模型結(jié)構(gòu)的影響很小。但是,OpenAI研究的因變量只有語(yǔ)言模型的交叉熵,而在實(shí)際應(yīng)用中,預(yù)訓(xùn)練語(yǔ)言模型更多地是為了在下游任務(wù)上進(jìn)行微調(diào)和應(yīng)用。Google和DeepMind的研究者們,進(jìn)一步探索了在微調(diào)語(yǔ)言模型時(shí)遵循的尺度定律,證明了模型的結(jié)構(gòu)對(duì)下游任務(wù)微調(diào)的影響很大,并且發(fā)現(xiàn)了現(xiàn)有的T5模型并不是最優(yōu)的結(jié)構(gòu)。作者們還壕無(wú)人性地發(fā)布了100個(gè)T5的Checkpoint! 這篇文章的主要發(fā)現(xiàn)是:
模型在預(yù)訓(xùn)練階段的表現(xiàn)基本僅依賴于模型的參數(shù)量,在微調(diào)階段時(shí)的表現(xiàn)和模型結(jié)構(gòu)關(guān)系很大。在預(yù)訓(xùn)練階段表現(xiàn)更好的模型(NL12-XXL), 在下游任務(wù)上的表現(xiàn)卻明顯低于NL32-XL。
在不同的計(jì)算開銷條件下(Small, Base, Large),所得到的最優(yōu)模型配置是不相同的。因此,在較小尺度下得到的最優(yōu)模型配置未必能在較大的尺度上也是最優(yōu)的
模型的層數(shù)(NL)對(duì)下游任務(wù)上表現(xiàn)的影響很大,而注意力頭的數(shù)目(NH)、前向傳播層(FF)的維度對(duì)下游任務(wù)上表現(xiàn)的影響相對(duì)較小。
作者提出了DeepNarrow策略,也就是在“堆料”時(shí)提高模型的層數(shù),而不需要將其他參數(shù)過于提高。按照此策略的模型相對(duì)于標(biāo)準(zhǔn)版的T5模型更加“瘦高”。從結(jié)果可以發(fā)現(xiàn),盡管參數(shù)量和FLOPs更小,DeepNarrow策略的模型表現(xiàn)要優(yōu)于T5標(biāo)準(zhǔn)模型(在Small,Base,Large,XL,XXL多個(gè)尺度上)
作者們?cè)贕LUE之外的多個(gè)和常識(shí)推理、自然語(yǔ)言生成任務(wù)有關(guān)的數(shù)據(jù)集上同樣驗(yàn)證了DeepNarrow策略的有效性。
跨域遷移學(xué)習(xí)時(shí)的尺度定律
跨域遷移學(xué)習(xí)是大模型另一個(gè)極其重要的應(yīng)用場(chǎng)景。例如,我想預(yù)訓(xùn)練一個(gè)Python數(shù)據(jù)上的大模型,然而Python數(shù)據(jù)的量畢竟是十分有限的。這時(shí),可以先利用大規(guī)模的文本數(shù)據(jù)訓(xùn)練一個(gè)大模型,再利用Python數(shù)據(jù)進(jìn)行遷移學(xué)習(xí),就能夠得到一個(gè)強(qiáng)大的Python語(yǔ)言模型。如下圖所示,如果先在文本上預(yù)訓(xùn)練一個(gè)模型,之后在Python數(shù)據(jù)集上進(jìn)行微調(diào),就能夠比從頭訓(xùn)練的Python模型取得更好的效果(小數(shù)據(jù)場(chǎng)景下)。固定測(cè)試誤差,定義從頭訓(xùn)練Python模型所需要的數(shù)據(jù)量為,從預(yù)訓(xùn)練好的文本模型遷移學(xué)習(xí)Python模型所需要的數(shù)據(jù)量為,就是從預(yù)訓(xùn)練文本模型遷移的“數(shù)據(jù)量”研究者們采取了三種方式進(jìn)行訓(xùn)練:直接在Python代碼上訓(xùn)練/在文本上預(yù)訓(xùn)練在Python代碼上微調(diào)/在文本和非Python的代碼上預(yù)訓(xùn)練在Python代碼上微調(diào)。通過大量地實(shí)驗(yàn)發(fā)現(xiàn)了尺度定律在遷移學(xué)習(xí)上的許多規(guī)律。
遵循和以及模型參數(shù)量的明確函數(shù)關(guān)系 , 其中,與預(yù)訓(xùn)練的語(yǔ)料分布無(wú)關(guān),衡量了參數(shù)量對(duì)模型表現(xiàn)的影響。和預(yù)訓(xùn)練的語(yǔ)料分布有關(guān),預(yù)訓(xùn)練和微調(diào)的語(yǔ)料分布越接近,越小。在文本到Python的遷移過程中。
當(dāng)下游的Python數(shù)據(jù)集較小時(shí),從文本預(yù)訓(xùn)練模型遷移而來(lái)的Python模型有著更好的表現(xiàn)。由于Python數(shù)據(jù)集較小,當(dāng)從頭訓(xùn)練的模型參數(shù)量進(jìn)一步擴(kuò)大時(shí)會(huì)受到過擬合的影響,使得表現(xiàn)難以進(jìn)一步提升,而預(yù)訓(xùn)練過的文本模型能夠隨著參數(shù)量的提高進(jìn)一步提升性能。
預(yù)訓(xùn)練模型在少數(shù)據(jù)場(chǎng)景下更加的計(jì)算高效,也即僅需要更少的計(jì)算資源進(jìn)行微調(diào)就能達(dá)到與從頭訓(xùn)練相同的效果。
在小數(shù)據(jù)遷移場(chǎng)景下,作者發(fā)現(xiàn)微調(diào)模型的損失可以和前文中預(yù)訓(xùn)練模型的公式放在統(tǒng)一的框架中,得到公式這個(gè)公式可以通過將替換為得到。
尺度定律對(duì)煉丹師有什么用
了解完干貨滿滿的尺度定律的三種應(yīng)用后,大家會(huì)發(fā)現(xiàn)尺度定律的研究大多基于充分的實(shí)證實(shí)驗(yàn)和數(shù)據(jù)分析,往往需要耗費(fèi)大量的算力資源,需要收集大量的數(shù)據(jù)以供實(shí)驗(yàn)。而作為學(xué)術(shù)界和工業(yè)界的普通煉丹師,也許無(wú)法獲得如此充足的資源來(lái)研究如何訓(xùn)練自己的大模型。這里,我想談?wù)勎覐倪@三篇“耗資巨大”的論文中學(xué)到的東西,順便來(lái)回答文章開頭提到的問題~
大模型的堆料思路:在設(shè)計(jì)大模型結(jié)構(gòu)時(shí),優(yōu)先考慮將模型的層數(shù)做深,再考慮增加注意力頭數(shù)、隱層尺寸等其他參數(shù)。
大模型的樣本有效性:在訓(xùn)練數(shù)據(jù)較少的情況下,并不一定要采取小模型進(jìn)行訓(xùn)練。可以采用大模型進(jìn)行訓(xùn)練,在收斂前停下,僅需較少的訓(xùn)練步驟就能達(dá)到很好的效果。這是由于大模型具有更好的樣本有效性。
大模型的遷移性:在目標(biāo)任務(wù)領(lǐng)域數(shù)據(jù)量較小時(shí),可以采用通用文本上預(yù)訓(xùn)練過的大模型進(jìn)行微調(diào),可能取得更優(yōu)的效果。
大模型對(duì)數(shù)據(jù)的要求:模型的表現(xiàn)同時(shí)和數(shù)據(jù)量與模型參數(shù)量相關(guān)。為了避免過擬合,在增大模型參數(shù)量的同時(shí)需要增大數(shù)據(jù)量,但要求的數(shù)據(jù)量增長(zhǎng)速度相對(duì)較慢。當(dāng)擴(kuò)大模型大小8倍時(shí)只需要擴(kuò)大數(shù)據(jù)量5倍。
大模型的架構(gòu)設(shè)計(jì):如果不確定應(yīng)該選取怎樣的大模型結(jié)構(gòu)和參數(shù)配置,可以參考Paper中已經(jīng)給出的一些優(yōu)秀的設(shè)計(jì)策略。
結(jié)語(yǔ)
尺度定律并非是在深度學(xué)習(xí)中提出的概念,而是物理學(xué)中的一個(gè)常用名詞。凡是可以用冪次關(guān)系表示的兩個(gè)或多個(gè)物理量都稱為滿足尺度定律。最早研究預(yù)訓(xùn)練語(yǔ)言模型的尺度定律論文 Scaling Laws for Neural Language Models 的第一作者Jared Kaplan是一位來(lái)自約翰霍普金斯大學(xué)的物理學(xué)教授,因此在這篇論文中可以看到很多類似于物理學(xué)中的唯象的研究思路。深度學(xué)習(xí)和物理學(xué)都需要對(duì)實(shí)驗(yàn)現(xiàn)象進(jìn)行觀察并總結(jié)出規(guī)律,也許深度學(xué)習(xí)也可以被看成一種新的“物理學(xué)”分支。希望將來(lái)能看到更多物理學(xué)家參與的深度學(xué)習(xí)工作,能給深度學(xué)習(xí)帶來(lái)更多的理論和實(shí)踐Insights~
后臺(tái)回復(fù)關(guān)鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺(tái)回復(fù)關(guān)鍵詞【頂會(huì)】
獲取ACL、CIKM等各大頂會(huì)論文集!
?
[1] Scaling Laws for Neural Language Models.https://arxiv.org/abs/2001.08361
[2] Scaling Laws for Transfer.https://arxiv.org/abs/2102.01293
[3] Scaling Efficiently: Insights from Pre-training and Fine-tuning.https://arxiv.org/abs/2109.10686
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的大模型炼丹无从下手?谷歌、OpenAI烧了几百万刀,总结出这些方法论…的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐几个NLP出论文的好方向!!
- 下一篇: AllenAI | 用GPT-3帮助增建