Llama 3 的 8B 模型看了超过 15T token,平均每个参数约 1900 个 token,几乎是 Chinchilla 那个 20 的一百倍。这不是算错了:Chinchilla 回答的是“训练算力固定时怎样让 loss 最低”,而一个要上线的模型,总账里还有推理,还要看手里到底有多少不重复的数据。把推理 token 算进总 FLOPs,最优点就往“更小的模型、更多的数据”移,推理量越大移得越远。数据不够时,同一份数据重复 4 遍左右几乎和新数据一样,十几遍以后收益迅速变小。这些结论同样来自拟合;到了每参数上千个 token 的区间,曲线会高估多给数据的好处。

待审核草稿。 这一篇还没有经过站主审阅,事实、取舍和措辞都可能修改;引用前请回到文中链接的一手资料核对。

把推理也算进总账

LLaMA 1 的作者(Touvron 等,2023-02)在引言里写得很直接:给定目标效果,该选的不是训练最快的模型,而是推理最快的模型;他们还观察到 7B 模型训过 1T token 之后性能仍在提升(arXiv)。

Sardana 等(2023-12,ICML 2024)把这件事写成一个优化问题。固定目标 loss $\ell$,最小化训练加推理的总 FLOPs:

$$ \min_{N,\,D_{\rm tr}}\;6ND_{\rm tr}+2ND_{\rm inf}\qquad\text{s.t.}\quad L(N,D_{\rm tr})=\ell . $$

$D_{\rm tr}$ 是训练 token,$D_{\rm inf}$ 是模型整个服务期内要处理的推理 token,每个推理 token 只做前向,记 $2N$。$D_{\rm inf}=0$ 时退回 Chinchilla 的问题(反过来写:固定 loss 求最省的算力);$D_{\rm inf}$ 越大,模型每大一点,推理那一项就贵一截。这个问题没有闭式解,要数值求。

接着上一篇的例子算一次

沿用上一篇的教学曲面(Besiroglu 等对 Chinchilla 数据的重拟)。目标 loss 定为 $10^{22}$ FLOPs 算力最优模型(约 90 亿参数、1840 亿 token)的 loss,改变服务期内的推理量,对每一行数值求最省总账的 $N$。表里全是这条曲面上的教学数字,不是实测:

推理 token $D_{\rm inf}$ 最优 $N$ 训练 token $D/N$ 训练 FLOPs 总 FLOPs 总账比 Chinchilla 最优模型省
0 90 亿 1840 亿 20 $1.00\times10^{22}$ $1.00\times10^{22}$ 0
$10^{11}$ 75 亿 2250 亿 30 $1.01\times10^{22}$ $1.16\times10^{22}$ 1.5%
$10^{12}$ 46 亿 4470 亿 97 $1.24\times10^{22}$ $2.16\times10^{22}$ 23%
$10^{13}$ 28 亿 1.49T 536 $2.48\times10^{22}$ $8.03\times10^{22}$ 58%
$10^{14}$ 20 亿 6.41T 3211 $7.68\times10^{22}$ $4.76\times10^{23}$ 74%

$10^{12}$ 个推理 token 并不夸张:每天 100 万次请求、每次 1000 个 token,跑 1000 天就是这个量。这时最优模型只有 Chinchilla 答案的一半大,训练多花 24% 的算力,换来总账省 23%。表的后两行已经在曲面之外:下一节会看到,每参数几百上千个 token 时真实 loss 比这条曲面预测的高,所以 58% 和 74% 是偏乐观的上限。

Sardana 等用原版 Chinchilla 系数($\alpha=0.336$、$\beta=0.283$)报告:要达到 Chinchilla 式 30B 模型的效果、服务 $10^{13}$ 个推理 token 时,最优是 13.6B 参数、2.84 倍数据,总 FLOPs 少 28%(我们用他们的系数复算得到同样的数字)。他们还把 FLOPs 换成美元:训练和处理 prompt 按 50% 的模型浮点利用率(MFU)算,逐 token 生成只按 1% MFU 算,结果更偏向小模型。生成阶段为什么利用率低,见性能。

推理时多花算力还有另一种用法:让模型在回答时多想。测试时计算那一篇里,Snell 等用同样的 $6N$/$2N$ 记账比较“放大预训练(pre-training)”和“推理时多采样”,结论依赖题目难度和推理负载,两者不能 1:1 互换。

训练远超 20 以后,loss 还降吗

