模型预训练 / 缩放定律 Technique入门 12 分钟阅读 查看源文件 ↗

Chinchilla:参数与 token 的算力分配#

TL;DR#

本页内容8 个部分

Chinchilla:相同预算下比较配置,经多规模实验拟合并求解候选,再用实际训练验证

1. 同一训练预算下怎样选择模型大小#

固定训练算力时,参数更多的模型每处理一个 token 需要更多计算,因此能训练的 token 数更少。配置选择需要同时比较模型大小与训练量,不能只增加参数量。

例如,在同一近似预算下有三个候选:(1)0.5B 参数训练 40B tokens;(2)1B 参数训练 20B tokens;(3)2B 参数训练 10B tokens。B 表示十亿。三组参数量与训练量的乘积相同,但仅凭预算相同,还不能判断哪组的最终 loss 最低。

Kaplan 等提出的算力最优缩放估计中,参数量随预算的增长快于训练 token 数。Chinchilla 重新估计这一关系,用多规模训练实验比较相同预算下的配置,并估计怎样分配参数量与训练量。[1]

2. 用多规模实验建立配置选择依据#

2.1 先固定预算、数据与比较目标#

设 NN 为模型参数量,DD 为训练过程中处理的 token 总数,CC 为训练计算量,单位是 FLOPs。DD 统计实际处理量;同一段数据重复训练时,每次都计入,但重复 token 与新数据的效果不一定相同。

对常规 dense Transformer,参数相关训练计算常用 C≈6NDC\approx6ND 粗估。三个候选的近似预算均为 C=1.2×1020C=1.2\times10^{20} FLOPs。例如,1B 参数与 20B tokens 对应 C≈6×109×(20×109)=1.2×1020C\approx6\times10^9\times(20\times10^9)=1.2\times10^{20} FLOPs。系数 6 近似计入参数相关矩阵运算的前向和反向计算;注意力、序列长度与实现还会影响实际计算量,FLOPs 也不等于硬件耗时。[1]

TPP 的全称是 Tokens Per Parameter,即每个参数对应的训练 token 数,定义为 TPP=D/N\mathrm{TPP}=D/N;N/DN/D 是它的倒数。

记 L(N,D)L(N,D) 为给定模型族、数据与训练配方下,用相同统计规则得到的最终预训练 loss。配置选择的目标为:

(Nopt(C),Dopt(C))=arg⁡min⁡N,D: 6ND=C  L(N,D).(N_{\mathrm{opt}}(C),D_{\mathrm{opt}}(C)) =\underset{N,D:\,6ND=C}{\arg\min}\;L(N,D).

这里的“最优”针对给定训练条件和计算预算下的预训练 loss,不表示模型已经收敛,也不直接表示某项下游任务得分最高。

比较时固定模型族、tokenizer、数据分布和训练配方的选择规则。训练长度不同时,学习率日程仍需匹配各自的终点;否则 loss 的变化可能来自规模与训练量以外的条件。

2.2 三种实验方法怎样相互核对#

Scaling ladder 指用多规模训练实验预测更大规模下的配置:先在较小预算下测量参数量、训练量与 loss 的关系,再预测目标预算下的候选配置。

Chinchilla 使用三种方法:(1)训练曲线包络;(2)等算力比较;(3)参数化 loss 拟合。三种方法相互核对,检查估计的算力最优配置是否接近。[1]

方法 实验与拟合方式 直接观察的对象
训练曲线包络 为不同大小的模型设置多个训练长度,在每个算力位置选择最低 loss 各算力位置上观测 loss 最低的候选配置
IsoFLOP,等算力比较 固定若干预算,改变模型大小并相应调整 token 数,在每个预算内寻找最低 loss 相同预算下 loss 关于模型大小的最小值位置
参数化 loss 拟合 联合拟合 L^(N,D)\widehat L(N,D),再在算力约束下求最优解 整个 loss 曲面及各预算下的最优配置

