# 规模扩展：把模型、数据和计算放在同一比较条件下

视觉段问“扩大训练条件后，架构表现会怎样变化”；本篇处理另一个问题：“训练计算预算已经固定，怎样在模型与数据之间分配？”这两种比较的自变量和证据职责不同，不能用一张扩展图回答全部问题。

规模不是一个只有“参数更多”方向的选择。训练计划同时决定模型有多少参数、实际读多少token、付出多少计算，并受到数据质量和实现条件影响。比较两个模型之前，先确定问题：我们在比较材料使用效率、训练计算效率，还是完整项目的质量与总成本？

<a id="budget"></a>
## N、D、C分别是什么

N是参数规模，D是训练实际消费的token数，C是训练计算量。D包含重复读取；它不同于数据库存和独特token数量。对常见稠密Transformer，可以用主要矩阵运算近似

$$
C\approx6ND.
$$

这个式子概括前向与反向的主要训练计算，忽略或近似若干架构、长上下文及实现相关项。它不能当作所有模型、所有序列长度下的精确账单，尤其不能把MoE的总参数量未经区分直接代入。计算量、墙钟时间和货币费用也不相同：硬件利用率、通信、内存搬运与价格会影响后两者。

比例推算可以先帮助预算。N与D各翻倍，近似计算变成4倍；C固定时，N翻倍对应D约减半。这只给出可比较的配置，没有自动给出哪个最好。还要训练这些配置，用同一目标和评价协议观察效果。

N42的两张方案卡是独立教学预算：

| 配置 | 参数 N | 消费 token D | 6ND 近似计算 |
|---|---:|---:|---:|
| 甲 | 4B | 400B | 9.6×10²¹ FLOPs |
| 乙 | 8B | 200B | 9.6×10²¹ FLOPs |

这两点仅用于算清固定预算下的联动，不是下一张 Chinchilla 原图的数据点，也没有被训练或评出优劣。

<a id="kaplan"></a>
## Kaplan Figure 2：同一训练记录，换横轴问不同问题

原图左侧横轴为Tokens Processed，右侧为Compute (PF-days)，两者纵轴均为Test Loss。颜色图例为Parameters (non-embedding)，即不含embedding的参数量。两图保留对数刻度，不能把画面等距理解为绝对数量等差。

左图固定横坐标，问读过相近token后哪个模型测试损失更低。较大模型可能更有样本效率。右图固定计算量，问花了相近算术预算后谁的损失更低。大模型每个token更贵，所以样本效率好不自动等于所有预算下计算效率更好。PF-days是计算量单位，代表每秒一千万亿次浮点计算持续一天的量；它不是报告某次训练实际只运行一天。

读图还要分清测量、拟合和外推。历史规律在观测范围内能提供有用预测，但把线延伸到没有运行的区域，不等于在那里已经得到同样证据。测试损失是对概率预测的评价，也不是下游任务成绩，不能把下降幅度直接翻译成某个任务提升几个百分点。

<a id="chinchilla"></a>
## Chinchilla Figure 3：固定计算预算后的两端限制

Chinchilla的IsoFLOP方法固定计算预算，改变模型大小和相应训练token。原图左面板横轴Parameters、纵轴Training Loss。课堂先展示论文中3×10²⁰ FLOPs预算，这与前面的9.6×10²¹教学预算是另一笔计算量；保留实际点与虚线拟合，不从图像估读后伪造精确最优坐标。

较小模型的每token成本低，可以在同预算内读更多材料；但容量可能限制继续训练的收益。较大模型容量增加，每token成本也增加，因而可读token减少，可能尚未充分训练就耗尽预算。曲线低处给出在比较条件内更合适的分配。更多预算下，较合适的N与D都可能增长。原研究为不同训练长度匹配相应学习率日程，不应把任意训练轨迹中途截取的loss都当成相同协议下的实验点。这里的损失标为训练损失，与上文 Kaplan 图中的测试损失不同，不能统一改名。

最优分配还依赖数据、模型、优化方法和评价目标。它不是一个脱离条件的“模型与数据永远按固定比例增长”口号。若数据质量下降、重复增加或上下文计算项改变，历史拟合也需要重新检验。

<a id="historical-comparison"></a>
## 较大规模的历史检验怎样读

Chinchilla约70B参数、1.4T训练token；Gopher约280B参数、300B训练token。论文以相近训练计算预算比较整体配置，Chinchilla在报告的多项任务上表现更好。这为充分训练较小模型提供了重要实践证据，也提醒我们参数规模不能独自决定能力排序。

但这不是只改变N和D的干净消融：优化器、分词器和数据配方也有变化。规模值经过舍入，将它们乘入6ND并不能证明计算严格相等，也不能将所有收益唯一归因于数据量增加。系统实验与较大规模验证应合起来读，同时保留混杂因素。

<a id="lifecycle"></a>
## 训练最优与生命周期成本

训练结束后还要使用模型。如果模型会被调用大量次数，较小模型训练更久可能降低每次推理的开销，从而值得前期投入；如果调用很少，则未必。可以先用概念账本

$$
\text{总成本}=\text{训练成本}+\sum_{j=1}^{R}\text{第}j\text{次请求成本}
$$

提醒自己不要漏掉长期使用。它不是一个只依赖N的公式：请求长度、输出长度、batch、缓存复用、硬件和延迟目标都会改变每次成本，质量要求还决定方案是否可接受。没有真实调用与测量数据，不应给出通用盈亏平衡次数。

最后，计算预算能买多少运算，与这些运算能否装进设备是不同问题。训练状态、激活、通信和中间存储可能限制执行。接下来的训练工程沿同一个8B教学模型数清状态，再说明DDP、ZeRO、并行切分和FlashAttention分别消除哪一种瓶颈。

## 来源与课堂定位

- [Kaplan et al., Scaling Laws for Neural Language Models](https://arxiv.org/abs/2001.08361)：Figure 2，[N43深入入口](../classroom/N43.html?step=b0)、[双横轴完整阅读](../pages/S02.html)。
- [Hoffmann et al., Training Compute-Optimal Large Language Models](https://arxiv.org/abs/2203.15556)：Figure 3及Chinchilla/Gopher训练配置，[N42–N43](../classroom/N42.html?step=b0)、[历史模型比较](../pages/S04.html)。
- 本课[N41–N42](../classroom/N41.html?step=b0)的比例/预算计算与[N43深入阅读](../classroom/N43.html?step=b0)的生命周期账本是明确条件下的教学分析，不是新模型实测结果。
