【LLM 10大觀念-1】Scaling Law

迎接2024年:10個必須要搞懂的LLM概念-1

倢愷 Oscar
20 min readDec 29, 2023

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

figure from OpenAI GPT4 technical report. 從此圖可以看出他們在train GPT4之前,就已經完美的預測到了GPT4的能力水平。

Scaling Law 定義:我們可以用模型大小、Dataset大小、總計算量,來預測模型最終能力。(通常以相對簡單的函數型態, ex: Linear relationship)

figure from OpenAI <Scaling Laws for Neural Language Models>

其實在過去,DL的研究者、從業者應該多多少少就會從兩個方面聽過Scaling Law。

第一、很多論文在各種DL領域早就提出了Scaling Law:

  1. Hestness et al. 於2017發現在Machine Translation, Language Modeling, Speech Recognition和Image Classification都有出現Scaling law.
  2. OpenAI Kaplan et al. 於2020年從計算量、Dataset大小、跟參數量分別討論了Scaling Law。
  3. 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都會隨之提升

figure from Andrew Ng

如果你還是第一次接觸這個概念,就拿摩爾定律來當類比,摩爾定律我們知道:晶片性能跟時間會呈現某種可預測關係(更精準的講是電晶體密度會隨時間成倍數增長)。

DL的Scaling Law說的就是,模型的性能會跟:1. 模型參數、2. Dataset大小、3. 訓練計算量,呈現某種可預測的關係。

2. Chinchilla Scaling Law: 對LLM最重要的Scaling Law

接下來我們來講在LLM時代你必須要搞懂的最重要的Scaling Law: Chinchilla Scaling Law [3]

如果我們接受原本Scaling Law的定義(模型性能可藉由參數量、Dataset大小、計算量預測),馬上就會衍伸出兩個很重要的問題。

  1. Return(收益):在固定的訓練計算量之下,我們所能得到的最好性能是多好?
  2. Allocation(分配):我們要怎麼分配我們的模型參數量跟Dataset大小。
    (假設計算量 = 參數量 * Dataset size,我們要大模型 * 少量data、中模型 * 中量data、還是小模型 * 大量data)

2022年DeepMind提出Chinchilla Scaling Law,同時解決了這兩個問題,並且依此改善了當時其他大模型的訓練方式。'

他們基於三種方式來找到訓練LLM的Scaling Law:

  1. 固定模型大小,變化訓練Data數量。
  2. 固定計算量(浮點運算),變化模型大小。
  3. 對所有實驗結果,直接擬合參數化損失函數。

具體實驗細節我推薦把整篇論文看完,我直接講結論,Chinchilla Scaling Law針對Return問題,提出了一個完整的Scaline公式如下。

Method 3 result from Chinchilla Scaling Law,N是模型參數量、D是數據量、其他都是係數

LLM最終的Loss(Perplexity),會隨著模型放大、數據量變多而下降,並且是跟他們呈現指數映射後線性關係。

這就像是開頭OpenAI的圖,找到了一個預估訓練LLM回報的公式,依此,我們不用拿超大的模型跟數據,用幾個月甚至幾年的時間慢慢做實驗,只要在小模型、小數據下驗證、確認我們的公式,就可以設計一個更大型的訓練,大幅度減少了實驗成本。

