作者:nghuyong
在大模型的研發(fā)中,通常會有下面一些需求:
1.計劃訓練一個10B的模型,想知道至少需要多大的數(shù)據(jù)?
2.收集到了1T的數(shù)據(jù),想知道能訓練一個多大的模型?
3.老板準備1個月后開發(fā)布會,給的資源是100張A100,應(yīng)該用多少數(shù)據(jù)訓多大的模型效果最好?
4.老板對現(xiàn)在10B的模型不滿意,想知道擴大到100B模型的效果能提升到多少?
以上這些問題都可以基于Scaling Law的理論進行回答。本文是閱讀了一系列 Scaling Law的文章后的整理和思考,包括Scaling Law的概念和推導以及反Scaling Law的場景,不當之處,歡迎指正。
核心結(jié)論
大模型的Scaling Law是OpenAI在2020年提出的概念[1],具體如下:
對于Decoder-only的模型,計算量(Flops), 模型參數(shù)量, 數(shù)據(jù)大小(token數(shù)),三者滿足:。(推導見本文最后)
模型的最終性能主要與計算量,模型參數(shù)量和數(shù)據(jù)大小三者相關(guān),而與模型的具體結(jié)構(gòu)(層數(shù)/深度/寬度)基本無關(guān)。
固定模型的總參數(shù)量,調(diào)整層數(shù)/深度/寬度,不同模型的性能差距很小,大部分在2%以內(nèi)
3.對于計算量,模型參數(shù)量和數(shù)據(jù)大小,當不受其他兩個因素制約時,模型性能與每個因素都呈現(xiàn)冪律關(guān)系
4. 為了提升模型性能,模型參數(shù)量和數(shù)據(jù)大小需要同步放大,但模型和數(shù)據(jù)分別放大的比例還存在爭議。
5. Scaling Law不僅適用于語言模型,還適用于其他模態(tài)以及跨模態(tài)的任務(wù)[4]:
這里橫軸單位為PF-days: 如果每秒鐘可進行次運算,就是1 peta flops,那么一天的運算就是這個算力消耗被稱為1個petaflop/s-day。
核心公式
(?)=?∞+(?0?)?
第一項是指無法通過增加模型規(guī)模來減少的損失,可以認為是數(shù)據(jù)自身的熵(例如數(shù)據(jù)中的噪音)
第二項是指能通過增加計算量來減少的損失,可以認為是模型擬合的分布與實際分布之間的差。根據(jù)公式,增大(例如計算量),模型整體loss下降,模型性能提升;伴隨趨向于無窮大,模型能擬合數(shù)據(jù)的真實分布,讓第二項逼近0,整體趨向于
大模型中的scaling law
下圖是GPT4報告[5]中的Scaling Law曲線,計算量和模型性能滿足冪律關(guān)系
橫軸是歸一化之后的計算量,假設(shè)GPT4的計算量為1。基于10,000倍小的計算規(guī)模,就能預(yù)測最終GPT4的性能。
縱軸是"Bits for words", 這也是交叉熵的一個單位。在計算交叉熵時,如果使用以 2 為底的對數(shù),交叉熵的單位就是 "bits per word",與信息論中的比特(bit)概念相符。所以這個值越低,說明模型的性能越好。
Baichuan2
下圖是Baichuan2[6]技術(shù)報告中的Scaling Law曲線?;?0M到3B的模型在1T數(shù)據(jù)上訓練的性能,可預(yù)測出最后7B模型和13B模型在2.6T數(shù)據(jù)上的性能
MindLLM
下圖是MindLLM[7]技術(shù)報告中的Scaling Law曲線?;?0M到500M的模型在10B數(shù)據(jù)上訓練的性能,預(yù)測出最后3B模型在500B數(shù)據(jù)上的性能。
Scaling Law實操: 計算效率最優(yōu)
根據(jù)冪律定律,模型的參數(shù)固定,無限堆數(shù)據(jù)并不能無限提升模型的性能,模型最終性能會慢慢趨向一個固定的值
如圖所示,如果模型的參數(shù)量為(圖中紫色的線),在數(shù)量達到,模型基本收斂。所以在數(shù)據(jù)量達到后,繼續(xù)增加數(shù)據(jù)產(chǎn)生的計算量,沒有同樣計算量下提升模型參數(shù)量帶來的收益大(計算效率更優(yōu))。根據(jù),可以進一步轉(zhuǎn)換成模型參數(shù)與計算量的關(guān)系,即: 模型參數(shù)為,在計算量為Flops,即PF-days時基本收斂。也就是右圖中紫色線的拐點。
按照上面的思路,下面進行Scaling Law的實操。
首先準備充足的數(shù)據(jù)(例如1T),設(shè)計不同模型參數(shù)量的小模型(例如0.001B - 1B),獨立訓練每個模型,每個模型都訓練到基本收斂(假設(shè)數(shù)據(jù)量充足)。根據(jù)訓練中不同模型的參數(shù)和數(shù)據(jù)量的組合,收集計算量與模型性能的關(guān)系。然后可以進一步獲得計算效率最優(yōu)時,即同樣計算量下性能最好的模型規(guī)模和數(shù)據(jù)大小的組合,模型大小與計算量的關(guān)系,以及數(shù)據(jù)大小與計算量的關(guān)系。
如圖所示,根據(jù)左圖可以看到計算量與模型性能呈現(xiàn)冪律關(guān)系(可以認為數(shù)據(jù)和模型都不受限制),根據(jù)中圖和右圖,可以發(fā)現(xiàn),,即計算效率最優(yōu)時,模型的參數(shù)與計算量的冪次成線性關(guān)系,數(shù)據(jù)量的大小也與計算量的冪次成線性關(guān)系。
根據(jù),可以推算出,但是,分別是多少存在分歧。
OpenAI[1]認為模型規(guī)模更重要,即,而DeepMind在Chinchilla工作[2]和Google在PaLM工作[3]中都驗證了,即模型和數(shù)據(jù)同等重要。
所以假定計算量整體放大10倍,OpenAI認為模型參數(shù)更重要,模型應(yīng)放大100.73(5.32)倍,數(shù)據(jù)放大100.27(1.86)倍;后來DeepMind和Google認為模型參數(shù)量與數(shù)據(jù)同等重要,兩者都應(yīng)該分別放大100.5(3.16)倍。
例如在PaLM的實驗中,計算量從 放大10倍到, 模型參數(shù)也提升了3.2倍,3.35B->10.7B。具體最好在自己的數(shù)據(jù)上做實驗來獲得你場景下的和
LLaMA: 反Scaling Law的大模型
假設(shè)遵循計算效率最優(yōu)來研發(fā)LLM,那么根據(jù)Scaling Law,給定模型大小,可以推算出最優(yōu)的計算量,進一步根據(jù)最優(yōu)計算量就能推算出需要的token數(shù)量,然后訓練就行。
但是計算效率最優(yōu)這個觀點是針對訓練階段而言的,并不是推理階段,實際應(yīng)用中推理階段效率更實用。
Meta在LLaMA[8]的觀點是:給定模型的目標性能,并不需要用最優(yōu)的計算效率在最快時間訓練好模型,而應(yīng)該在更大規(guī)模的數(shù)據(jù)上,訓練一個相對更小模型,這樣的模型在推理階段的成本更低,盡管訓練階段的效率不是最優(yōu)的(同樣的算力其實能獲得更優(yōu)的模型,但是模型尺寸也會更大)。根據(jù)Scaling Law,10B模型只需要200B的數(shù)據(jù),但是作者發(fā)現(xiàn)7B的模型性能在1T的數(shù)據(jù)后還能繼續(xù)提升。
所以LLaMA工作的重點是訓練一系列語言模型,通過使用更多的數(shù)據(jù),讓模型在有限推理資源下有最佳的性能。
具體而言,確定模型尺寸后,Scaling Law給到的只是最優(yōu)的數(shù)據(jù)量,或者說是一個至少的數(shù)據(jù)量,實際在訓練中觀察在各個指標上的性能表現(xiàn),只要還在繼續(xù)增長,就可以持續(xù)增加訓練數(shù)據(jù)。
審核編輯:黃飛
-
GPT
+關(guān)注
關(guān)注
0文章
347瀏覽量
15246 -
OpenAI
+關(guān)注
關(guān)注
9文章
1014瀏覽量
6347 -
大模型
+關(guān)注
關(guān)注
2文章
2212瀏覽量
2233
原文標題:大模型中的Scaling Law計算方法
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論