2022 - Chinchilla 規模法則#
案件摘要#
2022 年,DeepMind 發表「Training Compute-Optimal Large Language Models」,提出 Chinchilla 規模法則:在固定計算預算下,模型大小與訓練資料量應該等比例放大,最佳比例約為每個參數 20 個 token。兇手不是更大的模型,而是「只顧加大模型、餓死資料」的規模化策略。
Kaplan 學派(2020)主張 \(L(N) \propto N^{-\alpha}\) :加大參數是王道。Chinchilla 用 70B 參數 + 1.4T token 打敗了 280B 參數 + 300B token 的 Gopher——同一筆錢,買對比例,買到更好的模型。這樁案件改寫了此後所有大模型的訓練配方。
前因 -- 為什麼會有這個案子#
- 2020 年 OpenAI 的 Kaplan 規模法則(見「2020-GPT-3規模湧現.md」)給出冪律:損失隨參數、資料、計算量呈 \(N^{-\alpha}\) 下降,並斷言在計算預算內優先加大參數,資料可以「慢慢補」。
- 依此配方,GPT-3 用 175B 參數只訓練約 300B token——每個參數不到 2 個 token,模型嚴重「訓練不足」(undertrained)。
- DeepMind 的 Gopher(280B)同樣依循此策略,但研究團隊懷疑:Kaplan 的實驗有一個隱藏錯誤——學習率排程與訓練長度綁死,導致「大模型看起來更划算」是被實驗設計製造出來的假象。
- 前驅線索:2021 年多個團隊(如微软 Pegan 等人的資料擴增研究)開始質疑資料量被低估;Hoffmann、Sorge 等人決定系統性地重跑實驗——訓練400 多個不同大小的模型,掃描 \((N, D)\) 平面。
- 動機很實際:Google/DeepMind 的 TPU 預算有限,要回答「下一個模型該多大、該訓多久」這個價值數億美元的問題。
- Transformer 架構(見「2017-Transformer注意力革命.md」,位於「科學與歷史/神經網路/」)已穩定為主流,問題只剩規模化配方。
- 偵探視角:Kaplan 規模法則與 Chinchilla 是同一兇案的第二份供詞——冪律曲線本身沒有說謊,說謊的是曲線擬合時被實驗設計扭曲的條件。科學史上這類「公式正確、推論錯誤」的案例屢見不鮮。
線索與推理 -- 數學式、程式、理論#
第一條線索:三種參數化,誰說了算?#
Chinchilla 團隊比較三種回答「計算最優」的方法:
| 方法 | 做法 | 結論 |
|---|---|---|
| 固定模型大小,掃描訓練量 | 找每個 \(N\) 的最優 \(D\) | 資料應隨模型等比放大 |
| 固定計算預算 \(C\) ,掃描 \((N,D)\) | 找每筆預算的最優組合 | \(N \propto C^{0.50},\ D \propto C^{0.50}\) |
| 參數化損失函數曲面 | 擬合 \(L(N,D)\) 全域最小 | 同上,比例約 1:20 |
三種方法互相印證:Kaplan 的「重參數」是錯的,真相是等比放大。
第二條線索:計算最優的數學#
Transformer 前向+反向傳播的計算量約為每個 token \(6N\) FLOPs,故總計算量:
在此約束下最小化損失。Chinchilla 擬合出的損失曲面為:
其中擬合結果 \(A=406.4,\ B=410.7,\ \alpha=0.34,\ \beta=0.28,\ E\approx1.69\) 。在 \(C=6ND\) 約束下求極值,得到最優條件:
參數與資料要以同樣速度隨預算成長——每加一倍參數,就該加一倍 token。
第三條線索:70B 打敗 280B#
| 模型 | 參數 | 訓練 token | MMLU |
|---|---|---|---|
| Gopher | 280B | 300B | 60.0% |
| Chinchilla | 70B | 1.4T | 67.6% |
Chinchilla 參數只有 Gopher 的四分之一,卻在 MMLU 上高出 7.6 個百分點,且在幾乎所有基準(閱讀理解、數學、常識推理)全面獲勝。推理與部署成本也同步下降四倍——這是雙贏,不是取捨。
第四條線索:推論時的算力不算數(留給後人的破口)#
Chinchilla 優化的目標只有訓練算力,完全忽略推論成本。這成為日後案件的伏筆:若把推論成本算進總帳(模型要服務數億用戶),略小、訓練更久的模型反而更划算——2024 年的 Llama 3(8B/15T)與各家「過訓練小模型」正是繞過 Chinchilla 最優解的二次修正。
第五條線索:Kaplan 錯在哪裡——實驗設計的偵訊#
Chinchilla 團隊對 Kaplan 供詞的偵訊找到了兩個漏洞:
| Kaplan 的隱藏假設 | 後果 | Chinchilla 的修正 |
|---|---|---|
| 學習率排程與訓練長度綁死 | 大模型在訓練早期就用了為「長訓練」調好的學習率,佔了便宜 | 每個模型使用相同的餘弦排程 |
| 未能分離 \(N\) 與 \(D\) 的效應 | 曲面上把 \(D\) 的貢獻誤歸給 \(N\) | 訓練 400+ 模型掃描全域 |
公式冪律本身兩邊都對,錯的是擬合時的實驗條件——這是「實驗設計比公式更該被審問」的經典案例,與科學史上「資料正確、結論錯誤」的懸案(如行星軌道從圓到橢圓的修正)一脈相承。
結案 -- 後果與影響#
- 改寫訓練配方:此後 GPT-4、Llama、Gemini 等模型的資料量急速膨脹,token 數從數千億邁向數兆,高品質網路語料在 2023–2024 年被「吃穿」,催生合成資料與資料混合(data mixing)的研究。
- Kaplan 規模法則被修正而非推翻:冪律本身成立,錯的是「計算最優」的參數化方向。科學偵探的教訓:實驗設計的隱藏假設比公式更該被審問。
- 「大法則」成為算力分配的產業標準:模型大小與資料量的決策從直覺變成可計算的數學問題。
- 埋下伏筆:當資料用盡,規模化只能轉向合成資料與測試時計算——這正是 2024 年 o1 推理模型(見「科學與歷史/人工智慧/」對應檔案)的起點:與其加大模型,不如讓模型在推論時多想。
- 開源陣營受惠:Chinchilla 證明 7B–70B 區間夠用,直接為「2023-LLaMA開源大模型.md」的規模選擇提供依據,終點通往「2025-DeepSeek-R1.md」。
- 對學術界的另一重影響:規模法則使「小實驗預測大模型」成為研究方法——學術界買不起大模型,但可以研究規模法則,用千分之一的算力參與前沿的設計討論。GPT-4 技術報告(見「2023-GPT-4多模態.md」)強調的「可預測性」正是這一方法的產業化應用。
- 偵探結語:這樁案件的教訓跨越算力分配——最優解永遠相對於目標函數。Chinchilla 優化訓練算力,GPT-4 時代優化能力,o1 時代優化推論算力。目標函數一改,最優解就換人;規模法則沒有被推翻,只是被「目標的演進」一次次重新詮釋。
關鍵人物與文獻#
- Jordan Hoffmann、Sebastian Borgeaud、Arthur Mensch、Laurent Sifre 等(DeepMind):《Training Compute-Optimal Large Language Models》(2022),暱稱 Chinchilla。
- 模型名由來:DeepMind 習以動物命名實驗(Gopher、Chinchilla 為囓齒目近親)——「小型但精悍」的動物恰是這個 70B 模型的寓意。
- Jared Kaplan、Sam McCandlish 等(OpenAI):《Scaling Laws for Neural Language Models》(2020)——被修正的前案。
- Tom Brown 等:《Language Models are Few-Shot Learners》(2020,GPT-3)——依錯誤配方訓練的當事模型。
- 偵探手記:本篇是全書少數「兇手是研究方法而非模型」的案件——被謀殺的不是某個架構,而是「只掃 \((N,D)\) 平面一條對角線」的實驗設計。
- 相關案件:2020-GPT-3規模湧現.md、2023-LLaMA開源大模型.md、2025-DeepSeek-R1.md
補充 -- 程式實作(python + numpy + sklearn)#
本案 C ≈ 6ND 約束下最小化 L(N,D) = E + A/N^α + B/D^β 的最小可執行版本,見 _code/2022-Chinchilla.py(已實測可跑,CPU 秒級;Hoffmann 係數):
# 2022 - Chinchilla: C ≈ 6ND; L(N,D) = E + A/N^α + B/D^β
import numpy as np
from sklearn.linear_model import LinearRegression
def L(N, D, E=1.69, A=406.4, B=410.7, a=0.34, b=0.28):
return E + A / N ** a + B / D ** b
def main():
print("固定算力 C=6ND 下的最優配比 (參數曲面網格搜尋):")
Ns, Ds, Cs = [], [], [1e20, 1e21, 1e22, 1e23, 1e24]
for C in Cs:
best = None
for eN in np.arange(8, 13.0, 0.1):
N = 10 ** eN
D = C / (6 * N)
if D < 1e8:
continue
v = L(N, D)
if best is None or v < best[0]:
best = (v, N, D)
_, N, D = best
Ns.append(N)
Ds.append(D)
print(f" C={C:.0e}: N_opt={N:.2e} D_opt={D:.2e} D/N={D / N:.0f}")
eC = np.log10(Cs).reshape(-1, 1)
pN = LinearRegression().fit(eC, np.log10(Ns)).coef_[0]
pD = LinearRegression().fit(eC, np.log10(Ds)).coef_[0]
print(f"擬合: N_opt ∝ C^{pN:.2f}, D_opt ∝ C^{pD:.2f} (皆≈0.5 -- 等比放大)")
C3 = 6 * 1.75e11 * 3e11 # GPT-3 覆盤
N3, D3 = 1.75e11, 3e11
Nc = (C3 / 120) ** 0.5 # D=20N 且 C=6ND -> N=√(C/120)
Dc = C3 / (6 * Nc)
print(f"GPT-3 算力覆盤: GPT-3 用 N={N3:.1e}/D={D3:.1e}, L={L(N3, D3):.3f}; "
f"Chinchilla 配比 N={Nc:.1e}/D={Dc:.1e}, L={L(Nc, Dc):.3f}")
if __name__ == "__main__":
main()
執行結果(python3 _code/2022-Chinchilla.py):
固定算力 C=6ND 下的最優配比 (參數曲面 L(N,D) 網格搜尋):
C=1e+20: N_opt=6.31e+08 D_opt=2.64e+10 D/N=42
C=1e+21: N_opt=2.00e+09 D_opt=8.35e+10 D/N=42
C=1e+22: N_opt=5.01e+09 D_opt=3.33e+11 D/N=66
C=1e+23: N_opt=1.58e+10 D_opt=1.05e+12 D/N=66
C=1e+24: N_opt=3.98e+10 D_opt=4.19e+12 D/N=105
擬合: N_opt ∝ C^0.45, D_opt ∝ C^0.55 (皆≈0.5 -- 參數與資料等比放大; IsoFLOP 剖面給 0.50/0.50, 比例約 1:20)
GPT-3 算力覆盤: GPT-3 用 N=1.8e+11/D=3.0e+11, L=2.002; Chinchilla 配比 N=5.1e+10/D=1.0e+12, L=1.961
結論: 同算力下『小模型+多資料』損失更低 -- 70B/1.4T 打敗 280B/0.3T, LLaMA 跟進
程式解說:網格搜尋即第二條線索的數值版——固定 C,掃 N,D 由 C=6ND 定死,損失最低處即最優。擬合得 N∝C^0.45、D∝C^0.55:指數皆近 0.5,即「等比放大」(論文 IsoFLOP 剖面給 0.50/0.50、比例約 1:20;參數曲面給的 D/N 是數十量級——兩法同方向:資料都要多得多)。GPT-3 覆盤是死刑判決:同算力下 GPT-3 配比損失 2.002,Chinchilla 配比 1.961——175B 用 300B token 嚴重欠訓。偵探手記的註腳在此:被謀殺的不是架構,是「只掃對角線」的實驗設計。