【LLM 10大觀念-1】Scaling Law
2023年即將劃下句點,然而,在這整年中,LLM論文、產品和技術的創新源源不絕,這是一個充滿機遇和挑戰的年份。這一年我也是放下過去的經驗,從0重新學習關於LLM的各種知識。
在2023年底與2024年初,我希望把我的學習筆記提供給大家,整理10個我認為對於想要使用LLM的從業者、科技公司、創業者,最重要必須搞懂觀念。
今天來講第一個重點:Scaling Law。搞懂Scaling Law能夠幫助我們在訓練前預測模型能力。
本篇涵蓋關於Scaling Law的三大重點:
1. 什麼是Scaling law?
2. Chinchilla Scaling Law: 對LLM最重要的Scaling Law
3. 因應Scaling Law,我們要如何改變我們的工作模式與思考方式?
4. 2024年以前最重要的幾個Scaling Law
1. 什麼是Scaling Law
Having a sense of the capabilities of a model before training can improve decisions around alignment, safety, and deployment.
— GPT4 Technical Report
Scaling Law 定義:我們可以用模型大小、Dataset大小、總計算量,來預測模型最終能力。(通常以相對簡單的函數型態, ex: Linear relationship)
其實在過去,DL的研究者、從業者應該多多少少就會從兩個方面聽過Scaling Law。
第一、很多論文在各種DL領域早就提出了Scaling Law:
- Hestness et al. 於2017發現在Machine Translation, Language Modeling, Speech Recognition和Image Classification都有出現Scaling law.
- OpenAI Kaplan et al. 於2020年從計算量、Dataset大小、跟參數量分別討論了Scaling Law。
- Rosenfeld et al. 於2021年發表了關於Scaling Law的survey paper。在各種architecture更進一步驗證Scaling Law的普適性。
除了以上論文,即便在過去沒有關注到Scaling Law的研究發展,DL研究者、從業者也一定知道第二點(或是說具備代表性的圖)。
第二、Scaling Behavior早就隱藏在研究員的潛意識中。
Andrew Ng早在2016、2017就在各種場合畫出過以下這張圖,在Deep Learning.ai的課程中也時常出現,這張圖原本是用來說明NN跟傳統ML的適用時機,但卻也顯現出,對於研究員而言,早就具備一些關於Scaling的直覺。像是:Model越大、Data越多,performance都會隨之提升
如果你還是第一次接觸這個概念,就拿摩爾定律來當類比,摩爾定律我們知道:晶片性能跟時間會呈現某種可預測關係(更精準的講是電晶體密度會隨時間成倍數增長)。
DL的Scaling Law說的就是,模型的性能會跟:1. 模型參數、2. Dataset大小、3. 訓練計算量,呈現某種可預測的關係。
2. Chinchilla Scaling Law: 對LLM最重要的Scaling Law
接下來我們來講在LLM時代你必須要搞懂的最重要的Scaling Law: Chinchilla Scaling Law [3]
如果我們接受原本Scaling Law的定義(模型性能可藉由參數量、Dataset大小、計算量預測),馬上就會衍伸出兩個很重要的問題。
- Return(收益):在固定的訓練計算量之下,我們所能得到的最好性能是多好?
- Allocation(分配):我們要怎麼分配我們的模型參數量跟Dataset大小。
(假設計算量 = 參數量 * Dataset size,我們要大模型 * 少量data、中模型 * 中量data、還是小模型 * 大量data)
2022年DeepMind提出Chinchilla Scaling Law,同時解決了這兩個問題,並且依此改善了當時其他大模型的訓練方式。'
他們基於三種方式來找到訓練LLM的Scaling Law:
- 固定模型大小,變化訓練Data數量。
- 固定計算量(浮點運算),變化模型大小。
- 對所有實驗結果,直接擬合參數化損失函數。
具體實驗細節我推薦把整篇論文看完,我直接講結論,Chinchilla Scaling Law針對Return問題,提出了一個完整的Scaline公式如下。
LLM最終的Loss(Perplexity),會隨著模型放大、數據量變多而下降,並且是跟他們呈現指數映射後線性關係。
這就像是開頭OpenAI的圖,找到了一個預估訓練LLM回報的公式,依此,我們不用拿超大的模型跟數據,用幾個月甚至幾年的時間慢慢做實驗,只要在小模型、小數據下驗證、確認我們的公式,就可以設計一個更大型的訓練,大幅度減少了實驗成本。
Chinchilla最大的貢獻更是在解決Allocation的問題,他們發現
- 數據量(Tokens數)應該要約等於模型參數量的20倍
- 並且數據量跟模型參數量要同比放大(Ex: 模型放大一倍,數據也要跟著增加一倍)
依據這個結論他們發現,當時很多公開的大模型,都只考慮參數量放大,而沒有放足夠量的Data。在同樣計算量下,Chinchilla把模型縮小、但是加入更多Data,馬上就訓練出比當時其他模型都更好的模型。
3. 因應Scaling Law,我們要如何改變我們的工作模式與思考方式?
前面兩個段落,我希望大家都已經理解並接受了Scaling Law,並且也發現了Scaling Law帶來的各種優勢。
接下來我想用一個小段落快速分享一下這一年,因應Scaling Law,我的工作模式與思考方式的改變。
Scaling Law的本質是:模型最終效能可以藉由模型參數量、Dataset大小、訓練計算量來預測。因此我們可以藉由小模型、少量Data的訓練,來快速驗證我們的想法。
但是即便只是這一個簡單的idea,背後最少也隱藏著3個重點。
A. 要能Scaling,意味著組織必須能夠支援持續擴大(Scale)模型的infra跟GPU資源分配模式。
首先,我們來說infrastructure,以7B模型而言,粗估要佔用15GB~20GB的GPU memory,也就是說如果你全參數訓練,一張A100(80GB GPU memory)只能開Batch = 4,如果你想要Batch = 64, 128,那麼必須先進行跨卡和跨機的訓練環境設置。
同時為了加速訓練,讓memory使用率變的更高,每一兩個月幾乎就有新的技術、python package出來,Ex: Flash Attention 2, Zero 3, Vllm, Gradient Checkpoint, CPU offloading …等,隨時追蹤最新的訓練優化技術,並且保持組織的Server要能夠高頻率做改變,如果一個組織對Server裡面pip版本更新、各種packages更新的週期都是以月為單位,注定會在infra層面落後全世界半年到一年。
接著講GPU的資源分配模式,傳統實驗室、公司的GPU資源模式不外乎兩種:
- 平均分攤GPU給每個人
- 因應Project去申請更大型的GPU cluster
這兩種模式在Scaling時代都有明顯的弊端,平均分攤GPU會讓公司不具備跑真正大型實驗的能力,因應Project去申請則容易導致GPU資源過度浪費。例如:具備16張A100的團隊大可以每個實驗都直接跑7B的level,不必去驗證3B、1B的可行性。
更好的方法應該是盡量讓每個Project都具備在3B以下模型進行概念驗證的能力,並設計正式的Scaling檢查機制,只有通過Scaling檢查的團隊可以 "By experiments" 去使用更大的GPU Cluster。
這邊提到Scaling檢查機制,核心就是,當我們想要跑7B甚至13B模型時,我們最好在3B以下的模型都有一致的Scaling Behavior。最好在BERT跟T5這兩種大小先進行過概念驗證。
如果在2023年,沒有解決infra問題,也沒有調整出適合LLM scaling的資源分配模式,很有可能在2024年會連其他公司車尾燈都看不到。
B. 思考、實驗、討論都要把Scaling當作核心
承接第一點以及原本對Scaling的理解,一個好的團隊,在做跟Large XXX model相關專案時,一定要把Scaling當作一切的核心。
但Scaling其實也是一個複雜的過程,其中最少都會包含三個階段:
- Cold start:一開始模型太小、Data不夠、問題太難時,會呈現怎麼訓練都沒有幫助,好幾個不同大小的模型、Dataset訓練出來的結果都差不多爛,看不出Scaling的時期。
- Scaling:正常的Scaling時期。
- Plateau:撞到了某個隱形的天花板,可能是Dataset品質帶來的天花板、本身任務的Irreducible Error、Architecture的能力天花板。
我們心中希望的其實是處理中間這段,但是實際上遇到的問題可能複雜很多。
而這就必須要辨識出幾種Scaling常見的Patterns(如下圖)
- Ordinal Scaling:這是我們最理想的情況,從BERT base或是T5 small開始,隨著模型變大,效果顯著上升,因此我們可以畫出一條很漂亮的Scaling Law,可以每天準時下班,晚上做夢都會笑。
- Emergent Ability:專指那些只有參數量到一定大小(Ex: GPT4)後才做的好的任務,像是在2023年中普遍認為Reasoning跟Coding都是少說要30B才能做好。Emergent Ability我會在之後再更詳細提。
- Ran out of Data/Compute:確實出現了Scaling的情況,但是目前連GPT4都做不好。
- Slow Scaling (Not fast enough):確實出現了Scaling的情況,但是成長速率明顯過慢。
四種Pattern分別都有不同的實驗方法、改進方法可以做,不過因應篇幅過長,我留到之後再詳細說明我現在的Scaling流程,不過重點只是先放在,實驗、思考都要時常思考Scaling。
C. 一個好的idea,一定要具備Scale的潛能
這就又提到第三個重點,我們要依照「一個idea是否具備Scale的潛能」來找出能夠長期執行的idea、判斷實驗的重要性。
舉個例子,以大部分公司而言,常見的Data來源會有下面幾種:
- 人工Label:依照任務難易度而變,很多NLP任務在公司能夠Label的scale都在1,000上下,這顯然就不是好的scale idea。
- Crowd Source:依照我的經驗,NLP的題目,Crowd Source普遍可以在一定的預算內做到10k~100k這個level,如果你的project scaling law在這個範圍內是可行、可接受的那可以考慮。
- Unsupervised Learning:如果公司有整理好的文本數據的話,可以快速估計一下文本的Scale,並且依照公司文本快速去畫出Scaling law,判斷公司內這個領域的文本數量是否足夠。
- Distill from GPT3.5 or GPT4:用GPT3.5跟GPT4生成synthetic data,並且快速畫出這個project的Scaling law,預估最多需要多少token GPT4的request才能變成一個好的project,進而做成本跟時程控制。(Distillation會在我後面其他part佔非常大的篇幅,之後會詳談。)
對於研究機構也可以基於Scaling快速評斷一個idea有沒有可能持續做大做強,以下就舉一組例子(RLHF vs DPO):
- RLHF (Reinforcement Learning from Human Feedback):理論上可以無限Scale,因為當我們reward model訓練完後,我們可以讓LLM跟Reward model self-play,所以關鍵是解決RL的instability跟Human preference的noise。其中instability又牽扯到需要多少Human Preference data,其實還是會回到Data scaling的問題。
- DPO (Direct Preference Optimization):把RL從RLHF裡面移除掉,變更穩定的優化,但是把self-play的優點也移除掉了,必須要回頭考量Human Preference data的scalibility問題。
從這個角度就可以看出來,如果是可以快速收取Human Preference data的公司(有龐大的user base,ex: Google, Apple, FB),大可考慮DPO,但如果公司沒辦法快速Scale Human Preference,還是要回頭思考RLHF的各種問題,藉由LLM跟Reward Model的Self-play來scale。
4. 2024年以前最重要的幾個Scaling Law
- Pretraining的Scaling Law:本篇重點的內容,必須要詳讀OpenAI的Scaling Law [2]跟DeepMind的Chinchilla Scaling Law [3]。
- Over-train Pretraining的Scaling Law:主要由LLaMa [4]提出,Chinchilla找到的是Computational optimal,意思是在固定運算量下最好的配比。但是我們只有在訓練超大模型才會考慮computation的限制,而像是7B, 13B這種level,我們就要思考如何把他們做的越強越好,所以大可以Over train他們,用更多的資料訓練小模型,讓他們比預期的更好,典型例子是LLaMa 1跟LLaMa 2 [5]。
- 藉由Data Quality提升Scaling Law斜率:典型是Microsoft的phi系列 [6, 7],藉由更好的資料,來讓模型在同樣大小參數、Dataset的情況下得到更好的效果,而最終他們推出phi-2,用2.7B model贏過大量7B, 13B模型。
- Instruction tuning的Scaling law:由Google提出,instruction tuning階段也有scaling law,因此instruction tuning的data數量還是一個簡單且重要的考量依據。[8]
- Downstream performance跟LLM loss的scaling law:阿里巴巴發現model的SFT score跟ICL score,跟原始的loss也有scaling relationship,也就是說我們甚至在finetune前也可以一定程度預判最終downstream能力。[9]
- Mixture of Expert LM的Scaling Law:由DeepMind提出,Language model如果做了MoE後,Expert count也會跟loss呈現Scaling關係,其中發現當我們有8個Experts的時候,一個模型大概可以跟兩倍大小的模型有差不多的performance。[10]
- Context Length的Scaling Law:今年,還有部份團隊開法把重點放在加長LLM的context length,意思是可以看、生成更多token,LongLLaMa [11], LongLora [12]和 LightSeq [13] 都試圖提出針對context length的不同scaling law。
- Data Repeat帶來的不同Scaling Law:2023另一個大議題就是在可見的未來,網路上可見的Data數量可能會不夠了,因此研究Data Repeatition就變的很重要,AI2發現repeat 4次都還可以給LM帶來有效的improve [14],新加坡國立大學跟愛丁堡大學的研究者則提出11個針對data repeatition的insight [15],非常建議把這篇論文重複詳讀多次。
- RLHF中Reward Model的Scaling Law:OpenAI討論了在RLHF中Reward model的scaling以及使用proxy的reward model對scaling的幫助。[16]
結語
Scaling是LLM之所以能夠成功的最重要因素之一,因此從目前重要LLM玩家(Ex: OpenAI, Google, Meta, …)對Scaling Law的理解學習,並把Scaling的概念帶到日常工作、實驗跟思考,是要跟上這波LLM發展的重大關鍵之一。
希望我這篇文章能夠幫助大家更清晰理解Scaling Law,如果有相關問題也歡迎隨時回復跟我討論。同時我也持續有在接家教、演講跟顧問,今年會加入很多LLM的新知識,也歡迎到我主頁用email跟我聯繫。
Scaling Law必看學習清單:
- Stanford cs224n課程影片:Scaling Language Model
- Stanford cs324課程中scaling law的slides
- Chinchilla Scaling Law的論文
- OpenAI針對Scaling Law的論文
- [進階] Sasha Rush在Simon Institute的演講:Scaling Data-Constrained Language Models
- [進階] Go smol or go home,這篇Blog討論了Chinchilla的侷限。
- [進階] Yasaman Bahri在Simon Institue的演講:Understanding the Origins and Taxonomy of Neural Scaling Laws
Reference
- GPT-4 Technical Report. OpenAI. 2023 https://arxiv.org/pdf/2303.08774.pdf
- Kaplan, Jared, et al. “Scaling laws for neural language models.” arXiv preprint arXiv:2001.08361 (2020).
- Hoffmann, Jordan, et al. “Training compute-optimal large language models.” arXiv preprint arXiv:2203.15556 (2022).
- Touvron, Hugo, et al. “Llama: Open and efficient foundation language models.” arXiv preprint arXiv:2302.13971 (2023).
- Touvron, Hugo, et al. “Llama 2: Open foundation and fine-tuned chat models.” arXiv preprint arXiv:2307.09288 (2023).
- Gunasekar, Suriya, et al. “Textbooks Are All You Need.” arXiv preprint arXiv:2306.11644 (2023).
- Li, Yuanzhi, et al. “Textbooks are all you need ii: phi-1.5 technical report.” arXiv preprint arXiv:2309.05463 (2023).
- Chung, Hyung Won, et al. “Scaling instruction-finetuned language models.” arXiv preprint arXiv:2210.11416 (2022).
- Yuan, Zheng, et al. “Scaling relationship on learning mathematical reasoning with large language models.” arXiv preprint arXiv:2308.01825 (2023).
- Clark, Aidan, et al. “Unified scaling laws for routed language models.” International Conference on Machine Learning. PMLR, 2022.
- Tworkowski, Szymon, et al. “Focused transformer: Contrastive training for context scaling.” arXiv preprint arXiv:2307.03170 (2023).
- Chen, Yukang, et al. “Longlora: Efficient fine-tuning of long-context large language models.” arXiv preprint arXiv:2309.12307 (2023).
- Li, Dacheng, et al. “LightSeq: Sequence Level Parallelism for Distributed Training of Long Context Transformers.” arXiv preprint arXiv:2310.03294 (2023).
- Muennighoff, Niklas, et al. “Scaling Data-Constrained Language Models.” arXiv preprint arXiv:2305.16264 (2023).
- Xue, Fuzhao, et al. “To Repeat or Not To Repeat: Insights from Scaling LLM under Token-Crisis.” arXiv preprint arXiv:2305.13230 (2023).
- Gao, Leo, John Schulman, and Jacob Hilton. “Scaling laws for reward model overoptimization.” International Conference on Machine Learning. PMLR, 2023.