还在降,但比公式说的慢。Sardana 等训了 47 个模型,把 1.5 亿参数的模型一路训到每参数 10,000 个 token,loss 没有停;更大的模型测到每参数 1000 个 token(25 亿参数的测到 500),也没有变平。但只用常规比例(每参数 100 个以下)的点拟合出的曲线,会高估极端比例下多给数据的收益;把极端比例的点加进去重拟,拟合出的曲线明显变平。他们还发现,几条参数化曲线都拟合不好那个 1.5 亿参数模型的长训练结果。

Gadre 等(2024-03)专门测“过度训练”能不能外推。他们训了 104 个 0.011B 到 6.9B 的模型、用三种数据分布,以约 300 倍更少的算力拟合,预测了 1.4B 模型训 900B token(相对算力最优多 32 倍数据)和 6.9B 模型训 138B token(算力最优)的验证 loss;再拟合一条从困惑度(perplexity)到下游平均错误率的幂律,用约 20 倍更少的算力预测下游误差。

两件事合起来看:过度训练是可以预测的,但最好在接近目标比例的地方拟合,不要从每参数 20 个 token 一路外推到 2000 个。

数据不够:同一份数据能重复几遍

把上一篇的 90 亿参数模型换个处境:手里只有 1000 亿个不重复 token,却要训 1840 亿。重复的部分值多少?

Muennighoff 等(2023-05)做了 400 次训练(最大 9B 参数、900B token),把重复的数据折算成“有效数据量”:

$$ D'=U_D+U_DR_D^{*}\left(1-e^{-R_D/R_D^{*}}\right). $$

$U_D$ 是不重复的 token 数,$R_D$ 是第一遍之外又重复的遍数(训 4 个 epoch 时 $R_D=3$),$R_D^{*}\approx15.4$ 是拟合出的衰减常数。每多一遍,带来的有效数据按 $e^{-R_D/R_D^{*}}$ 递减;遍数趋于无穷时 $D'\to U_D(1+R_D^{*})$,最多相当于约 16.4 份新数据。

取 $U_D=1000$ 亿:

epoch 数 实际训练 token 有效数据 $D'$ 有效 / 实际
1 1000 亿 1000 亿 1.00
2 2000 亿 1968 亿 0.98
4 4000 亿 3726 亿 0.93
16 1.6T 1.06T 0.66
40 4T 1.52T 0.38

第 2 遍约值 0.97 遍新数据,第 5 遍约 0.80 遍,第 16 遍只剩约 0.39 遍。论文的结论是:固定算力下重复最多约 4 遍,loss 和全用新数据几乎一样(8.7B 模型训 4 个 epoch,最终验证 loss 只比 1 个 epoch 高约 0.5%);再往上,加算力的价值逐渐降到接近零,训 44 个 epoch 的模型甚至出现训练中途 loss 回升。回到例子:1840 亿 token 是 1.84 遍,有效约 1820 亿,几乎不亏。

他们还拟合了“多余参数”的衰减常数 $R_N^{*}\approx5.3$,比 $R_D^{*}$ 小:多出来的参数贬值得比重复的数据更快。所以数据受限时,多出来的算力花在多跑几遍上,比花在加大模型上划算,最优模型比 Chinchilla 建议的更小、训练遍数更多。

实际的配方本来就有重复。Chinchilla 训练集里 Wikipedia 跑了 3.4 遍、MassiveWeb 1.24 遍(附录表 A1);LLaMA 1 的 Wikipedia 跑了 2.45 遍、Books 2.23 遍(表 1)。按数据源过采样的记账方法见预训练流程。

现在的开源模型实际怎么配

下表只列有官方报告或模型卡的数字,按所引报告或模型卡的公开月份排列(权重有时更早发布),截至 2026 年 10 月。“每参数 token”是我们用表里的数字相除得到的:报告给了参数量就用报告的数(LLaMA 1 的 6.7B),否则按型号名里的标称值(例如 Qwen3-8B 实际约 8.2B,按 8B 算);混合专家(MoE)模型按激活参数算,DeepSeek-V3 另给出按总参数的值。

