从0训练LLM · 现代大模型体系 阅读 + 实验 ≈ 30 分钟 页内实验 ×2
C6 规模:训多大、喂多少 第 3 课

模型训完要被调用十亿次,还该按「训练最优」来训吗?

为推理而过训练
Chinchilla 最优只算训练的账。推理每个 token 还要约 2N 次运算:服务 10T token 时,把同样的质量换成小一半的模型、多喂近 3 倍数据,总算力省 29%。所以 Llama 3 8B 训到 1,875 token/参数,Qwen3-0.6B 到 60,000。
❓

本课一问:第 2 课的「训练最优」只回答了「训练花一定的算力,怎样 loss 最低」。可模型训完是要拿去用的,一个开源模型可能被调用上十亿次。还该按训练最优来训吗?

这一课先不碰:推理怎么加速(C13)、这么多数据从哪来(C7)、学习率与 batch(第 4 课)。

从已有出发

贯穿任务到了最实际的一步:Qwen3.8-27B 是开放权重发布的,训完之后要被很多人反复调用。它训了多少 token?官方没有公开。我们只能拿公开了数字的模型来对照,再用账本算清楚「为什么大家都不按 20 token/参数训」。

从已有出发 · 累计数据流 点已学环节看形状与参数
解码层

推理时,整条流水线对每个生成的 token 都要走一遍前向——按第 1 课的口径,约 2N 次浮点运算(只算矩阵乘)。训练最优只看训练那一次的 6ND,完全没算这一项。

缩放律的演进:每一代都被上一代的某个真数字逼出来 · 高亮 = 本课所在的一代
  1. 起点 训完再看 没有缩放律的时候
    解决了不需要任何理论,直接训。
    卡在一次就是全部预算:DeepSeek-V3 全程 278.8 万 H800 GPU 小时,没有第二次试错机会。
  2. 第一代 幂律:用小模型外推大模型 Hestness 2017 → Kaplan 2020
    解决了loss 随参数、数据、算力按幂律下降:参数翻倍,loss 乘以 0.9487(Kaplan 式 1.1)。幂律的多领域实证首见 Hestness 2017。
    卡在纯幂律没有底,直线外推偏乐观:Llama 3 的数据只用 ≤3×10²⁰ 的预算外推 10²²,预测 0.6574,真实 0.6931。
  3. 第一代 · 分配 Kaplan 的算力分配:主要加参数 Kaplan 2020
    解决了给出 N ∝ C0.73:预算 ×10,模型 ×5.37、数据只 ×1.86。
    卡在Gopher 280B 只训 300B token;同预算的 Chinchilla 70B 训 1.4T,MMLU 60.0% → 67.6%。
  4. 第二代 Chinchilla:参数与数据同比例长 Hoffmann 2022
    解决了每个预算扫一遍模型大小,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²⁴。
  5. 解决了Kaplan 偏大的主因找到了:只数非 embedding 参数 + 规模小(Pearce & Song);末层计算、warmup、按规模调优化器(Porian)。
    卡在Chinchilla 自己的拟合系数也有错:正文取整后的系数在 5.76×10²³ 隐含 92.6 token/参数,Besiroglu 重拟合是 18.4;抛物线法本身也有偏差(Llama 3 数据上相当于 6.5% 的预算配错)。
  6. 第三代 过训练:为推理成本训小一点、久一点 LLaMA 2023 → Sardana 2023 → Gadre 2024 你在这里
    解决了把推理的 2N FLOPs/token 算进总账,最优模型变小、数据变多:Llama 3 8B 1,875 token/参数,Qwen3-0.6B 60,000。
    卡在小模型上调好的超参搬不过去:按 DeepSeek LLM 的式子,10¹⁷ FLOPs 的最优学习率是 67B 那一档的 7.5 倍。
  7. 第四代 超参也拟缩放律(或换参数化) DeepSeek LLM 2024 → Qwen3 2025 → Qwen3.8 2026;μP 在 C8
    解决了最优学习率、batch 写成 C 的幂律:DeepSeek LLM 7B 预测 η = 4.25e-4,实际用 4.2e-4。
    卡在换结构、换优化器,最优点就挪:Qwen3.8 报告里旧配方末了 loss 高 7.8e-3、下游平均低 4.14 分(自报);多数团队不公开系数。
  8. 解决了缩放不止一条轴:数据从哪来(C7)、测试时多想一会儿(C12)都进了预算。
    卡在高质量数据会先用完:我们项目只有 50 万 token 语料,val 在第 300 步(约 4.9 个 epoch)最低 4.7713,之后一路升到 6.9065(实验课)。
数字口径:论文原文数字(Kaplan 2020、Hoffmann 2022、Besiroglu 2024、DeepSeek LLM 2024、Llama 3 2024、Qwen3 2025、Qwen3.8-Flash-Next 2026)与现算结果都存在 src/data/precomputed/c06-isoflop.json,由 gen_c06_isoflop.py 生成;Qwen3.8 的数字是官方自报(第③层可信度);项目一格来自 04-实践项目 的真实日志。

先自己设计:就按训练最优训

  1. ① 朴素方案
  2. ② 它在哪失败
  3. ③ 改进方案
朴素方案严格按训练最优(Chinchilla)来定 N 和 D

用 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²⁴。

参数一大,每一次调用都贵。训练只付一次,推理付十亿次。

改进:把推理写进账本

一个模型一生的算力账
= +
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
约束:L(N, D) = 目标 loss。等 loss 曲线上,N 越小,需要的 D 越大(D 按缩放律涨得很快)。Dinf = 0 时最优点就是训练最优;Dinf 越大,最优点越往小模型走:Dinf = 10¹¹ / 10¹² / 10¹³ / 10¹⁴ 时,D/N = 19.7 / 30.2 / 109.4 / 624(Besiroglu 重拟合,python 与浏览器各算一遍)。
目标质量 = 这个预算下「训练最优」模型的 loss

真实模型的 token/参数
🎯

试四件事:① 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,因为共享的输出层在文件里多存了一份)。

这件事是怎么被做出来的

2024–2025 年的开源模型基本都这么做。下面每个数都有出处(上面组件的表格里逐行列出),锚点 Qwen3.8-27B 一行是空的:

模型参数训练 tokentoken/参数出处
Chinchilla70B1.4T20Hoffmann 2022
Llama 3 8B8B(实际 8,030,261,248)约 15T1,875(实际 1,868)Llama 3 报告 §1
Llama 3.1 405B405B15.6T38.5Llama 3 报告 §1
Qwen3-32B32.8B36T1,098Qwen3 报告 §3.1–3.2
Qwen3-0.6B0.6B36T60,000Qwen3 报告 §3.1–3.2
DeepSeek-V337B 激活 / 671B 总14.8T400(按总参数 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 成正比
③ 实验上为什么选了它?过训练下质量持续提升、缩放律仍可外推 ;Llama 3、Qwen3 等的训练 token 数是各家报告自报,无法独立核验

一句话

📌

训练最优只算训练的账;模型要被调用很多次,就把训练多花的算力换成更小、更便宜的推理——所以现代小模型的 token/参数远超 20,上限则由「有多少新数据」决定。

🚦

先停在这里:记住「总账 = 6ND + 2N·Dinf」,进下一课。
再深一层:读 LLaMA 引言第 2 段和 Sardana 2023 的摘要,再在组件里比较三个目标预算下同样推理量的影响。

下一个缺口

模型大小和 token 数定了。可训练用的学习率和 batch size 是在小模型上调的——放大 100 倍还能用吗? → 第 4 课:超参也要跟着规模变?

你可能会问