Chinchilla最大的貢獻更是在解決Allocation的問題,他們發現

  1. 數據量(Tokens數)應該要約等於模型參數量的20倍
  2. 並且數據量跟模型參數量要同比放大(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資源模式不外乎兩種:

  1. 平均分攤GPU給每個人
  2. 因應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其實也是一個複雜的過程,其中最少都會包含三個階段:

  1. Cold start:一開始模型太小、Data不夠、問題太難時,會呈現怎麼訓練都沒有幫助,好幾個不同大小的模型、Dataset訓練出來的結果都差不多爛,看不出Scaling的時期。
  2. Scaling:正常的Scaling時期。
  3. Plateau:撞到了某個隱形的天花板,可能是Dataset品質帶來的天花板、本身任務的Irreducible Error、Architecture的能力天花板。

我們心中希望的其實是處理中間這段,但是實際上遇到的問題可能複雜很多。

而這就必須要辨識出幾種Scaling常見的Patterns(如下圖)

4種常見的Scaling Patterns
  1. Ordinal Scaling:這是我們最理想的情況,從BERT base或是T5 small開始,隨著模型變大,效果顯著上升,因此我們可以畫出一條很漂亮的Scaling Law,可以每天準時下班,晚上做夢都會笑。
  2. Emergent Ability:專指那些只有參數量到一定大小(Ex: GPT4)後才做的好的任務,像是在2023年中普遍認為Reasoning跟Coding都是少說要30B才能做好。Emergent Ability我會在之後再更詳細提。
  3. Ran out of Data/Compute:確實出現了Scaling的情況,但是目前連GPT4都做不好。
  4. Slow Scaling (Not fast enough):確實出現了Scaling的情況,但是成長速率明顯過慢。

四種Pattern分別都有不同的實驗方法、改進方法可以做,不過因應篇幅過長,我留到之後再詳細說明我現在的Scaling流程,不過重點只是先放在,實驗、思考都要時常思考Scaling。

C. 一個好的idea,一定要具備Scale的潛能

這就又提到第三個重點,我們要依照「一個idea是否具備Scale的潛能」來找出能夠長期執行的idea、判斷實驗的重要性。

舉個例子,以大部分公司而言,常見的Data來源會有下面幾種:

  1. 人工Label:依照任務難易度而變,很多NLP任務在公司能夠Label的scale都在1,000上下,這顯然就不是好的scale idea
  2. Crowd Source:依照我的經驗,NLP的題目,Crowd Source普遍可以在一定的預算內做到10k~100k這個level,如果你的project scaling law在這個範圍內是可行、可接受的那可以考慮
  3. Unsupervised Learning:如果公司有整理好的文本數據的話,可以快速估計一下文本的Scale,並且依照公司文本快速去畫出Scaling law,判斷公司內這個領域的文本數量是否足夠。
  4. 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):

  1. 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的問題。
  2. 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

  1. Pretraining的Scaling Law:本篇重點的內容,必須要詳讀OpenAI的Scaling Law [2]跟DeepMind的Chinchilla Scaling Law [3]。
  2. Over-train Pretraining的Scaling Law:主要由LLaMa [4]提出,Chinchilla找到的是Computational optimal,意思是在固定運算量下最好的配比。但是我們只有在訓練超大模型才會考慮computation的限制,而像是7B, 13B這種level,我們就要思考如何把他們做的越強越好,所以大可以Over train他們,用更多的資料訓練小模型,讓他們比預期的更好,典型例子是LLaMa 1跟LLaMa 2 [5]。
  3. 藉由Data Quality提升Scaling Law斜率:典型是Microsoft的phi系列 [6, 7],藉由更好的資料,來讓模型在同樣大小參數、Dataset的情況下得到更好的效果,而最終他們推出phi-2,用2.7B model贏過大量7B, 13B模型。
  4. Instruction tuning的Scaling law:由Google提出,instruction tuning階段也有scaling law,因此instruction tuning的data數量還是一個簡單且重要的考量依據。[8]
  5. Downstream performance跟LLM loss的scaling law:阿里巴巴發現model的SFT score跟ICL score,跟原始的loss也有scaling relationship,也就是說我們甚至在finetune前也可以一定程度預判最終downstream能力。[9]
  6. Mixture of Expert LM的Scaling Law:由DeepMind提出,Language model如果做了MoE後,Expert count也會跟loss呈現Scaling關係,其中發現當我們有8個Experts的時候,一個模型大概可以跟兩倍大小的模型有差不多的performance。[10]
  7. Context Length的Scaling Law:今年,還有部份團隊開法把重點放在加長LLM的context length,意思是可以看、生成更多token,LongLLaMa [11], LongLora [12]和 LightSeq [13] 都試圖提出針對context length的不同scaling law。
  8. Data Repeat帶來的不同Scaling Law:2023另一個大議題就是在可見的未來,網路上可見的Data數量可能會不夠了,因此研究Data Repeatition就變的很重要,AI2發現repeat 4次都還可以給LM帶來有效的improve [14],新加坡國立大學跟愛丁堡大學的研究者則提出11個針對data repeatition的insight [15],非常建議把這篇論文重複詳讀多次。
  9. 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必看學習清單:

  1. Stanford cs224n課程影片:Scaling Language Model
  2. Stanford cs324課程中scaling law的slides
  3. Chinchilla Scaling Law的論文
  4. OpenAI針對Scaling Law的論文
  5. [進階] Sasha Rush在Simon Institute的演講:Scaling Data-Constrained Language Models
  6. [進階] Go smol or go home,這篇Blog討論了Chinchilla的侷限。
  7. [進階] Yasaman Bahri在Simon Institue的演講:Understanding the Origins and Taxonomy of Neural Scaling Laws

