Scaling Laws 与 Chinchilla:固定算力该怎样分¶
Scaling Laws 和 Chinchilla 经常被压成两条口号:“loss 遵循幂律”和“参数与 token 应同比增加”。更有价值的读法,是把它们看成同一个实验问题的两次建模:给定有限计算,怎样用一组不同大小、不同数据量的训练运行估计 loss 曲面,再从曲面选择资源分配。Kaplan et al. 2020 建立早期系统规律,Chinchilla 2022 通过新的 isoFLOP 实验改变了 compute-optimal 结论。
单轴规律为何有吸引力¶
Kaplan 等人在固定其他瓶颈的单轴实验中使用
描述非 embedding 参数、数据或 compute-efficient 计算扩大时的 loss。取对数后:
即可做线性拟合。
import torch
def fit_power(x, loss):
design = torch.stack([torch.ones_like(x), -x.log()], dim=1)
intercept, alpha = torch.linalg.lstsq(design, loss.log()).solution
x_c = (intercept / alpha).exp()
return x_c, alpha
x = torch.logspace(2, 6, 12, dtype=torch.float64)
true_x_c, true_alpha = 4e3, 0.27
loss = (true_x_c / x).pow(true_alpha)
x_c, alpha = fit_power(x, loss)
assert torch.allclose(x_c, torch.tensor(true_x_c, dtype=x_c.dtype), atol=1e-8)
assert torch.allclose(alpha, torch.tensor(true_alpha, dtype=alpha.dtype), atol=1e-8)
论文也指出 loss 最终会受非零数据熵限制而趋平,但没有把 \(L_\infty\) 加入这些单轴拟合。若后续研究采用 \(L_\infty+A X^{-\alpha}\),应把它明确标成扩展模型,并拟合或独立估计 \(L_\infty\)。真实实验也不能只看一条无噪声曲线:参数相关、训练未收敛、早停和小模型异常都会影响指数;应报告 bootstrap 或 profile likelihood 区间,并保留 holdout 运行检验外推。
单轴曲线还有 identifiability 边界:改变 \(N\) 时若学习率、batch、训练 token 或宽深比也改变,观测到的斜率会混入优化和架构效应。论文得到的是特定模型族、数据和训练协议下的规律,不是只凭最终 checkpoint 元数据即可恢复的自然常数。
Kaplan 结论为何鼓励更大模型¶
Kaplan 等人的实验与建模认为,在其设置下参数扩展带来的收益较强,compute-efficient training 倾向训练更大模型但不到完全收敛。这一结果与 GPT-3 式规模扩张相互强化:模型参数被视为优先投入方向。
这里的“compute-efficient”是训练目标。模型一旦需要长期服务,参数带来的推理成本并未进入同一优化问题。
Chinchilla 怎样重新测量¶
Chinchilla 用更多模型尺寸和训练 token 组合研究
在 dense Transformer 常用近似 \(C\approx6ND\) 下,固定 \(C\) 意味着参数与数据互相制约。下面直接在一条固定计算曲线上寻找最优点:
def predicted_loss(n, d, e=1.5, a=120.0, b=80.0, alpha=.45, beta=.35):
return e + a / n**alpha + b / d**beta
compute = 6e14
n = torch.logspace(6, 11, 1000, dtype=torch.float64)
d = compute / (6 * n)
curve = predicted_loss(n, d)
i = int(curve.argmin())
assert 0 < i < len(n) - 1
assert curve[i] < curve[0] and curve[i] < curve[-1]
assert torch.allclose(6 * n[i] * d[i], torch.tensor(compute, dtype=n.dtype))
这个最优点完全由示例系数决定。论文中的“约 20 token/parameter”是拟合与实验范围的摘要,不应硬编码进所有训练计划。
Chinchilla 使用三种互相校验的方法:在固定 compute 的 isoFLOP 曲线上寻找最优参数量、拟合参数/数据联合 loss 曲面、以及直接拟合 compute-optimal 参数与 token 的幂律。方法一致比某一个点估计更重要;若最优点总落在实验网格边缘,就只能说明搜索范围不够。
在 \(C\approx6ND\) 和上述联合模型下,内部最优的 scaling exponent 由 \(\alpha,\beta\) 共同决定:
只有二者相近时,参数与数据才近似同步增长。数据质量、重复率或架构改变,会通过新的拟合系数和指数移动这个比例。
70B / 1.4T 说明什么¶
Chinchilla 模型用约 70B 参数和 1.4T token,在报告的任务中与显著更大但训练 token 较少的模型竞争。它支持“许多当时模型在固定训练算力下数据不足”的判断,不支持以下外推:
- 任何 70B 模型都能达到相同质量;
- token 数可以忽略数据质量和重复率;
- MoE 的总参数可直接代入 dense \(6ND\);
- 后训练、多模态 token 与预训练文本 token 完全同质;
- 生命周期推理成本不会改变最优点。
下游任务还会给出不同于 validation loss 的排序。某些能力指标具有阈值、parser 或高方差,不能直接假设服从同一平滑幂律。稳妥做法是用 loss 规划主要训练网格,再把关键下游、校准和安全切片作为独立响应变量。
每次配方变化都在移动曲面¶
现代配方改变了测量条件:更好的数据过滤、重复训练、长上下文阶段、MoE、低精度和多 token prediction 都会移动 loss 曲面。小规模 proxy 的 tokenizer、depth/width ratio 与优化器若不同,也可能不能外推到目标模型。
一个可审计 scaling study 至少需要:
- 预注册 \(N,D,C\) 的精确定义;
- 多个独立 seed 与 holdout 规模点;
- 相同数据分布、架构族和收敛判据;
- 训练 loss、下游能力与生命周期成本分开拟合;
- 置信区间和外推距离;
- 对失败或异常运行不做选择性删除。
如果目标是部署而非一次训练,还要把量化后质量、推理请求量、延迟 SLO 与能耗放入约束。compute-optimal checkpoint 可能不是 latency-optimal checkpoint,更不是总成本最低的模型家族。通用预算口径见缩放与计算,实验网格、置信区间与 stop rule 见缩放实验设计。
Reference¶
Chinchilla 没有公开一套可完整重建论文训练运行的官方训练仓库;第三方拟合脚本不应被写成官方实现。训练数字口径见训练 token,更长的因果脉络见从规模规律到上下文内适应。