模型 报告时间 参数 训练 token 每参数 token 出处
Chinchilla 2022-03 70B 1.4T 20 论文
LLaMA 1 7B 2023-02 6.7B 1.0T 约 150 论文表 2
Llama 3 8B / 70B 2024-04 8B / 70B 15T 以上 约 1900 / 210 模型卡
Llama 3.1 405B 2024-07 405B 15.6T 约 39 报告
DeepSeek-V3 2024-12 671B 总 / 37B 激活 14.8T 约 400(总参数约 22) 报告
OLMo 2 7B / 13B 2024-12 7B / 13B 4.05T / 5.6T 约 580 / 430 报告
SmolLM2 2025-02 1.7B 约 11T 约 6500 报告
Gemma 3 27B / 1B 2025-03 27B / 1B 14T / 2T 约 520 / 2000 报告
Qwen3-8B / 0.6B 2025-05 8B / 0.6B 约 36T(各尺寸相同) 约 4500 / 60000 报告
Kimi K2 2025-07 1.04T 总 / 32B 激活 15.5T 约 480 报告
DeepSeek-V4-Pro / Flash 2026-04 1.6T 总 / 49B 激活;284B 总 / 13B 激活 33T / 32T 约 670 / 2500 模型卡、报告 §4.2

能看出一个规律:大家族里最大的那个离算力最优最近,小的训得远超它。Llama 3 自己做了 scaling law:在 $6\times10^{18}$ 到 $10^{22}$ FLOPs、4000 万到 160 亿参数上拟合最优训练 token 数 $D^*(C)=0.29\,C^{0.53}$(报告记作 $N^\star$,但指的是 token 数,不是参数量),外推到 405B 实际用的 $3.8\times10^{25}$ FLOPs,得到 402B 参数、16.55T token,最终训了 405B、15.6T。顺带一个外推敏感度的实例:正文的 $(0.53, 0.29)$ 是四舍五入后的值,直接代入只得到约 10.5T;用图 3 图例里的 $(0.537, 0.299)$ 得到约 16.3T。两组数只差在第三位有效数字,外推三个多数量级后差了 1.5 倍。同一报告说较小的模型训练得“远比算力最优久”,在同样的推理预算下表现更好(自报)。

读这张表要注意几件事:

  • 口径不一样。 Gemma 3 预训练用了知识蒸馏(distillation),学的不只是数据里的下一个 token;Qwen3 报告说各尺寸都走同样三段,合计约 36T(30T 以上的通用数据、约 5T 高质量推理数据、几千亿 token 的长上下文);OLMo 2 的总数把 mid-training 的几次并行退火都算了进去(7B:3.9T 预训练加 3 次 50B;13B:5T 加 3 次 100B 和 1 次 300B;最后把这些分支做权重平均)。各家 tokenizer 不同,同样 1 个 token 对应的文本量也不同。
  • MoE 不是 dense。 按 $6N_{\text{激活}}D$ 估训练算力是常用近似,但 Chinchilla 的 loss 公式是在 dense 模型上拟合的。Kimi K2 报告了自己拟合的 sparsity scaling law(sparsity 指总专家数除以激活专家数):激活参数固定、专家数越多 loss 越低;要达到验证 loss 1.5,sparsity 48 需要的 FLOPs 只有 sparsity 8 的 1/1.69,约 59%(自报)。总参数和激活参数的区别见 MoE,V4 的结构见 DeepSeek-V4。
  • 训练量不等于效果。 表里只说明“训了多少”,不说明这个比例对它们来说是不是最优;多数报告没有公开配套的 IsoFLOP 数据。

这些修正自己的边界

修正 依赖什么假设 什么时候会失效
按推理量把模型做小 服务期内的推理 token 能预估;loss 曲面在高比例下仍准 推理量估错一个数量级;每参数上千 token 时曲面高估数据收益(Sardana 等)
重复数据折算成有效数据 拟合范围在 9B 参数、900B token 以内,数据是同一类网页文本 混入代码、合成数据或精选数据时,一遍的价值不同;遍数很多时验证 loss 可能回升
照抄开源模型的比例 它们的数据、tokenizer、蒸馏和多阶段配方 用了蒸馏的小模型和 MoE 模型不能直接和 dense 模型比
用 loss 代表效果 下游指标随 loss 平滑变化 阶跃式指标;后训练(post-training)改变了要比较的能力

接着读:学习率、batch size 和 schedule 怎么跟着放大。定好 $N$ 和 $D$ 以后,下一步是把这个 run 的优化超参数配齐。

本页术语 4
预训练 pre-training
先用大量数据学习通用表示和能力,再适配具体任务
困惑度 perplexity
exp(交叉熵),语言模型的常用指标
蒸馏 distillation
用一个模型的输出训练另一个通常更小的模型
后训练 post-training
预训练之后为特定任务和行为做的所有训练