幂律关系
Loss ∝ N^{-α},对数尺度下线性
CS336 · 第 9 课
给定固定计算预算,应该训练多大的模型、用多少数据?这不是直觉问题,是可量化的科学问题。这一课讲 Kaplan et al. 2020 和 Hoffmann et al. 2022 的 scaling laws,以及它们如何改变了大模型训练的范式。
Spring 2026 官方来源:Lecture 9 PDF · 课程日程
本页是中文学习导读;讲次主题、教师与材料版本以 Stanford 官方页面和讲义为准。
本讲问题:训练预算固定时,模型参数、数据量和计算量应该如何分配?Scaling law 的作用不是保证未来,而是把有限试验转成可检验的资源决策。
经验 loss 曲线 → 参数 / 数据 / compute 幂律 → Chinchilla compute-optimal 配比 → 拟合与外推 → 用不确定性约束训练规模决策。
Scaling law 不是自然定律,而是指定 model family、data mixture、optimizer 与训练区间上的经验模型。先复习 log:若 \(y=ax^{-\alpha}\),则 \(\log y=\log a-\alpha\log x\),log-log 图上的斜率才对应 exponent。
choice: N parameters, D processed tokens, recipe
↓ approximate compute C ≈ 6ND
training runs → observed validation losses
↓ fit empirical function + uncertainty
prediction inside range / extrapolation outside range
↓ decision under compute, time, memory, inference constraints
curve fit ≠ causal explanation ≠ guaranteed capability忽略常数,令 \(ND=10^6\)。可选 \(N=10^3,D=10^3\) 或 \(N=10^4,D=10^2\)。两者一阶训练 compute 相同,却可能分别受 model capacity 与 data scarcity 限制。IsoFLOP 实验是在多个预算上各训练多组 \((N,D)\),找每条预算曲线的最低点,再拟合最优 \(N(C),D(C)\);不是从 6ND 单独推导出 Chinchilla 比例。
Napkin math\(C\approx6ND\);Empirical / implementation-specific拟合 exponent 与“约 20 tokens/parameter”都依赖实验范围。若数据质量改变、重复多 epoch、架构或目标变了,同一比例可能不再最优。Loss 平滑下降也不保证某项离散能力在相同比例上变化。
问题:给定 100 万美元的训练预算,应该训练多大的模型、用多少数据?
在没有 scaling law 之前,这些决策主要靠直觉和试错。有了 scaling law,我们可以在小模型上做实验,预测大模型的最优配置。
| 时间 | 事件 | 影响 |
|---|---|---|
| 2020 年 1 月 | Kaplan et al. | 系统拟合语言模型的参数、数据与计算幂律 |
| 2020 年 5 月 | GPT-3 | 以 175B 参数展示大规模自回归预训练与 in-context learning |
| 2022 年 3 月 | Hoffmann et al. (Chinchilla) | 重新估计固定计算预算下的模型/数据分配 |
| 2023 年 2 月 | LLaMA | 进一步强调较小模型配合更多训练 token 的推理成本优势 |
语言模型的 loss 与模型大小、数据量、计算量之间存在幂律关系:
# 模型大小 N 的幂律
L(N) = (N_c / N)^α_N
# 数据量 D 的幂律
L(D) = (D_c / D)^α_D
# 其中:
# N_c, D_c 是常数
# α_N ≈ 0.076, α_D ≈ 0.095 (Kaplan et al. 的值)
给定固定计算预算 C(FLOPs),最优的 N 和 D 满足:
# 计算量公式
C ≈ 6 × N × D
# Kaplan et al. 的发现:
N_opt ∝ C^0.73
D_opt ∝ C^0.27
# 含义: 计算预算增加时,应该主要增大模型,少量增加数据
GPT-3 175B 只用了 ~300B tokens(约 2× 模型参数数),远低于 Chinchilla 推荐的 20×。
Kaplan et al. 的compute-optimal 拟合给出 N_opt ∝ C^0.73、D_opt ∝ C^0.27,因而更倾向把新增计算投入模型大小。注意这不能解释成 α_N > α_D:页面上列出的单变量拟合反而是 0.076 < 0.095。
为何后来估计不同:Hoffmann et al. 指出训练曲线采样、学习率 schedule 与固定计算预算下取最优点的方法会显著影响拟合。不能把差异只归结为“Kaplan 的大模型没训完”,更不能概括为 Kaplan 证明了“模型越大越好”。
DeepMind 使用三种方法重新估计固定计算预算下的最优模型大小与 token 数,包括 training-curve envelope、IsoFLOPs 和联合 loss 拟合:
# Chinchilla 的 scaling law
N_opt ∝ C^0.50
D_opt ∝ C^0.50
# 常用经验速记(来自 70B / 1.4T 的训练点):
D_opt ≈ 20 × N_opt
# 含义: 在该论文的范围和训练 recipe 下,模型与数据随 compute 近似等比例增长。
# “20 tokens/parameter”不是跨架构、数据与目标都不变的物理常数。
| 模型 | 参数量 | 训练 tokens | 比例 | Loss |
|---|---|---|---|---|
| Gopher | 280B | 300B | 约 1.1:1 | 基准 |
| Chinchilla | 70B | 1.4T | 1:20 | 更低! |
Chinchilla 以约 1/4 的参数量和约 4.7× 的训练 token,获得更低的 validation loss,并在论文报告的大范围下游评测中整体优于 Gopher。“20×”是 token/parameter 比例,不是相对 Gopher 的数据倍数。
Kaplan 与 Hoffmann 的实验网格、训练 schedule、参数计数口径和
compute-optimal 点提取方法不同。
Hoffmann et al. 使用三种方法交叉检查:
1. 对多条 training curves 取固定 compute 下的最低 loss
2. IsoFLOPs:每个 compute budget 扫描多个模型大小
3. 联合拟合 L(N, D)
后续数据取证还指出原论文 method 3 的拟合实现存在问题;
因此应报告拟合方法和不确定性,而不是把某组指数当作最终真理。
更精确的 loss 预测公式:
L(N, D) = E + A/N^α + B/D^β
其中:
E ≈ 1.69 (该数据、tokenizer 与模型族拟合出的渐近 loss floor)
A ≈ 406.4, α ≈ 0.34
B ≈ 410.7, β ≈ 0.28
# 给定计算 C = 6ND:
N_opt = G × (C/6)^b
D_opt = G' × (C/6)^(1-b)
其中 G = (αA / βB)^(1/(α+β)), b = α/(α+β) ≈ 0.55
# Step 1: 选择一系列模型大小
model_sizes = [70M, 130M, 350M, 700M, 1B, 2B, 4B, 8B, 16B]
# Step 2: 对每个模型,选择多个训练步数
# (不同步数 = 不同数据量 D)
# Step 3: 训练并记录 loss
# 得到 (N, D, L) 三元组列表
# Step 4: 拟合 L(N, D) = E + A/N^α + B/D^β
# 用 L-BFGS 或类似优化器
常见陷阱:
# 固定计算 C,变化 N 和 D = C/(6N)
C = 10^18 # 1 exaFLOP
for N in [100M, 300M, 1B, 3B, 10B]:
D = C / (6 * N)
# 训练并记录 loss
# 找到该 C 下最优的 N
# 对多个 C 重复 → 得到 isoflop 曲线
Chinchilla 比例: D = 20 × N
这意味着:
- 7B 模型 → 140B tokens
- 70B 模型 → 1.4T tokens
- 700B 模型 → 14T tokens
数据需求增长极快!
这也是为什么数据成为瓶颈
Chinchilla 对推理的影响:
- 70B 模型 (Chinchilla) vs 175B 模型 (GPT-3)
- 70B 推理更快(小模型)
- 但训练成本更高(更多数据)
训练成本 vs 推理成本的权衡:
如果推理是主要成本 → 训练更多数据的小模型
如果训练是主要成本 → 训练更少数据的大模型
Chinchilla 的拟合实验主要覆盖约 70M–16B 参数,再据此外推并训练 70B 模型。继续外推到数百 B 或 1T+ 时,不确定性会增大。
Llama 2/3 等模型使用了高于 20 tokens/parameter 的训练量,但这体现的是训练/推理成本、数据供给与目标能力的综合选择,不能单独证明新的通用最优比例。
Chinchilla 优化的是 next-token prediction loss。但用户关心的是:
Chinchilla: D = 20 × N
假设所有 token 等权
实际上不同来源的 token 对目标 loss 与下游能力贡献不同;
价值倍数必须由受控 data-mixing / filtering 实验估计,不能固定写成 10×。
这也是为什么数据过滤如此重要
Scaling law 是在特定架构(标准 Transformer)上拟合的。
MoE、SSM、线性 attention 的 scaling 行为可能不同。
Batch size 会同时影响优化步数、critical batch、学习率 schedule 与硬件效率。
Chinchilla 的结论依赖其训练 recipe;把 batch 或 schedule 换掉后,应重新拟合,
不能机械套用 linear scaling rule。
SFT/RLHF 阶段的 scaling 行为和 pre-training 不同:
OpenAI o1/o3 的新范式——推理时投入更多计算:
# 传统: 固定模型,单次前向
output = input → model → answer
# Test-time compute: 推理时多步思考
for step in range(reasoning_steps):
thought = model.generate_thought(context)
context += thought
if should_stop(thought):
break
answer = model.generate_answer(context)
不再追求更多数据,而是追求更好的数据:
# Step 1: 确定计算预算
C = num_gpus × time_per_gpu × flops_per_gpu × MFU
# Step 2: 用 20 tokens/parameter 作为粗略起点,而不是最终答案
N_opt ≈ (C / 6 / 20)^(1/2) # 假设 D = 20N
D_opt = 20 × N_opt
# Step 3: 在小模型上验证
# 设计覆盖多个 N、D、compute budget 的实验网格,并保持 tokenizer、数据、
# optimizer 与 schedule 口径一致;实验数量由拟合不确定性决定
# Step 4: 外推到大模型
# 预测最优 N 和 D
# Step 5: 训练目标模型,监控 loss 与小规模外推偏差
# 偏差可能来自数据、优化、实现、架构或拟合失效,不能自动归因于“数据不够”
| 模型 | 参数量 | 训练 tokens | tokens/parameter | 如何解读 |
|---|---|---|---|---|
| GPT-3 175B | 175B | 300B | 约 1.7 | 远低于 20 的经验点 |
| PaLM 540B | 540B | 780B | 约 1.4 | 远低于 20 的经验点 |
| Chinchilla 70B | 70B | 1.4T | 20 | 论文训练点 |
| Llama 2 70B | 70B | 2T | 约 28.6 | 高于 20,兼顾更低推理成本 |
| Llama 3 405B | 405B | 15.6T | 约 38.5 | 高于 20;不是对通用最优比例的单独证明 |
问题 1:Chinchilla 论文的核心结论是什么?
问题 2:为什么 Kaplan et al. 和 Chinchilla 的结论不同?
问题 3:Scaling law 的幂律关系意味着什么?
问题 4:Scaling law 的实际用途是什么?
问题 5:Chinchilla 比例的局限是什么?
固定 \(ND=10^6\),为什么不能仅凭这个约束断言 \(N=D=1000\) 最优?
答案:6ND 只给等计算预算组合;还需要经验 loss surface 或 IsoFLOP runs 比较 model-limited 与 data-limited 区域。
若认为乘积固定就应两数相等,你把对称的代数约束误当成了对称的学习曲线。
训练 compute-optimal 并不等于部署最优:增大 \(N\) 会增加每个 decode step 的权重流量,增大 context 会增加 KV。下一课把 inference 成本加入决策。
Loss ∝ N^{-α},对数尺度下线性
N 与 D 随 compute 近似等比例增长;20 tokens/parameter 是经验点
固定预算下找最优 (N, D)
只优化 loss,忽略数据质量