按表中方法顺序,三种估计得到的最优参数量关于计算预算 CC 的幂律指数分别约为 0.50、0.49、0.46,最优训练 token 数的对应指数分别约为 0.50、0.51、0.54。这些指数均接近 1/21/2,但三种方法估计的最优配置并不完全相同。

在多规模训练实验中,可按 IsoFLOP 方法固定较小预算,比较不同参数量与对应训练量的组合。候选模型的规模应包含 loss 最小值两侧的配置;提高预算后重复比较,再拟合最优参数量随预算的变化。如果所有候选都位于最小值的同一侧,就还不能确定该预算下的最优规模。

训练长度改变时,还需要匹配学习率日程。一个计划训练 100B tokens 的训练实验,在 10B tokens 处可能仍处于较高学习率阶段;它的中间 loss 不能直接当成专门训练 10B tokens、并完成衰减后的最终 loss。学习率调度的通用机制见学习率调度,主干复用与冷却分支的预算比较见学习率配方。

3. 拟合 loss 并计算最优配置#

3.1 拟合损失函数并比较候选#

实际使用时,先训练一组较小的候选模型,再使用观测值 (Ni,Di,Li)(N_i,D_i,L_i) 拟合函数 L^(N,D)\widehat L(N,D);下标 ii 表示一次训练实验。这里 LiL_i 是观测 loss,不能与预测值 L^(Ni,Di)\widehat L(N_i,D_i) 混为一谈。原实验使用平滑训练 loss,在数据充足、训练 token 少于完整语料量的设置下将其用于估计泛化表现;在新的多规模训练实验中,还应固定独立验证集。

为了在未实际训练的配置上预测 loss,可以拟合下面的经验函数:

L^(N,D)=E+ANα+BDβ.\widehat L(N,D)=E+\frac{A}{N^\alpha}+\frac{B}{D^\beta}.

L^\widehat L 是预测 loss;E,A,B,α,βE,A,B,\alpha,\beta 由实验拟合,其中 A,B,α,βA,B,\alpha,\beta 取正值。EE 表示拟合的渐近 loss;A/NαA/N^\alpha 描述有限模型容量造成的差距;B/DβB/D^\beta 描述有限数据与有限训练带来的差距。在系数固定的拟合函数中,增大 NN 会减小容量项,增大 DD 会减小训练不足项;固定算力时,NN 和 DD 不能同时独立增加。[1]

这是经验建模,各项并非可以独立测量的真实误差。固定数据分布、模型族和训练配方后,才有理由用同一组系数拟合;更换条件时需要重新验证。

下面使用公开拟合系数,计算相同预算下的候选 loss 与连续最优配置。Chinchilla 附录 D.2 公开的参数化拟合系数为 A=406.4A=406.4、B=410.7B=410.7、α=0.34\alpha=0.34、β=0.28\beta=0.28、E=1.69E=1.69。以下按这些已四舍五入的系数和 C≈6NDC\approx6ND 重新计算,不是实际训练结果,也不保证复现论文表格中的配置。这里 NN、DD 必须使用参数和 token 的实际计数,不能直接代入以 B 为单位的数值。[1]

沿用三个候选,均采用 C=1.2×1020C=1.2\times10^{20} FLOPs。先代入已拟合的 loss 函数,分开计算容量项、训练不足项与总 loss;这些数值是预测结果,不是实测模型分数。分项与总 loss 均先使用未四舍五入的数值计算,再各自保留四位小数:

候选配置:参数量 / 训练 token 数 容量项 训练不足项 总预测 loss
0.5B / 40B 0.4480 0.4415 2.5795
1B / 20B 0.3540 0.5361 2.5800
2B / 10B 0.2796 0.6509 2.6206

以 1B 参数、20B tokens 为例,参数量和训练量先换成实际计数,再分别计算两项差距:

容量项=406.4(109)0.34≈0.3540,训练不足项=410.7(20×109)0.28≈0.5361,L^(109,20×109)=1.69+406.4(109)0.34+410.7(20×109)0.28≈2.5800.\begin{aligned} \text{容量项}&=\frac{406.4}{(10^9)^{0.34}}\approx0.3540,\\ \text{训练不足项}&=\frac{410.7}{(20\times10^9)^{0.28}}\approx0.5361,\\ \widehat L(10^9,20\times10^9) &=1.69+\frac{406.4}{(10^9)^{0.34}}+\frac{410.7}{(20\times10^9)^{0.28}}\approx2.5800. \end{aligned}

这里用未四舍五入的分项求和,所以总值不必等于表中四位小数的直接相加结果。

三个离散候选中,0.5B / 40B 的预测 loss 最低。根据表中数值,它与 1B / 20B 的预测差距约为 0.0005;若拟合误差或重复训练的波动超过这一量级,就不能仅凭该排序决定实际配置。

3.2 在预算约束下求最优配置#

拟合 loss 后,需要在计算量相同的候选配置中求预测 loss 的最小值。以下固定 C>0C>0,将近似算力关系作为等式约束 6ND=C6ND=C,并在 N,D>0N,D>0 的连续范围内求解。求得的配置仍需通过目标规模的训练实验验证。

固定预算后有 D=C/(6N)D=C/(6N)。代入预测 loss,得到只关于参数量的函数:

L^C(N)=E+AN−α+B(6NC)β.\widehat L_C(N)=E+AN^{-\alpha}+B\left(\frac{6N}{C}\right)^\beta.

在约束 D=C/(6N)D=C/(6N) 下,增大 NN 会降低容量项,同时因训练 token 数减少而增大训练不足项。对 NN 求导并令其为零:

dL^CdN=−αAN−α−1+βB(6C)βNβ−1=0,αAN−α=βB(6NC)β=βBD−β.\begin{aligned} \frac{\mathrm d\widehat L_C}{\mathrm dN} &=-\alpha AN^{-\alpha-1} +\beta B\left(\frac6C\right)^\beta N^{\beta-1}=0,\\ \alpha AN^{-\alpha} &=\beta B\left(\frac{6N}{C}\right)^\beta =\beta BD^{-\beta}. \end{aligned}

该驻点给出所用经验函数在连续正值范围内的唯一最小值:将参数量改写为 N=ezN=e^z 后,预测 loss 关于 zz 严格凸,且在两端均趋于无穷大。实际模型只能选择离散规格,仍需检验附近可训练的配置。

在最优点,容量项与训练不足项对 log⁡N\log N 的导数大小相等、符号相反。这不要求两项本身的数值相等;只有 α=β\alpha=\beta 时,才有 A/Nα=B/DβA/N^\alpha=B/D^\beta。

继续移项,得到:

Nα+β=αAβB(C6)β,Nopt(C)=(αAβB)1α+β(C6)βα+β,Dopt(C)=(βBαA)1α+β(C6)αα+β.\begin{aligned} N^{\alpha+\beta} &=\frac{\alpha A}{\beta B}\left(\frac C6\right)^\beta,\\ N_{\mathrm{opt}}(C) &=\left(\frac{\alpha A}{\beta B}\right)^{\frac1{\alpha+\beta}} \left(\frac C6\right)^{\frac\beta{\alpha+\beta}},\\ D_{\mathrm{opt}}(C) &=\left(\frac{\beta B}{\alpha A}\right)^{\frac1{\alpha+\beta}} \left(\frac C6\right)^{\frac\alpha{\alpha+\beta}}. \end{aligned}

当 α/β\alpha/\beta 接近 1 时,两个增长指数都接近 1/21/2。在这一条件下,预算变为原来的 4 倍时,最优参数量和训练 token 数分别约为原来的 2 倍。近似同比增长依赖拟合系数;仅从 C≈6NDC\approx6ND 无法确定最优参数量与训练量的比例。

使用已经推导的连续最优解,求得该拟合函数在连续规模下的最小值:

Nopt=(0.34×406.40.28×410.7)1/0.62(1.2×10206)0.28/0.62≈7.002×108,Dopt=1.2×10206Nopt≈2.856×1010,TPPopt=DoptNopt≈40.79.\begin{aligned} N_{\mathrm{opt}} &=\left(\frac{0.34\times406.4}{0.28\times410.7}\right)^{1/0.62} \left(\frac{1.2\times10^{20}}6\right)^{0.28/0.62} \approx7.002\times10^8,\\ D_{\mathrm{opt}} &=\frac{1.2\times10^{20}}{6N_{\mathrm{opt}}} \approx2.856\times10^{10},\\ \mathrm{TPP}_{\mathrm{opt}} &=\frac{D_{\mathrm{opt}}}{N_{\mathrm{opt}}} \approx40.79. \end{aligned}

对应的 Nopt/Dopt≈0.02451N_{\mathrm{opt}}/D_{\mathrm{opt}}\approx0.02451。此时容量项约为 0.3996,训练不足项约为 0.4852,总预测 loss 约为 2.5747,略低于表中的三个候选。模型规格不能连续取值时,可在约 0.7B 的附近选取可实现配置,再通过实际训练检验预测 loss 及配置排序。

3.3 计算最优 TPP 及预算变化#

给定最优配置后,TPP 是输出结果,不需要预先指定为 20。

将上面得到的最优 token 数与参数量相除,就能求出给定预算下的最优 TPP:

TPPopt(C)=Dopt(C)Nopt(C)=(βBαA)2α+β(C6)α−βα+β.\begin{aligned} \mathrm{TPP}_{\mathrm{opt}}(C) &=\frac{D_{\mathrm{opt}}(C)}{N_{\mathrm{opt}}(C)}\\ &=\left(\frac{\beta B}{\alpha A}\right)^{\frac{2}{\alpha+\beta}} \left(\frac C6\right)^{\frac{\alpha-\beta}{\alpha+\beta}}. \end{aligned}

如果关心的是参数与 token 的比例,取倒数即可:

Nopt(C)Dopt(C)=(αAβB)2α+β(C6)β−αα+β.\frac{N_{\mathrm{opt}}(C)}{D_{\mathrm{opt}}(C)} =\left(\frac{\alpha A}{\beta B}\right)^{\frac{2}{\alpha+\beta}} \left(\frac C6\right)^{\frac{\beta-\alpha}{\alpha+\beta}}.

因此,给定 CC 还不足以确定最优 TPP,必须有同一训练条件下的拟合系数。当 α=β\alpha=\beta 时,预算项的指数为零,最优 TPP 是常数 (B/A)1/α(B/A)^{1/\alpha};当 α>β\alpha>\beta 时,最优 TPP 随预算增加而上升;当 α<β\alpha<\beta 时则下降。EE 是与配置无关的常数,不影响最优比例。

反过来,确定一个 TPP 值 rr 后,有 D=rND=rN。将它代入算力约束,便能从预算直接算出配置:

训练计算量=6rN2=C,N=C6r,D=Cr6.\text{训练计算量}=6rN^2=C,\qquad N=\sqrt{\frac{C}{6r}},\qquad D=\sqrt{\frac{Cr}{6}}.

取 r=TPPopt(C)r=\mathrm{TPP}_{\mathrm{opt}}(C),得到拟合函数下的最优配置;若只是人为指定 r=20r=20,得到的是遵循该经验比例的配置,是否最优仍需验证。

更换预算后,按同一组系数计算如下;表格数值保留近似值,算力约束以未四舍五入的结果核算。

训练预算 CC(FLOPs) 最优参数量 NoptN_{\mathrm{opt}} 最优 token 数 DoptD_{\mathrm{opt}} 最优 TPP
1.2×10201.2\times10^{20} 0.7002B 28.56B 40.79
4.8×10204.8\times10^{20} 1.310B 61.09B 46.65
102210^{22} 5.160B 322.97B 62.58