Reference

  1. GPT-4 Technical Report. OpenAI. 2023 https://arxiv.org/pdf/2303.08774.pdf
  2. Kaplan, Jared, et al. “Scaling laws for neural language models.” arXiv preprint arXiv:2001.08361 (2020).
  3. Hoffmann, Jordan, et al. “Training compute-optimal large language models.” arXiv preprint arXiv:2203.15556 (2022).
  4. Touvron, Hugo, et al. “Llama: Open and efficient foundation language models.” arXiv preprint arXiv:2302.13971 (2023).
  5. Touvron, Hugo, et al. “Llama 2: Open foundation and fine-tuned chat models.” arXiv preprint arXiv:2307.09288 (2023).
  6. Gunasekar, Suriya, et al. “Textbooks Are All You Need.” arXiv preprint arXiv:2306.11644 (2023).
  7. Li, Yuanzhi, et al. “Textbooks are all you need ii: phi-1.5 technical report.” arXiv preprint arXiv:2309.05463 (2023).
  8. Chung, Hyung Won, et al. “Scaling instruction-finetuned language models.” arXiv preprint arXiv:2210.11416 (2022).
  9. Yuan, Zheng, et al. “Scaling relationship on learning mathematical reasoning with large language models.” arXiv preprint arXiv:2308.01825 (2023).
  10. Clark, Aidan, et al. “Unified scaling laws for routed language models.” International Conference on Machine Learning. PMLR, 2022.
  11. Tworkowski, Szymon, et al. “Focused transformer: Contrastive training for context scaling.” arXiv preprint arXiv:2307.03170 (2023).
  12. Chen, Yukang, et al. “Longlora: Efficient fine-tuning of long-context large language models.” arXiv preprint arXiv:2309.12307 (2023).
  13. Li, Dacheng, et al. “LightSeq: Sequence Level Parallelism for Distributed Training of Long Context Transformers.” arXiv preprint arXiv:2310.03294 (2023).
  14. Muennighoff, Niklas, et al. “Scaling Data-Constrained Language Models.” arXiv preprint arXiv:2305.16264 (2023).
  15. Xue, Fuzhao, et al. “To Repeat or Not To Repeat: Insights from Scaling LLM under Token-Crisis.” arXiv preprint arXiv:2305.13230 (2023).
  16. Gao, Leo, John Schulman, and Jacob Hilton. “Scaling laws for reward model overoptimization.” International Conference on Machine Learning. PMLR, 2023.

--

--

倢愷 Oscar
倢愷 Oscar

Written by 倢愷 Oscar

我是倢愷,CTO at TeraThinker an AI Adaptive Learning System Company。AI/HCI研究者,超過100場的ML、DL演講、workshop經驗。主要學習如何將AI落地於業界。 有家教、演講合作,可以email跟我聯絡:axk51013@gmail.com