模型训完要被调用十亿次,还该按「训练最优」来训吗?
本课一问:第 2 课的「训练最优」只回答了「训练花一定的算力,怎样 loss 最低」。可模型训完是要拿去用的,一个开源模型可能被调用上十亿次。还该按训练最优来训吗?
这一课先不碰:推理怎么加速(C13)、这么多数据从哪来(C7)、学习率与 batch(第 4 课)。
从已有出发
贯穿任务到了最实际的一步:Qwen3.8-27B 是开放权重发布的,训完之后要被很多人反复调用。它训了多少 token?官方没有公开。我们只能拿公开了数字的模型来对照,再用账本算清楚「为什么大家都不按 20 token/参数训」。
推理时,整条流水线对每个生成的 token 都要走一遍前向——按第 1 课的口径,约 2N 次浮点运算(只算矩阵乘)。训练最优只看训练那一次的 6ND,完全没算这一项。
- 解决了loss 随参数、数据、算力按幂律下降:参数翻倍,loss 乘以 0.9487(Kaplan 式 1.1)。幂律的多领域实证首见 Hestness 2017。卡在纯幂律没有底,直线外推偏乐观:Llama 3 的数据只用 ≤3×10²⁰ 的预算外推 10²²,预测 0.6574,真实 0.6931。
- 解决了给出 N ∝ C0.73:预算 ×10,模型 ×5.37、数据只 ×1.86。卡在Gopher 280B 只训 300B token;同预算的 Chinchilla 70B 训 1.4T,MMLU 60.0% → 67.6%。
- 解决了每个预算扫一遍模型大小,loss 呈 U 形,谷底连成前沿:N ∝ C≈0.5,约 20 token/参数。页内用 Chinchilla 的真实点拟得 a = 0.511,外推到 5.76×10²³ 得 67.1B / 1.43T。卡在只算训练的账。模型要服务 10T 个 token 时,按训练最优做的模型总算力 2.02×10²⁴,换成同样 loss 的 34.1B 小模型只要 1.44×10²⁴。
- 解决了Kaplan 偏大的主因找到了:只数非 embedding 参数 + 规模小(Pearce & Song);末层计算、warmup、按规模调优化器(Porian)。卡在Chinchilla 自己的拟合系数也有错:正文取整后的系数在 5.76×10²³ 隐含 92.6 token/参数,Besiroglu 重拟合是 18.4;抛物线法本身也有偏差(Llama 3 数据上相当于 6.5% 的预算配错)。
- 解决了把推理的 2N FLOPs/token 算进总账,最优模型变小、数据变多:Llama 3 8B 1,875 token/参数,Qwen3-0.6B 60,000。卡在小模型上调好的超参搬不过去:按 DeepSeek LLM 的式子,10¹⁷ FLOPs 的最优学习率是 67B 那一档的 7.5 倍。
- 解决了最优学习率、batch 写成 C 的幂律:DeepSeek LLM 7B 预测 η = 4.25e-4,实际用 4.2e-4。卡在换结构、换优化器,最优点就挪:Qwen3.8 报告里旧配方末了 loss 高 7.8e-3、下游平均低 4.14 分(自报);多数团队不公开系数。
- 解决了缩放不止一条轴:数据从哪来(C7)、测试时多想一会儿(C12)都进了预算。卡在高质量数据会先用完:我们项目只有 50 万 token 语料,val 在第 300 步(约 4.9 个 epoch)最低 4.7713,之后一路升到 6.9065(实验课)。
先自己设计:就按训练最优训
- ① 朴素方案
- ② 它在哪失败
- ③ 改进方案
用 Besiroglu 重拟合的 Chinchilla 缩放律(第 2 课)算一个具体的例子:预算 5.76×10²³ 下的训练最优点是 72.2B 参数、1.33T token,loss 1.9744。
假设这个模型一生要生成(或处理)10¹³ 个 token:
- 每个 token 约 2 × 72.2B = 1.44×10¹¹ 次运算;
- 推理合计 1.44×10²⁴,是训练的 2.5 倍;
- 训练 + 推理 = 2.02×10²⁴。
参数一大,每一次调用都贵。训练只付一次,推理付十亿次。
目标 loss 不变,沿着「达到这个 loss 的所有 (N, D) 组合」找总账最低的一点:训一个 34.1B 的模型,喂 3.73T token(D/N = 109)。训练多花了 32%,推理省下一大半,总账 1.44×10²⁴,省 28.6%。
这就是「过训练」(over-training):按训练最优的标准看是「训过头了」,按总成本看才刚好。
改进:把推理写进账本
试四件事:① Dinf 停在 0:★ 落在「训练最优 N」的虚线上,两者相同;② 点 10¹³:最省的方案是 34.1B × 3.73T,比训练最优省 28.6%;点 10¹⁴:D/N 到 624。③ 把目标换成 3.8×10²⁵(Llama 3 405B 的预算)再拖一遍,看同样的推理量对大预算的影响小得多。④ 下半部分切「名义参数 / 实际参数」:Qwen3-0.6B 按名义 0.6B 是 60,000 token/参数,按去重后的 596,049,920 个参数是 60,398(HF 报告 751,632,384,因为共享的输出层在文件里多存了一份)。
这件事是怎么被做出来的
- 2023 · LLaMA:引言写得很直白——给定目标性能,偏好的不是训得最快的模型,而是推理最快的;Chinchilla 建议 10B 模型配 200B token,而 LLaMA 发现 7B 模型训过 1T token 还在变好。LLaMA-7B 实际是 6.7B 参数训 1.0T token,149 token/参数。
- 2023 · Sardana 等:把推理需求写进缩放律,结论是预期有约 10 亿次请求时,就该训「更小、更久」;他们训了 47 个模型,token/参数拉到 10,000 质量仍在变好 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条47 个模型;同时指出只用常规配比拟出的缩放律会高估极端配比下多喂数据的收益。 出处Sardana et al. 2023 摘要 ↗需联网 。
- 2024 · Gadre 等:在 104 个模型上确认,过训练的区间里缩放律仍能外推——用少 300 倍的算力,预测了 1.4B 参数、900B token(32 倍过训练)这个 run 的 loss 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条0.011B–6.9B 参数、三种数据分布。 出处Gadre et al. 2024 摘要 ↗需联网 。
2024–2025 年的开源模型基本都这么做。下面每个数都有出处(上面组件的表格里逐行列出),锚点 Qwen3.8-27B 一行是空的:
| 模型 | 参数 | 训练 token | token/参数 | 出处 |
|---|---|---|---|---|
| Chinchilla | 70B | 1.4T | 20 | Hoffmann 2022 |
| Llama 3 8B | 8B(实际 8,030,261,248) | 约 15T | 1,875(实际 1,868) | Llama 3 报告 §1 |
| Llama 3.1 405B | 405B | 15.6T | 38.5 | Llama 3 报告 §1 |
| Qwen3-32B | 32.8B | 36T | 1,098 | Qwen3 报告 §3.1–3.2 |
| Qwen3-0.6B | 0.6B | 36T | 60,000 | Qwen3 报告 §3.1–3.2 |
| DeepSeek-V3 | 37B 激活 / 671B 总 | 14.8T | 400(按总参数 22) | DeepSeek-V3 报告 |
| Qwen3.8-27B(锚点) | 27.8B | 未披露 | — | 若按 20×,文本主干需 538B token |
同一家族里,旗舰接近训练最优,小模型极度过训练:Llama 3 的 405B 是 38.5,8B 是 1,875;Llama 3 报告自己也写了,旗舰大致是训练最优的尺寸,小模型则「训得比训练最优长得多」,在同样的推理预算下表现更好。
常见误解一:「token/参数这么高,说明训练在浪费。」只看训练是浪费;把推理算进去,是用一次性的训练算力换每一次调用的推理成本。这是有意的选择,不是没算清楚。
常见误解二:「Chinchilla 的拟合外推到 60,000 token/参数照样准。」Chinchilla 的 IsoFLOP 实验点里,token/参数 95% 在 150 以下,最大的一个是 304,离 60,000 差两个多数量级。Sardana 发现,只用常规配比拟出的缩放律,会高估极端配比下多喂数据的收益。组件里 D/N 远超 304 的部分只能当趋势看。同样的道理,用 Chinchilla 系数算「8B 训 160B token 与训 15T token 的 loss 差」,取整系数给 0.215,重拟合系数给 0.135——外推越远,系数的差别被放得越大。
常见误解三:「数据够多,小模型就能无限多训。」前提是「新」数据够多。Muennighoff 等 2023 年发现:同一份数据重复 4 个 epoch 以内,和新数据几乎没差;再往上,多加算力的价值会逐渐衰减到 0。我们自己的项目就是反例的现场——语料只有约 50 万 token,见下图。
上面这张图的读数(runs/c6_overfit_1500steps,与 04-实践项目 README 的记录一致):基线模型只把步数拉到 1,500(约 24.5 个 epoch),val loss 在第 300 步最低 4.7713,之后一路升到 6.9065;训练集上的 loss 却降到 0.704。模型在背书。所以对我们来说,「过训练」的上限不是算力,而是语料。C7 数据章从这里接着讲。
证据三问
| 问 | 本课的回答 |
|---|---|
| ① 它解决什么问题? | 训练最优没算推理成本;模型要被调用很多次时,总成本最低的模型更小、训得更久 |
| ② 数学上为什么可能有效? | 总账 6ND + 2N·Dinf 是算术:推理项只和 N 成正比 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条前提是用 2N 近似每 token 的推理运算(不含注意力与 KV cache 开销),以及沿同一条等 loss 曲线比较。 出处待补 |
| ③ 实验上为什么选了它? | 过训练下质量持续提升、缩放律仍可外推 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条实验规模到数十亿参数;60,000 token/参数这样的极端配比没有被这些实验直接覆盖。 出处Sardana 2023;Gadre 2024 ↗需联网 ;Llama 3、Qwen3 等的训练 token 数是各家报告自报,无法独立核验 |
一句话
训练最优只算训练的账;模型要被调用很多次,就把训练多花的算力换成更小、更便宜的推理——所以现代小模型的 token/参数远超 20,上限则由「有多少新数据」决定。
先停在这里:记住「总账 = 6ND + 2N·Dinf」,进下一课。
再深一层:读 LLaMA 引言第 2 段和 Sardana 2023 的摘要,再在组件里比较三个目标预算下同样推理量的影响。
下一个缺口
模型大小和 token 数定了。可训练用的学习率和 batch size 是在小模型上调的——放大 100 倍还能用吗? → 第 4 课:超参也要跟着规模变?
你可能会问
- 「DeepSeek-V3 为什么按 37B 算,不按 671B?」 它是 MoE,每个 token 只经过 37B 激活参数,训练和推理的运算量都按激活参数算。按 671B 总参数算 token/参数只有 22,会误以为它训得很「浅」。MoE 在 C11 讲。
- 「推理真的是 2N 吗?」 2N 只数了矩阵乘。长上下文时注意力的开销、KV cache 的读写都会让实际成本更高;而且推理的瓶颈常常不是算力而是显存带宽(prefill 与 decode 的区别,C13 讲)。这里只用它说明「推理成本和 N 成正比」这一点。
- 「Qwen3.8-27B 大概训了多少?」 没有公开,不猜。能确定的是同一家族的前代 Qwen3 全系都训了约 36T token(报告 §3.1),32B 约 1,098 token/参数。