这组系数的 TPP 增长指数是 最优 TPP 的预算增长指数=(0.34−0.28)/(0.34+0.28)≈0.09677\text{最优 TPP 的预算增长指数}=(0.34-0.28)/(0.34+0.28)\approx0.09677。因此预算扩大 4 倍时,最优 TPP 乘以 最优 TPP 的放大倍数=40.09677≈1.1436\text{最优 TPP 的放大倍数}=4^{0.09677}\approx1.1436,从约 40.79 上升到约 46.65。这里的 TPP 随预算变化,因为两个拟合指数不同。补充推导使用同一预算下、两个指数均为 1/21/2 的假设函数,说明最优 TPP 不随预算变化的条件;其中的系数与论文公开拟合系数不同。

4. 从训练观测到候选配置验证#

将这套方法用于自己的训练设置时,需要完成四个步骤:

  1. 收集可比较的训练观测。 固定模型族、tokenizer、数据分布与损失统计规则,运行多个参数量和训练长度的组合。为每次实验记录 (Ni,Di,Li)(N_i,D_i,L_i)、实际计算量及学习率日程,区分计划预算与实际消耗。
  2. 拟合并交叉核对。 用训练观测拟合损失函数,再与曲线包络或等算力比较得到的最小值位置核对。候选规模需要覆盖 loss 最小值两侧;所有观测都在同一侧时,尚不能确定最优规模。
  3. 生成目标预算下的候选。 由拟合系数计算连续最优参数量、训练量与 TPP,再选取附近可实现的模型规格。对每个离散参数量重新按算力约束计算训练量,不能将两个连续最优值分别取整后仍假定预算严格相同。
  4. 验证预测与实际结果。 训练候选模型,并用未参与拟合的规模检验外推误差。比较实测 loss、预测误差与重复训练的波动;预测差距小于这些误差时,不只凭拟合排序确定配置。

本篇使用公开系数完成了候选比较和连续最优配置的计算,没有开展新的训练实验。拟合函数给出的约 0.7B 参数、28.56B tokens 是该近似预算下的预测配置;是否适合新的模型族或数据,需要按上述步骤检验。

5. 固定比例比较与方法局限性#

常见的 D≈20ND\approx20N 对应 Chinchilla 论文报告的约 70B 参数、1.4T 训练 tokens(T 表示万亿)的配置,可作为设计初始多规模实验的参考。正文采用参数化拟合的公开系数计算 TPP,补充手算则特意选择了让 TPP 等于 20 的系数。两者用于解释不同条件,不能将它们视为同一组拟合系数的预测结果。

当最优参数量和最优训练 token 数关于计算预算的幂律指数都等于 1/21/2 时,最优配置的 D/ND/N 不随预算变化。这两个增长指数仅接近 1/21/2 时,比例随预算的变化由拟合系数和 TPP 公式确定,不能在任意预算范围内将其视为常数;具体比例还依赖拟合系数。因而“增长指数接近”和“比例约为 20”是不同结论。

固定参数量 NN 后,即使训练 token 数超过 20N20N,继续训练仍可能降低 loss。“训练算力最优”比较的是同一预算下各参数量与训练量组合的最终预训练 loss;“固定参数量后,增加训练量能否继续降低 loss”是另一个问题。若目标还包括部署显存或大量推理的成本,选择标准也会改变。

Chinchilla 主要建立预训练 loss 的规模规律。将其用于新的模型族或数据分布时,不能默认沿用原拟合系数。应在新条件下检验这些系数是否适用,必要时重新拟合;各组实验需固定 tokenizer、数据分布和损失统计规则,并记录实际计算量。还应使用未参与拟合的较大模型检验外推预测。若目标是具体任务准确率,则需要进一步建立 loss 与任务表现之间的关系。

参考资料#

  1. Training Compute-Optimal Large Language Models,Hoffmann 等,2022。§2 讨论学习率日程的影响;§3 给出三种估计方法、经验 loss 函数与增长指数;附录 D.2 给出参数化拟合系数;附录 F 说明 FLOPs 计算。

补充推导#

相同指数下,为什么最优 TPP 与预算无关?

相同指数下的 TPP 手算#

