2020年,OpenAI提出了在增加模型尺寸與提高模型性能之間的擴展定律,指出人們應該將大部分預算用于擴大模型規(guī)模。這篇論文直接推動了增大模型規(guī)模的浪潮。然而,在預算和內(nèi)存有限的情況下,盲目擴大模型規(guī)模并不是提升模型性能的最佳選擇。 ?
(資料圖片)
2022年,DeepMind團隊發(fā)表了一篇論文(https://arxiv.org/pdf/2203.15556.pdf),文中對比了模型大小和訓練數(shù)據(jù),最終結(jié)論是:多數(shù)語言模型明顯訓練不足。也就是說,在不增加模型大小的情況下,在更大的數(shù)據(jù)集上訓練模型將受益匪淺。文中,DeepMind團隊訓練了一個相對較小的LLM,名為Chinchilla,這個模型只有700億個參數(shù),但卻有1.4萬億個訓練token。經(jīng)過訓練,Chinchilla模型的性能超越了諸如GPT-3、Gopher、Jurassic-1和MT-NLG等更大的語言模型,這些語言模型的參數(shù)都在1750億-5300億之間,但訓練token卻在2700億-3000億之間。
更小的模型參數(shù)意味著更低的推理成本和更小的內(nèi)存占用,實際上,對于大部分用例來說,小型語言模型的性價比更高。本文就從數(shù)學角度推算了為何在更多token上訓練更小的LLM是更優(yōu)選擇。(以下內(nèi)容在遵循CC BY-NC-SA 4.0協(xié)議的基礎(chǔ)上由OneFlow編譯發(fā)布,譯文轉(zhuǎn)載請聯(lián)系OneFlow獲得授權(quán)。原文:https://www.harmdevries.com/post/model-size-vs-compute-overhead/)作者|Harm de Vries
OneFlow編譯
翻譯|楊婷、徐佳渝
當我們使用大型計算集群來訓練大型語言模型(LLM),通常需要考慮計算(資源)預算的分配問題。具體來說,就是考慮如何確定模型參數(shù)的數(shù)量N及訓練token數(shù)量D。
我們可以利用擴展定律(scaling laws)來獲得相關(guān)指導,既可以在給定的計算(資源)預算C的條件下,如何把C分配給參數(shù)數(shù)量和訓練token數(shù)量從而使模型達到最佳性能;也可以在給定模型性能的條件下,平衡參數(shù)數(shù)據(jù)量N和訓練token數(shù)量D,從而使得計算預算C最小,我們可以把計算預算C最小的LLM稱為計算量最優(yōu)的LMM。
然而,對大多數(shù)用例而言,我們不一定要去訓練計算量最優(yōu)的LLM,而應投入一定的額外計算(資源)來訓練一個同等性能但更小的模型。小型模型的推理速度更快同時推理價格也更低,對GPU資源有限的開發(fā)人員和研究人員來說運行也更容易。
盡管許多LLM從業(yè)者訓練模型的token數(shù)量比Chinchilla擴展定律(譯者注:Hoffmann等人(2022)重新審視了Kaplan等人的擴展定律。表明用較小的模型對更多數(shù)據(jù)進行訓練可能更有效,從而產(chǎn)生了參數(shù)效率提高的70B參數(shù)模型Chinchilla)建議的token數(shù)量多得多,但不是所有人員都清楚擴展定律為何對模型訓練有幫助,它能讓我們確定可以訓練出多小的模型以及需要多少額外的計算(資源)。本篇博客將概述如何推導模型大小與計算(資源)額外開銷之間的權(quán)衡(trade-off)關(guān)系,同時揭示了有辦法在最小化額外開銷的條件下可以大大縮減計算量最優(yōu)模型的大小。然而,如果模型大小的縮減超出一定閾值,即使增加計算資源,也無法維持特定的模型性能,我們可以把這個模型的閾值稱之為臨界模型大?。╟ritical model size)。 我的分析表明,臨界模型大小大約降低到計算量最優(yōu)模型大小的30%,而只增加了100%的額外計算開銷。值得注意的是,近來的模型尚未達到這一點,例如訓練了1T個token的LLaMa-7B模型,這表明訓練“更小”的LLM仍有充足的空間,但需要延長訓練時間。
1
回顧Chinchilla擴展定律
根據(jù)Chinchilla評估擴展定律的第三種方法,作者認為損失可以建模為參數(shù)數(shù)量和訓練所用token數(shù)量的函數(shù):
實驗中,作者通過一系列不同的模型大小、訓練token擬合了參數(shù),并得出以下參數(shù)估值:
在計算(資源)預算的限制C=6ND下優(yōu)化損失函數(shù)L,可以證明計算最優(yōu)參數(shù)數(shù)量及計算最優(yōu)token數(shù)量的遵循冪律為:
2
模型大小與計算(資源)額外開銷
假設(shè)將最優(yōu)模型大小縮小一半,需要增加多少訓練token才能獲得相同的性能?如果目標是保持相同的計算(資源)預算,顯然必須增加一倍的訓練token數(shù)量才行,不過為了保持相同的模型性能,我們可以預期會增加一定的計算(資源)額外開銷,也就是需要延長訓練時間。
現(xiàn)在,讓我們回到Chinchilla的參數(shù)損失函數(shù),再來回答這個問題。我們希望尋求一種方法,將參數(shù)按擴展,訓練token按擴展,同時使損失達到不變。準確來說,我們希望滿足以下方程式:
通過幾個數(shù)學步驟,你會發(fā)現(xiàn):
一旦確定了數(shù)據(jù)擴展因子,我們就能確定新的計算(資源)預算?
以及計算(資源)額外開銷
有意思的是,如圖所示,數(shù)據(jù)擴展因子與計算預算C并無關(guān)聯(lián)。因此,可以得出這一結(jié)論:模型大小與計算額外開銷之間的權(quán)衡規(guī)律在所有計算預算下都一樣。
注意:原始擴展定律論文中的圖12與該圖表類似。
3
臨界模型大小
如圖所示,存在相當大的區(qū)間,在此范圍內(nèi)可以大大縮小最優(yōu)模型大小,而幾乎不怎么增加額外計算(資源)開銷。訓練一個相當于最優(yōu)大小75%的模型,需增加的計算額外開銷僅為2.8%,而訓練最優(yōu)模型大小一半大小的模型,額外開銷則增加至20%。轉(zhuǎn)向更小的模型,我們觀察到這樣一種漸近趨勢:當時,額外計算開銷會迅速增至188%。
如何確定我們在這條曲線上所處的位置取決于運行推理的頻次。若從不運行推理,則應選擇Chinchilla擴展規(guī)律來決定。若偶爾運行推理,則應選擇稍小的模型。極限情況下(運行推理無限次),應選擇盡可能最小的模型(即不考慮額外增加的計算開銷)。
然而,在實踐中,縮小模型的大小存在一個極限,該極限被稱為臨界模型大?。╟ritical model size)。臨界模型大小是指達到一定損失程度(loss level)所需的最小模型容量,幾乎不可能在此基礎(chǔ)上進一步縮小模型了。
據(jù)我分析,臨界模型大小約為Chinchilla最優(yōu)模型大小的30%,但這會增加100%的計算額外開銷。請注意,臨界模型大小并非一個硬性閾值,而應理解成一個收益遞減的區(qū)域。如果我們不需要最小模型,就可以保守一點,選擇占最優(yōu)計算模型大小40-60%之間的模型,因為這樣只會增加10-42%的計算額外開銷。
4
LLaMA-7B和SantaCoder
最近有一些新模型(例如LLaMA-7B和SantaCoder),其訓練時間比Chinchilla擴展定律建議的時間更長。那么換取更小模型所使用的計算資源是多少呢?
以LLaMA-7B為例:
該模型具有6.9B個參數(shù)和1000B個訓練token,總計算資源預算為4.14e22 FLOP。
根據(jù)這一計算資源預算,最優(yōu)計算模型的參數(shù)約為12.52B個,并在550B個token上進行訓練。
我們可以查看哪個擴展因子取多大值與LLaMA-7B的參數(shù)和訓練token數(shù)量更為“接近”。我們發(fā)現(xiàn),在=0.57的情況下,可以得到一個具有7.13B個參數(shù)和1088B個訓練token的合理配置。
額外計算資源開銷大約為12%。
再看SantaCoder:
該模型具有1.1B個參數(shù)和236B個訓練token,總計算資源預算為1.56e21 FLOP。
根據(jù)計算資源預算,最優(yōu)模型的參數(shù)約為2.79B個,并在93B個token上進行訓練。
對于SantaCoder來說,要找到一個好的配置可能比較困難,但如果K=0.46,我們就可以在258B個token上訓練參數(shù)為1.29B的模型。
額外計算資源開銷約為24%。
相比LLaMA-7B,SantaCoder進一步減少了模型大小,根據(jù)Chinchilla擴展定律,這些模型可以進一步權(quán)衡計算,以獲得更小的模型。
5
不同的訓練token
為了更好地了解哪些模型大小和訓練 token 數(shù)量處于模型大小與計算權(quán)衡的合理范圍內(nèi),我對Chinchilla論文中的A3表格作了更新,其中預測了=0.5和=0.3的情況。我只報告了第三種估計Chinchilla計算最優(yōu)模型的方法,這種方法可以預測出最小的模型大小和最大的訓練token數(shù)量。
當 =0.5 時,建議在1萬億個token上訓練參數(shù)為5B的模型,在10萬億個token上訓練參數(shù)為34B的模型。
當 =0.3 時,建議在2.8萬億個token上訓練參數(shù)為3B的模型,在28.4萬億個token上訓練參數(shù)為21B的模型。
作者可能已經(jīng)將論文中的 ?和 參數(shù)做了四舍五入。因此,我對這兩個參數(shù)的值做了少許修改, 讓=0.036 、 =0.283 ,以更好地適應表A3的擴展定律預測。其余參數(shù)保持不變A=406.4,B=410.7,E=1.62。
需要注意的是,Chinchilla系數(shù)取決于數(shù)據(jù)集,而我們不知道該數(shù)據(jù)集是什么。因此,結(jié)果可能會因為使用不同的訓練數(shù)據(jù)而有所變化。
6
不足
1. Chinchilla擴展定律準確嗎?它們對參數(shù)估計的微小變化(https://twitter.com/suchenzang/status/1616752482226671620)非常敏感,但沒有考慮小模型長時間訓練的情況。
2. 即使較小的模型達到相同的困惑度(perplexity),也無法確定它們是否具有相同的模型能力(例如Zero-shot prompt性能)。
3. 長時間訓練較小的模型可能難以有效利用HPC集群上的有效并行化能力。
7
結(jié)論
根據(jù)Chinchilla擴展定律,我們還沒有達到在更多token上訓練更小模型的極限。鑒于開源人工智能社區(qū)的驚人創(chuàng)新速度,我預計功能強大的小型語言模型將很快出現(xiàn)!
附錄
雖然數(shù)據(jù)擴展因子 以計算最優(yōu)參數(shù) 和訓練token 表示,在本部分,我將展示解決方案,該解決方案對計算預算C來說是固定不變的。首先
放大取決于計算預算C的部分:
將、代入公式:
引入外部指數(shù),可以消掉C
最終簡化為:。 ?
致謝
本文是BigCode 訓練工作組的討論分析結(jié)果。感謝所有參與人員,特別是:Raymond Li,Joel Lamy Poirier,Denis Kocetkov,Leandro von Werra,Loubna Ben Allal,Evgenii Zheltonozhskii,Niklas Muennighoff,Dzmitry Bahdanau和Thomas Wolf。感謝Leandro對文章標題的建議;感謝Niklas授權(quán)我們在推理運行頻率方面使用他的解釋來描述模型大小與計算額外開銷曲線。 ?
其他人都在看
“ChatGPT們”的淘金時代
狂追ChatGPT:開源社區(qū)的“平替”熱潮
GPT-4創(chuàng)造者:第二次改變AI浪潮的方向
谷歌科學家:ChatGPT秘密武器的演進與局限
比快更快,開源Stable Diffusion刷新作圖速度
OneEmbedding:單卡訓練TB級推薦模型不是夢
GLM訓練加速:性能最高提升3倍,顯存節(jié)省1/3
歡迎Star、試用OneFlow: github.com/Oneflow-Inc/oneflow/http://github.com/Oneflow-Inc/oneflow/
關(guān)鍵詞: