章节导航 第 5 章 / 共 16 章
Scaling Laws:大模型的第一性原理
从 Kaplan 到 Chinchilla 到 MoE Scaling——理解并应用 Scaling Laws 指导训练决策
为什么 Scaling Laws 是”第一性原理”
Scaling Laws 不是学术游戏。它们是指导工业界数十亿美元级资源分配决策的核心工具。当你面对一个 $10M 的训练预算时,Scaling Laws 能帮你回答:
- 训多大的模型?
- 用多少数据?
- 训练多少步?
- 选 dense 还是 MoE?
回答这些问题之前,让我们从最基础的数学开始。
Kaplan Scaling Laws (2020)
Kaplan et al. (2020) 首次系统揭示了 loss 与三个变量的幂律关系:
参数量 Scaling
在数据量充足(不是瓶颈)时:
解读:参数量每增加 10 倍,loss 下降约 ,即下降 16%。
数据量 Scaling
在模型足够大(不是瓶颈)时:
解读:数据量每增加 10 倍,loss 下降约 ,即下降 20%。
计算量 Scaling
Kaplan 的关键结论
给定计算预算 ,最优分配策略为:
这意味着 Kaplan 建议把大部分计算预算分配给更大的模型,少量分配给数据。按这个策略,GPT-3 (175B) 只需要 300B tokens 训练数据。
Chinchilla Scaling Laws (2022)
Hoffmann et al. (2022) 的 Chinchilla 论文推翻了 Kaplan 的结论,发现 参数量和数据量应该同步扩展:
具体来说,对于一个计算最优的模型,最优训练 token 数约为参数量的 20 倍:
三种估计方法
Chinchilla 论文用了三种独立的方法得出一致的结论:
- 固定模型大小,变化训练数据:对 400+ 个不同配置的模型做 IsoFLOP 分析
- 固定计算预算,变化模型大小和数据:IsoFLOP profiles
- 直接拟合参数化的 loss 函数:
其中 通过拟合实验数据得到, 是不可约的”熵下界”。
Chinchilla vs GPT-3
| GPT-3 | Chinchilla | |
|---|---|---|
| 参数量 | 175B | 70B |
| 训练数据 | 300B tokens | 1.4T tokens |
| 计算量 | ~3.14e23 FLOPs | ~5.76e23 FLOPs |
| MMLU | 43.9% | 67.5% |
Chinchilla 用更少的参数但更多的数据,在几乎所有 benchmark 上超越了 GPT-3。而且因为模型更小,推理成本也更低。
工业界的反应
Chinchilla 的影响是立竿见影的。后续发布的模型几乎都遵循了”20 倍数据”原则:
| 模型 | 参数量 | 训练数据 | D/N 比 |
|---|---|---|---|
| LLaMA 1 (65B) | 65B | 1.4T | 21.5x |
| LLaMA 2 (70B) | 70B | 2T | 28.6x |
| LLaMA 3 (70B) | 70B | 15T | 214x |
| Mistral 7B | 7B | ~2T | ~285x |
| Qwen 2.5 (72B) | 72B | 18T | 250x |
注意后期模型的 D/N 比远超 20x——这是因为大家发现 over-training(超越 Chinchilla 最优点继续训练)在实际部署中是有利的:虽然 loss 的边际改善变小了,但更小的模型推理更快、更便宜。
超越 Chinchilla:Over-Training
这一节其实对应两篇不同的论文,此前被合并成了一条引用。它们问的不是同一个问题:
其一,Sardana & Frankle (2023, ICML 2024) ——把推理成本算进去之后,最优配方是什么。
Chinchilla 缩放律只优化了训练成本,而一个模型训完之后还要被推理几十亿次。他们把推理需求纳入目标函数后的结论是:预期有相当推理需求(约 10 亿次请求)的场景,应该训练比 Chinchilla 最优更小、更久的模型。这正是上一节那句”虽然 loss 的边际改善变小了,但更小的模型推理更快、更便宜”的理论出处。
他们训练了 47 个模型(150M–6B 参数,tokens/parameter 覆盖 10 到 10,000)来验证公式,并给出一个对本章很重要的阴性结果:没有找到”饱和点”——即使把 tokens/parameter 推到 10,000,模型质量仍在持续改善,不存在”再加数据也不涨了”的那个点。
其二,Gadre et al. (2024) ——over-training 本身是否可靠、下游任务是否同步改善。
这是大规模实证路线:104 个模型(0.011B–6.9B 参数)、三种数据分布,拟合出可在参数量 与 token 乘数 (训练 token 数 / 参数量,即 over-training 比率)两个方向一并外推的缩放律。示意形式可写成:
其中 是 over-training 比率(论文中记作 token multiplier )。
两个对实践最有用的结论:
- over-trained 模型的表现是可预测的:能准确预测 1.4B 参数 / 900B token(即 32× over-trained)的验证 loss,相对误差 0.7%;6.9B / 138B(接近算力最优)同样是 0.7%。
- 下游任务也能预测:通过一条把困惑度与下游性能关联的幂律,可直接预测下游平均 top-1 error,而不必真的训出目标模型。
关于 over-training 倍率的经验分档(此前正文的写法,保留但须带出处限定):
- 2-5x over-training:loss 的额外开销很小,推理成本收益巨大
- 5-10x over-training:仍然有正收益,但边际递减
-
10x over-training:loss 增加明显
实战建议:如果你的目标是部署一个高效的模型,over-training 4-5x 通常是最好的折中。这就是为什么 LLaMA 3 选择用 15T tokens 训练 70B 模型。
⚠️ 两处限定,读这一段时别跳过。 ① 上面三档倍率与”4-5x 折中”是工程经验法则,本轮在两篇论文的摘要与全文中均未逐字核到出处,请勿当作论文结论引用。② “4-5x 折中”与”LLaMA 3 就是这么做的”之间存在口径冲突:按 ~20 tokens/parameter 的算力最优经验值,70B 的 Chinchilla 最优数据量约 1.4T tokens,而 LLaMA 3 70B 用了 15T——对应约 10x 而非 4-5x。读这段时把”4-5x”理解为保守起步档,不要反推成”LLaMA 3 用的就是 4-5x”。
但这一类模型有一个结构性盲区:重复损害是超线性的
上面两篇(以及第四章「数据重复」那一节)共享同一个前提:重复训练只是收益递减,不会变成负收益。2026 年的一篇工作直接推翻了这个前提的形态。
Prescriptive Scaling Laws for Data Constrained Training(Lovelace、Belardi、Kundurthy、Sudhakar、Weinberger,Cornell;COLM 2026)指出:Chinchilla 假设每个训练 token 都是唯一的;而现有的重复扩展——论文点名 Muennighoff et al., 2023——“能建模收益递减,但无法表示 loss 因过拟合而上升的区制”,而且没有捕捉过拟合与模型规模的交互(实践中更大的模型在重复数据上过拟合更快)。
规模与做法:训练 300+ 个模型,覆盖 15M–1B 参数、50M–6B 唯一 token、两档 weight decay、最多 16 个 epoch(重复次数 ),数据用 FineWeb。核心建模是给 Chinchilla 加一项加性过拟合惩罚——重复 token 既有用,也单独产生一项随重复次数增长的损失。
得出的定性结论是超线性:
每多一个 epoch 造成的损害,比上一个 epoch 更大。(论文 Figure 2:观测 loss 与 Chinchilla 预测之间的残差随重复次数呈幂律增长,指数 跨配置共享。)
🔴 建议方向反转(本轮最重要的一处)。
按这篇 law 的推论:超过一个与数据规模相关的阈值之后,继续重复数据是适得其反的,算力应当转投模型容量(更大的模型 + 更少的 epoch)。
这与本章(及第四章)此前依据 Muennighoff 给出的”新增算力要一并加给参数量和 epoch 数,且 epoch 应略微加得更快一些”方向相反。
两条建议的分水岭是你处在哪个区制:
区制 适用建议 依据 数据远小于算力预算,重复会真的过拟合 过阈值后停止加 epoch,算力转投模型容量 arXiv:2605.01640 数据充裕,重复只是凑步数/省推理成本 ”epoch 略微加得更快”仍贴近观测 Muennighoff et al., 2023 / Sardana & Frankle 别把这两条当成”新结论推翻旧结论”——它们是两条不同区制下的曲线,而旧曲线缺少”loss 反而上升”的那一段。
⚠️ 规模限定,必须并置。 该论文的实验上限是 1B 参数 / 6B 唯一 token / 16 epoch,显著小于 Muennighoff 的规模,也远小于任何前沿模型。论文自己在 Limitations 里写明:无法确认拟合出的指数在实际使用的前沿规模上仍然成立,且该形式不涵盖 double descent 等现象。读者不应把这条新结论外推到前沿规模。
对本章方案 B / C 的直接影响:§「计算预算到模型规格」里的 over-training 方案(用重复/多 epoch 换更小的模型)有硬边界——超过阈值后这条路线不是”收益变小”,而是”开始变负”。
MoE 的 Scaling Laws
MoE(Mixture of Experts)带来了新的 scaling 维度。Clark et al. (2022) 和 Krajewski et al. (2024) 研究了 MoE 的 scaling 行为:
有效参数量
对于一个 MoE 模型,定义有效参数量为实际参与每次前向传播的参数量(而非总参数量):
其中 是 top-k 激活数, 是总专家数。
MoE 的 Scaling 效率
经验表明,MoE 模型的 loss 大致遵循:
即增加专家数()可以在不增加推理成本的情况下降低 loss。但收益是对数级的——从 8 个专家到 16 个专家的提升远大于从 128 到 256 的提升。
DeepSeek V3 技术报告 中的 MoE 配置(256 专家,top-8 激活)在效率和质量之间达到了很好的平衡。
两个维度的交叉:数据不够时,稀疏度该怎么选?
上面讲的稀疏 scaling 默认了一个前提——数据是够的,稀疏只是省算手段。但本章前面(以及第四章)讨论的重复训练,用的是稠密模型的结论。这两个维度此前从未交叉过。
When Data Is Scarce: Scaling Sparse Language Models with Repeated Training(ICML 2026,2026-05-31,9 位作者)做的正是这个交叉,给出两条结论:
- 稀疏化会推迟数据饱和。 在数据受限、必须重复训练的场景下,稀疏模型比稠密模型更晚触及数据饱和点——同样的数据,稀疏模型能撑更久。
- 存在两个不同的最优稀疏度。 在固定数据量下,使 loss 最优的稀疏度约为 50%(论文原文:loss-optimal sparsity is moderate);而使计算效率最优的稀疏度更高,且随数据规模上升而上升。
工程含义(这一节真正有价值的部分):“最优稀疏度”不是一个常数。 它取决于你的目标是压 loss 还是压算力,而且随着训练数据规模变化而漂移。这给本章”架构感知 Scaling”补上了一个动态维度——稀疏度不再只是一次性的架构选择,而是一个随数据预算漂移的最优值。
对读者的直接推论:如果你的数据受限、准备用重复训练来凑步数,那么在选稀疏度时不要照抄”别人家的 50%“——那个数字是 loss 最优解,而你的实际目标很可能是算力最优,且你的数据规模和对方不同。
⚠️ 引用边界:两条结论已核到论文摘要原文,但均为论文自报,截至 2026-09-24 无独立复现;实验的规模区间与模型族本轮未逐项核对,写入时只用了定性结论与”约 50%“这一个数字。
架构感知 Scaling Law
至此我们讨论的 Scaling Laws 都隐含一个假设:架构是固定的。FLOPs 计算和预算分配假设固定的 hidden size、MLP/Attention 参数分配比例和 GQA 配置。但架构选择本身是否应该成为 Scaling Law 的优化变量?
条件 Scaling Law
条件 Scaling Law(ICLR 2026)将隐藏维度、MLP/Attention 参数分配比例、GQA 配置等架构因素纳入 Scaling Law 公式。核心洞察:架构选择是 Scaling Law 的优化变量而非固定前提。
实验表明,通过条件 Scaling Law 优化架构后,在同一训练预算下比 LLaMA-3.2 架构精度高 2.1%、推理吞吐量高 42%——这不仅仅是”更好的拟合”,而是用 Scaling Law 指导架构设计本身。
MoE Holistic Scaling Laws
MoE Holistic Scaling Laws 提出了 FLOPs/token + 激活参数 + 总参数 三约束联合框架,将 16 维 MoE 架构搜索空间降维为两个连续低维阶段,使 MoE 架构优化变得可操作。
一个重要发现:近最优配置带随规模扩大而变宽——这意味着在实践中,MoE 架构的选择有一定的容错空间,不必精确搜索到唯一最优点。
Dense + MoE 统一 Scaling Law
Dense + Sparse 统一 Scaling Law 消除了本章之前将 dense 和 MoE 的 Scaling Law 分开讨论的割裂。该框架可估计给定稀疏度下的最优模型超参,也可识别给定超参下的最优稀疏度,在 DeepSeek-V3 上通过 IsoFLOP 比较验证。
Efficiency Leverage (EL):MoE 计算优势的定量标尺
Tian et al. (ICLR 2026) 提出了 Efficiency Leverage (EL) 指标,将 MoE 的计算优势量化为单一数字:
论文全名 Towards Greater Leverage: Scaling Laws for Efficient Mixture-of-Experts Language Models,作者为 Changxin Tian、Kunlong Chen、Jia Liu、Ziqi Liu、Zhiqiang Zhang、Jun Zhou(ICLR 2026)。
核心发现:
- EL 由两个主因子驱动:专家激活率 和总算力预算 ,遵循幂律关系
- 专家粒度 为非线性调节器:训练损失随粒度呈 U 形(多项式)关系,过大(专家太少、每个太宽)或过小(专家太多、每个太窄)都抬高损失。论文实测最优粒度稳定落在 12 附近,可作为架构设计的可靠启发式;且路由均衡性会移动这个最优点——路由越不均衡,最优粒度越偏向粗粒度,整体性能也随之劣化
- 实证验证:300+ 模型(最高 28B 参数)训练中,MoE-mini(0.85B 激活参数)匹配 6.1B dense 模型性能,——即 7 倍计算节省
两条容易被忽略的落地结论:
- EL 随算力预算放大。论文 IsoFLOPs 曲线显示,更高的算力预算与更低的激活率同时抬高 EL。这意味着”小预算下 MoE 不划算”的直觉在大预算下不成立——MoE 相对 dense 的优势会被规模放大。
- 越稀疏越好,且已测范围内未出现拐点。在激活率 0.8%–100% 的测试区间内,损失随激活率降低单调下降,最低的 0.8% 始终取得最小损失,作者未观测到”稀疏过头开始伤效率”的拐点。注意这是已测范围内的结论,不保证继续外推到更低激活率仍成立。
工程附注——对照实验的公平性前提:论文在建立公平基线时发现,MoE 通常比 dense 偏好显著更大的 batch size(大算力下还伴随略低的学习率,拟合结果为 )。原因是 MoE 的稀疏性:反向传播时每个专家只用批次中的一部分 token 更新,而 dense 参数接收整个批次的梯度。做 MoE 与 dense 的对比实验时若沿用 dense 的 batch size,会系统性低估 MoE 的表现。
实用价值:给定预算和目标 EL,可直接计算最优 MoE 配置(专家数、激活数、专家粒度),为 MoE 架构设计提供定量工具。与 Holistic Scaling Laws 的”近最优配置带”结论一致:EL 最优范围有一定宽度,不必精确搜索到唯一最优点。
核心洞察:当架构本身成为优化变量,Scaling Laws 的指导范围从”给定架构分配预算”扩展到”联合优化架构和预算”。条件 Scaling Law 证明,即使不增加计算预算,仅优化架构就能获得显著的性能和效率提升。
Scaling Laws 的实际应用
FLOPs 计算公式
训练一个 Transformer 模型的总 FLOPs 可以用以下公式精确估算:
其中因子 6 的来源:前向传播约 FLOPs(每个 token 经过所有参数的矩阵乘法),反向传播约 FLOPs(梯度计算约为前向的 2 倍),合计 。
注意:这个公式忽略了 Embedding 层、LayerNorm、激活函数等开销,但对于大模型来说,这些不到总计算量的 5%。
更精确的逐层计算:
def estimate_flops_per_token(
num_layers: int,
hidden_size: int,
ffn_hidden_size: int,
num_heads: int,
num_kv_heads: int,
vocab_size: int,
seq_len: int,
) -> int:
"""估算每个 token 的前向 FLOPs(乘 3 得到训练 FLOPs)"""
# Attention: QKV 投影 + Output 投影
qkv_flops = 2 * hidden_size * (hidden_size + 2 * (hidden_size // num_heads) * num_kv_heads)
attn_output_flops = 2 * hidden_size * hidden_size
# Attention 矩阵计算 (QK^T + softmax @ V)
attn_compute_flops = 2 * 2 * seq_len * hidden_size # 近似
# FFN (SwiGLU: 3 个矩阵)
ffn_flops = 2 * 3 * hidden_size * ffn_hidden_size
# 每层总计
per_layer = qkv_flops + attn_output_flops + attn_compute_flops + ffn_flops
# 所有层 + Embedding + LM Head
total = num_layers * per_layer + 2 * 2 * vocab_size * hidden_size
return total
# LLaMA 3 70B 的配置
flops_per_token = estimate_flops_per_token(
num_layers=80, hidden_size=8192, ffn_hidden_size=28672,
num_heads=64, num_kv_heads=8, vocab_size=128256, seq_len=8192
)
print(f"每 token 前向 FLOPs: {flops_per_token / 1e9:.1f} GFLOPs")
print(f"每 token 训练 FLOPs: {flops_per_token * 3 / 1e9:.1f} GFLOPs")
# → 每 token 前向 FLOPs: ~140 GFLOPs
# → 每 token 训练 FLOPs: ~420 GFLOPs
从预算到方案:GPU 时间计算
将 FLOPs 翻译成需要多少 GPU、训练多少天:
其中 MFU (Model FLOPs Utilization) 是实际计算效率,典型值 35-50%。
def training_plan(
params_B: float, # 参数量(十亿)
tokens_T: float, # 训练数据量(万亿 tokens)
gpu_type: str = "H100", # GPU 型号
num_gpus: int = 256, # GPU 数量
mfu: float = 0.40, # MFU
):
"""计算训练计划"""
gpu_specs = {
"H100": {"bf16_tflops": 990, "price_per_hour": 3.0},
"A100": {"bf16_tflops": 312, "price_per_hour": 1.5},
"H200": {"bf16_tflops": 990, "price_per_hour": 4.0}, # HBM 更大
}
spec = gpu_specs[gpu_type]
# 总 FLOPs
total_flops = 6 * params_B * 1e9 * tokens_T * 1e12
# 有效算力
effective_flops_per_sec = num_gpus * spec["bf16_tflops"] * 1e12 * mfu
# 训练时间
seconds = total_flops / effective_flops_per_sec
days = seconds / 86400
# 成本
gpu_hours = num_gpus * seconds / 3600
cost = gpu_hours * spec["price_per_hour"]
return {
"total_flops": f"{total_flops:.2e}",
"days": f"{days:.1f}",
"gpu_hours": f"{gpu_hours:,.0f}",
"cost_usd": f"${cost:,.0f}",
}
# 案例:用 256 张 H100 训练 7B 模型
plan = training_plan(params_B=7, tokens_T=2, num_gpus=256)
# → 约 8.3 天, ~51K GPU-hours, ~$153K
# 案例:用 2048 张 H100 训练 70B 模型
plan = training_plan(params_B=70, tokens_T=15, num_gpus=2048)
# → 约 31 天, ~1.5M GPU-hours, ~$4.6M
训练预算阶梯:从 $10K 到 $100M
不同预算级别应该怎么分配?以下是一个实用的阶梯式指南:
| 预算 | 算力(H100-hours) | 推荐配置 | 预期效果 |
|---|---|---|---|
| $10K | ~3K | 1.3B, 50B tokens, 8×H100×2天 | 验证数据管线和训练代码 |
| $50K | ~17K | 3B, 200B tokens, 32×H100×3天 | 领域特定的基础模型 |
| $200K | ~67K | 7B, 1T tokens, 128×H100×4天 | 可用的通用模型 |
| $1M | ~333K | 13B, 3T tokens, 256×H100×8天 | 有竞争力的开源模型 |
| $5M | ~1.7M | 30B, 5T tokens, 512×H100×20天 | 接近商业水平 |
| $20M | ~6.7M | 70B, 15T tokens, 2048×H100×25天 | 前沿水平 |
| $100M+ | ~33M+ | 200B+ / MoE 600B+, 20T+ tokens | Frontier 模型 |
实战建议:先用总预算的 5-10% 做 Scaling Laws 实验(训练 3-5 个小模型),拟合参数后再决定最终方案。这笔”保险费”可以避免后续数千万美元的浪费。
计算预算到模型规格
给定计算预算 ,Chinchilla-optimal 分配:
注:此公式假设训练数据质量处于 Chinchilla 原始实验水平。如果通过数据策展提升了质量(),有效数据量 增大, 可相应调小——即高质量数据允许训练更小但更高效的模型。
详细案例:你有 FLOPs 的预算(约 $200K,128×H100 4 天)。
方案 A:Chinchilla-optimal
- tokens
- 推理时需要 ~18GB 显存(BF16),单卡可跑
- 训练时间:
方案 B:Over-training 5x(更小模型更多数据)
- tokens
- 推理时只需 ~6GB 显存,手机都能跑
- 训练时间:~2.2 天(算力相同,只是分配不同)
方案 C:MoE(同预算做更大的模型)
- 总参数 ,激活参数 (8 专家 top-2)
- tokens
- 推理成本接近方案 B(只激活 3B),质量接近方案 A
这三种方案花费完全相同,但产物完全不同。Scaling Laws 的核心价值就是帮你在这些方案间做出最优选择。
Loss 到 Downstream Performance
一个关键问题是:loss 降低了,下游任务一定变好吗?
Wei et al. (2022) 研究了”涌现能力”(emergent abilities),发现某些任务在 loss 下降到某个阈值后会突然”涌现”。但 Schaeffer et al. (2023) 后来证明这种”突然涌现”部分是评估指标选择的产物——用连续指标(如 Brier score)评估时,能力是逐渐提升的。
建立 Loss-Performance 映射
实践中最有价值的做法是,在训练过程中定期评估,建立你自己的 loss ↔ downstream performance 映射:
# 伪代码:训练中的定期评估
eval_results = []
for step in range(total_steps):
loss = train_step(batch)
if step % eval_interval == 0:
metrics = {
"step": step,
"loss": loss,
"mmlu": evaluate(model, "mmlu"),
"gsm8k": evaluate(model, "gsm8k"),
"humaneval": evaluate(model, "humaneval"),
}
eval_results.append(metrics)
# 拟合 loss → performance 的关系
# 通常是 sigmoid:performance = a / (1 + exp(-b * (loss_threshold - loss)))
fit_scaling_curve(eval_results)
# 外推:预测 loss 继续下降后 performance 会到多少
predicted_final = extrapolate(eval_results, target_loss=2.5)
print(f"Step {step}: loss={loss:.4f}, MMLU={metrics['mmlu']:.1f}%")
print(f" 预测最终 MMLU: {predicted_final['mmlu']:.1f}%")
实用建议:不要只盯 loss。在训练过程中定期在目标任务上做 eval,建立 loss-performance 的映射关系。这条映射关系对于决定何时停止训练至关重要。
直接下游指标 Scaling
上述实践方法采用两阶段策略:先预测 loss,再将 loss 映射到下游指标。但两阶段方法有一个根本局限——复合误差:loss 预测的误差与 loss→performance 映射的误差会乘积式累积。
Apple 的直接下游指标 Scaling 框架提出了绕过 loss 的替代路径:对固定的 token/参数比(),log accuracy 随计算预算呈简单幂律:
这意味着可以直接从计算预算预测下游指标,而无需经过 loss 这个中间步骤。在 17B 参数 / 350B tokens 规模上的验证表明,直接预测的外推可靠性优于两阶段方法。
注意:该框架目前仅在 17B/350B tokens 规模验证,更大规模的适用性尚待确认。但概念上,它揭示了”先预测 loss 再映射”这一广泛实践可能不是最优路径。
小模型预测大模型
Scaling Laws 最强大的应用是用小模型预测大模型的行为。
实战流程
Step 1: 训练小模型系列
100M (1B tokens) → 2 GPU-hours
300M (3B tokens) → 10 GPU-hours
1B (10B tokens) → 80 GPU-hours
3B (30B tokens) → 400 GPU-hours
总计 ~492 GPU-hours (~$1.5K)
Step 2: 收集数据点
(N=100M, D=1B, loss=3.42)
(N=300M, D=3B, loss=3.05)
(N=1B, D=10B, loss=2.78)
(N=3B, D=30B, loss=2.55)
Step 3: 拟合 Scaling Law 参数
L(N, D) = A/N^α + B/D^β + E
Step 4: 外推预测
→ 70B + 15T tokens: 预测 loss ≈ 1.82
→ 实际训练后: loss = 1.85 (误差 ~1.6%)
拟合代码
import numpy as np
from scipy.optimize import curve_fit
def scaling_law(X, A, alpha, B, beta, E):
"""Chinchilla 风格的参数化 loss 函数"""
N, D = X
return A / np.power(N, alpha) + B / np.power(D, beta) + E
# 实验数据:(参数量, 数据量, loss)
data = [
(1e8, 1e9, 3.42),
(3e8, 3e9, 3.05),
(1e9, 1e10, 2.78),
(3e9, 3e10, 2.55),
]
N_vals = np.array([d[0] for d in data])
D_vals = np.array([d[1] for d in data])
L_vals = np.array([d[2] for d in data])
# 拟合
popt, pcov = curve_fit(
scaling_law, (N_vals, D_vals), L_vals,
p0=[1e2, 0.1, 1e2, 0.1, 1.5], # 初始猜测
bounds=([0, 0, 0, 0, 0], [1e5, 1.0, 1e5, 1.0, 5.0]),
maxfev=10000,
)
A, alpha, B, beta, E = popt
print(f"拟合结果: A={A:.2f}, α={alpha:.4f}, B={B:.2f}, β={beta:.4f}, E={E:.4f}")
# 外推预测 70B + 15T tokens
predicted_loss = scaling_law((70e9, 15e12), *popt)
print(f"预测 70B/15T loss: {predicted_loss:.4f}")
Gadre et al. (2024) 展示了这条路线的成本优势有多极端:预测一个 1.4B 参数 / 900B token(32× over-trained)的训练结果,所用实验的算力只有最终那次训练的 1/300;预测下游平均 top-1 error 只需 1/20 的算力。
⚠️ 原写”1% 的计算成本”已替换为论文原文的精确口径。 论文的实际表述是 “experiments that take 300× less compute”(loss 预测)与 “20× less compute”(下游 top-1 error 预测)——1/300 ≈ 0.33%,与”1%“属同一量级但并非原文数字。
Farseer:超越 Chinchilla 的精细化 Scaling Law
Chinchilla 风格的参数化拟合虽然广泛应用,但外推精度受限于简单的参数化形式。Farseer(Predictable Scale: Part II,NeurIPS 2025 Spotlight)通过系统构建模型 loss 面 ,将外推误差降低了 433%。
“降低 433%“的准确含义:这个数字出自 Farseer 论文原文,指的是相对误差的倍数关系,而不是把误差削减了 4.33 倍——误差不可能被”降低”超过 100%。在一组远超出标定区域的外推目标上,Farseer 的平均相对误差为 0.50%,Chinchilla Scaling Law 为 2.68%,后者比前者高 433%,即 Chinchilla 的误差约为 Farseer 的 5.3 倍(Farseer 误差约为 Chinchilla 的 1/5.3)。代表性验证点是 25.1B 模型,其规模超出最大标定规模一个数量级以上,Farseer 预测的相对误差仅 0.47%(其余验证点在 0.26%–0.72% 之间)。
关键改进:Farseer 的核心在于不再使用简单的参数化公式 ,而是通过系统训练约 1000 个 LLM(消耗约 300 万 H100 GPU 小时)来构建更精细的 loss 面模型,捕获 Chinchilla 公式无法表达的非线性交互效应。
Farseer 已全面开源代码、数据和模型。在实战流程中,Farseer 可作为 Chinchilla 参数拟合的推荐替代方案——当你需要高精度外推(如从 3B 预测 70B+ 模型表现)时,Farseer 的优势尤为显著。
PLES:预算有限时该优先跑哪些配置
Chinchilla 参数拟合与 Farseer 解决的是”用什么公式拟合”。还有另一层问题本章尚未涉及:给定有限的实验预算,应该优先跑哪些配置?这正是上文”先用总预算的 5-10% 做 Scaling Laws 实验”那条建议的执行细节。
PLES(Power-Law Entropy Search,arXiv:2609.01431,2026-09)给出一个成本感知的答案。它是建立在多保真贝叶斯优化之上的采集函数,关键创新在于其优化目标不是某个单一目标函数,而是选择能最大程度降低 Scaling Law 估计整体不确定性的候选配置(每单位计算成本)——因此天然偏好”便宜但信息量大”的小规模实验。论文在合成基准、拟合真实 LLM 训练数据的代理模型、以及真实 LLM 预训练 run 三类设置下均验证:PLES 能用不到传统网格搜索 1/10 的计算预算收敛到准确的最优超参 Scaling Law。
⚠️ 成熟度提示:该论文 2026-09-01 才上线,尚无独立复现与社区采纳证据,请定位为”值得关注的新方法”而非”已被验证的既定方案”。它与 Farseer 并不冲突——Farseer 改进拟合公式,PLES 改进采样策略,两者可叠加。
拟合误差小 ≠ 推荐的配置对:给 Scaling Law 加一道”处方性验证”
上面两条(Farseer、PLES)给出的都是拟合精度层面的改进——外推误差从 2.68% 降到 0.50%,或者用 1/10 预算收敛到同样的 law。但本章此前缺了另一层验证:外推出来的配置建议,本身有没有被证明是对的?
这两件事并不等价。一条 law 可以在拟合误差上胜出,却仍然推荐出错误的配置——因为拟合误差是在已跑过的点上衡量的,而配置建议是要拿到没跑过的区域去用的。
一个可直接引用的范式来自 arXiv:2605.01640(COLM 2026):作者不只比拟合误差,而是按每一种 law 各自推荐的配置真的各训一遍,再比较 perplexity 与下游评测。结果是它自己的 law 推荐的配置(更大的模型 + 更少的 epoch)在困惑度与下游评测上都取得最强性能。这种”按 law 的建议去训一遍”的做法在论文里被称为 prescriptive validation。
落到实操:本章已有的建议是”先用总预算的 5-10% 做 Scaling Laws 实验”。这条之后应当再加一步——从这 5-10% 里再留出一部分,按拟合出的 law 所推荐的配置真的训一次,用来验证 law 本身,而不只是看它的拟合残差。这一步花的钱不多,但它区分了”这条 law 描述过去很准”和”这条 law 指路指得对”。
数据质量对 Scaling Laws 的影响
一个经常被忽视的事实:Scaling Laws 的参数取决于数据质量。
FineWeb 论文 的实验表明,在高质量数据上拟合的 Scaling Laws 曲线比低质量数据下降更快——也就是说,好数据让每一个 FLOP 都更有价值。
| 数据质量 | 有效 | 含义 |
|---|---|---|
| 未过滤 Common Crawl | ~0.07 | 数据量翻倍,loss 降 5% |
| Gopher 规则过滤 | ~0.09 | 数据量翻倍,loss 降 6.2% |
| FineWeb-Edu 质量过滤 | ~0.12 | 数据量翻倍,loss 降 8.3% |
核心洞察:在做 Scaling Laws 实验时,一定要用最终训练会用到的数据做拟合。用低质量数据拟合出来的 Scaling Laws 去指导高质量数据的训练,预测会偏悲观——实际效果比预测的好。
这也解释了为什么很多团队投入大量资源在数据质量上:提升数据质量本质上是在改变 Scaling Laws 的斜率,让同样的计算预算产出更好的模型。
质量感知 Scaling Law
ICLR 2026 论文(OpenReview)将上述定性观察升级为可操作的数学框架,首次引入显式的无量纲数据质量参数 :
其中 调制数据量 的有效性。直觉很清晰: 是有效数据量——同样 1T tokens, 的高质量数据等效于 低质量数据的约 2.67 倍。
的操作定义:可通过 FineWeb-Edu 分类器评分、DSIR 重要性权重、或基于小模型困惑度的数据选择得分来近似估计。
实践含义:给定计算预算 ,最优分配现在需要同时优化三个维度——(模型大小)、(数据量)和 (数据质量,通过投资数据过滤来提升)。在部分场景下,将预算从”训更多数据”转移到”提升数据质量”可能更高效。
数据量的物理天花板
随着前沿模型训练数据规模不断攀升,一个自然的问题浮出水面:互联网上还有多少高质量文本可用?
据 Epoch AI 估算,经过去重和质量过滤后,互联网文本总量约 40-60T 高质量 tokens。多数前沿模型(LLaMA 3 15T、Qwen 2.5 18T)的训练数据已接近这一量级的三分之一到一半。传统”增加 “的 Scaling 路径正在逼近物理上限。
应对这一天花板的三条替代路径:
- 提升 (数据策展):上述质量感知 Scaling Law 指明的方向——同等数据量下提升质量可以等效增加有效
- 合成数据扩充:通过 LLM 生成高质量的训练数据(详见第十七章),可能延长数据量跑道
- Test-Time Compute Scaling:将计算投资从训练转移到推理(下一节详述),绕过训练数据量的限制
还有第四条,而且是最常用的那条:把”过拟合”单独建出来。
上面三条里并没有”数据不够时,重复训练该怎么建模”这一项——但现实中它恰恰是最先被采用的办法。前面 §「超越 Chinchilla:Over-Training」补的超线性损害给出的是定性结论;这一节讲的是它的形式,以及形式带来的一个意外好处。
Prescriptive Scaling Laws for Data Constrained Training(COLM 2026)的做法是给 Chinchilla 加一项加性过拟合惩罚:重复 token 既当作有用数据计入,同时单独产生一项随重复次数增长、也随”模型容量相对唯一数据量”增长的惩罚。作者用 1 参数 / 2 参数 / 4 参数三个复杂度档画了拟合质量对复杂度的 Pareto 前沿,即便只用单参数形式,也在自己的数据与 Muennighoff 的数据上大幅优于先前的数据受限 scaling law。
这条设计最实用的性质不在拟合精度,而在可比较性:
因为过拟合被孤立成一个系数,这个系数本身就是”某个训练配置对重复的鲁棒性”指标,可以跨训练配置直接比较。
给读者的用法是:与其争论”几个 epoch 合适”,不如拟合出这个系数,用它比较不同配置。论文给的现成比较结果:
| 配置 | 过拟合系数 |
|---|---|
| 标准 weight decay | 基准 |
| 强 weight decay | 降低约 70% |
论文据此为”数据受限区制下最优 weight decay 比标准做法高一个数量级”这一近期发现提供了 scaling-law 层面的解释,并用自己的 law 预测了”强正则化反超标准设置”的算力预算点。
⚠️ 措辞边界:上表是论文实测的 与 两档对照,不是”最优值就是 1.0”。论文并未扫遍 取值;“高一个数量级”是它对近期其他发现的解释。第六章的 AdamW 超参数表仍以 为通用默认,并已加数据受限区制的指向性限定。
与本章已有的 Farseer / PLES 不冲突,三者补的不是同一层:Farseer 改进拟合公式,PLES 改进采样策略,本条补的是数据受限这一区制本身——前两者默认”数据是够的”。
Test-Time Compute Scaling:推理时的新 Scaling Law
2024-2026 年,Scaling Laws 的版图发生了根本性扩展——从”训练时堆算力”走向”推理时堆算力”。
核心发现
传统 Scaling Laws 只考虑训练计算量 。但推理模型(reasoning models,如 o1、DeepSeek R1)通过在推理时生成更多的思考 token(reasoning tokens),获得了显著的性能提升。这催生了推理时 Scaling Laws:
其中 是推理时的计算量(如采样次数、思考深度)。Snell et al. (2024) 首次系统验证了这种关系的存在。
Train-to-Test (T2) Scaling Laws
T2 Scaling Laws(2026)将训练和推理计算统一到一个框架中:给定端到端总预算 ,联合优化模型大小、训练数据量和推理采样次数。
关键发现:
- 过度训练小模型 + 多次采样 可以优于刚好训练的大模型
- 在固定总预算下,最优策略不再是简单的 Chinchilla 配方
- 推理计算的”价格”远低于训练计算——同样的 FLOP 花在推理采样上往往更值
实践意义
| 场景 | 传统策略 | Test-Time Scaling 策略 |
|---|---|---|
| 数学竞赛 | 训练更大模型 | 中等模型 + best-of-N 采样 |
| 代码生成 | 增加代码数据比例 | RL 训练推理能力 + 多次尝试 |
| 复杂推理 | 扩大参数量 | 更长的思考链 + 验证 |
核心洞察:Scaling Laws 不再是一维的。资源分配的最优解现在需要同时考虑模型大小、训练数据量和推理时计算量三个维度。对于可验证的任务(数学、代码、逻辑),投资推理时计算的 ROI 可能远高于增加训练预算。
最新实践深化
2026 年上半年的实践进一步丰富了 Test-Time Compute Scaling 的理解:
训练-推理计算可替代但非 1:1。推理效率更高的原因在于按需分配:难题多算、简单题少算,而训练计算对每个样本一视同仁。实测中,7B 推理模型可以超越 70B 非推理模型——10x 参数差距被推理时计算弥补。
三种实践策略已形成明确分工:
| 策略 | 原理 | 适用场景 |
|---|---|---|
| 自适应提前退出 | 浅层即可回答简单问题,无需跑完整个网络 | 延迟敏感型应用 |
| 动态采样 | 根据置信度决定采样次数,高置信度早停 | 可验证任务(数学/代码) |
| 混合策略 | 并行采样 + 迭代改进,交叉点取决于任务难度和模型质量 | 开放式生成 |
经济学意义:推理计算边际成本递增(每次额外采样收益递减),训练计算一次性摊销。最优策略取决于部署场景的请求量分布——高频简单查询场景倾向”小模型+提前退出”,低频复杂推理场景倾向”大模型+深度推理”。
下一章预告:有了 Scaling Laws 的理论指导,第六章我们将进入预训练的实战——学习率调度、batch size 选择、数据配比、loss spike 处理等训练配方的方方面面。