沿用正文的训练预算 C=1.2×1020C=1.2\times10^{20} FLOPs。按照 C≈6NDC\approx6ND,三个候选配置如下,B 表示十亿:

参数量 训练 token 数 估算训练 FLOPs
0.5B 40B 1.2×10201.2\times10^{20}
1B 20B 1.2×10201.2\times10^{20}
2B 10B 1.2×10201.2\times10^{20}

这些候选的估算预算相同。为演示预算约束下的配置选择,假设预测 loss 函数为:

L^(N,D)=1+109N+20×109D.\widehat L(N,D)=1+\sqrt{\frac{10^9}{N}}+\sqrt{\frac{20\times10^9}{D}}.

这是手算用的假设函数,不是论文拟合值或实际训练结果。 它对应 E=1E=1、α=β=1/2\alpha=\beta=1/2、A=109A=\sqrt{10^9}、B=20×109B=\sqrt{20\times10^9}。

先代入拟合函数的驻点条件。两个指数相同,最优点满足:

109N=20×109D,D=20N,6N(20N)=1.2×1020,Nopt=109,Dopt=20×109.\begin{aligned} \sqrt{\frac{10^9}{N}}&=\sqrt{\frac{20\times10^9}{D}},\\ D&=20N,\\ 6N(20N)&=1.2\times10^{20},\\ N_{\mathrm{opt}}&=10^9,\\ D_{\mathrm{opt}}&=20\times10^9. \end{aligned}

因此这个假设函数下,最优组合是 1B 参数、20B tokens,最优 TPP 为 Dopt/Nopt=20D_{\mathrm{opt}}/N_{\mathrm{opt}}=20,对应 Nopt/Dopt=0.05N_{\mathrm{opt}}/D_{\mathrm{opt}}=0.05。再对三个候选分别计算两项差距和预测 loss,核对最优解:

配置:参数量 / 训练 token 数 容量项 训练不足项 预测 loss
0.5B / 40B 2≈1.4142\sqrt2\approx1.4142 1/2≈0.70711/\sqrt2\approx0.7071 3.12133.1213
1B / 20B 11 11 3.00003.0000
2B / 10B 1/2≈0.70711/\sqrt2\approx0.7071 2≈1.4142\sqrt2\approx1.4142 3.12133.1213

从第一组增加到第二组时,容量项的下降超过训练不足项的上升,总预测 loss 降低;继续增加到第三组时,训练不足项的上升超过容量项的下降,总预测 loss 回升。

如果预算增加到 4.8×10204.8\times10^{20} FLOPs,这个函数的两个指数相同,最优参数量和 token 数各扩大 2 倍,得到 2B / 40B,最优 TPP 仍为 20。代回后预测 loss 为 L^(2×109,40×109)=1+2/2≈2.4142\widehat L(2\times10^9,40\times10^9)=1+2/\sqrt2\approx2.4142。

为什么驻点是拟合函数的唯一全局最小值?

这个驻点也是所用经验函数在连续正值范围内的唯一最低点。令 z=log⁡Nz=\log N,其中 log⁡\log 为自然对数。将约束下的 loss 改写为指数函数,再对 zz 求二阶导数:

L^C(ez)=E+Ae−αz+B(6/C)βeβz,d2L^C(ez)dz2=α2Ae−αz+β2B(6/C)βeβz>0.\begin{aligned} \widehat L_C(e^z)&=E+Ae^{-\alpha z}+B(6/C)^\beta e^{\beta z},\\ \frac{\mathrm d^2\widehat L_C(e^z)}{\mathrm dz^2} &=\alpha^2Ae^{-\alpha z}+\beta^2B(6/C)^\beta e^{\beta z}>0. \end{aligned}

因此,L^C(ez)\widehat L_C(e^z) 关于 zz 严格凸。当 z→−∞z\to-\infty 时,容量项趋于无穷大;当 z→+∞z\to+\infty 时,训练不足项趋于无穷大,所以该驻点给出唯一的全局最小值。实际模型只能取离散配置,仍需比较附近可训练的规格。