发表时间: 2020-01 · arXiv:2001.08361 (OpenAI / Johns Hopkins)
语言为人工智能研究提供了一个天然的领域,因为绝大多数推理任务都可以用语言高效地表达和评估,而世界上的文本通过生成式建模为无监督学习提供了丰富的数据。深度学习最近在语言建模方面取得了快速进展,最先进的模型【RNSS18, Improving language understanding by generative pre-training, 2018】, 【DCLT18, Bert: Pre-training of deep bidirectional transformers for language understanding, 2018, arXiv:1810.04805】, 【YDY+19, Xlnet: Generalized autoregressive pretraining for language understanding, 2019, arXiv:1906.08237】, 【LOG+19, Roberta: A robustly optimized BERT pretraining approach, 2019, arXiv:1907.11692】, 【RSR+19, Exploring the limits of transfer learning with a unified text-to-text transformer, 2019, arXiv:1910.10683】在许多特定任务【WPN+19, Superglue: A stickier benchmark for general-purpose language understanding systems, 2019, 1905.00537】上已接近人类水平,包括生成连贯的多段落提示文本样本【RWC+19, Language models are unsupervised multitask learners, 2019】。
研究预期语言建模性能会依赖于模型架构、模型大小、训练所用的计算能力以及可用的训练数据。本文实证研究了语言建模损失与所有这些因素的依赖关系,重点关注Transformer架构【VSP+17, Attention is all you need, 2017】,【LSP+18, Generating wikipedia by summarizing long sequences, 2018, arXiv:1801.10198】。通过研究超过七个数量级的规模变化,我们观察到性能与训练时间、上下文长度、数据集大小、模型大小和计算预算之间存在精确的幂律缩放关系。
我们对Transformer语言模型的主要发现如下:
图1 语言建模性能随着模型大小、数据集大小和用于训练的计算量的增加而平滑提升。为了获得最佳性能,所有三个因素必须协同扩展。当不受其他两个因素瓶颈时,经验性能与每个单一因素都存在幂律关系。
性能主要取决于规模,而与模型形状关系不大:模型性能最主要地取决于规模,规模包含三个因素:模型参数数量N(不包括嵌入)、数据集大小D和用于训练的计算量C。在合理范围内,性能对其他架构超参数(如深度与宽度)的依赖非常弱。(第3节)
平滑的幂律关系:当不受其他两个因素瓶颈时,性能与三个规模因素N、D、C中的每一个都存在幂律关系,趋势跨越了超过六个数量级(见图1)。在高端没有观察到偏离这些趋势的迹象,尽管性能最终必须在达到零损失之前趋于平缓。(第3节)
过拟合的普适性:只要我们协同扩展N和D,性能就会可预测地提高,但如果固定N或D中的一个而增加另一个,则会进入收益递减的状态。性能损失可预测地取决于比率 $N^{0.74}/D$,这意味着模型大小每增加8倍,我们只需将数据增加大约5倍即可避免性能损失。(第4节)
训练的普适性:训练曲线遵循可预测的幂律,其参数大致与模型大小无关。通过外推训练曲线的早期部分,我们可以大致预测如果训练更长时间会达到的损失。(第5节)
迁移性能随测试性能提升:当我们在与训练分布不同的文本上评估模型时,结果与训练验证集上的结果高度相关,损失上存在一个大致恒定的偏移——换言之,迁移到不同分布会产生一个恒定的性能损失,但除此之外,其提升与在训练集上的性能大致一致。(第322节)
样本效率:大模型比小模型更具样本效率,用更少的优化步骤(图2)和更少的数据点(图4)就能达到相同的性能水平。
收敛是低效的:在固定的计算预算C下,但对模型大小N或可用数据D没有其他限制时,我们通过训练非常大的模型并在远未收敛时停止训练来获得最佳性能(见图3)。因此,计算效率最高的训练比基于将小模型训练至收敛的预期要样本高效得多,数据需求随着训练计算量非常缓慢地增长,即 $D \sim C^{0.27}$。(第6节)
最优批量大小:训练这些模型的理想批量大小大致仅是损失的幂函数,并且仍然可以通过测量梯度噪声尺度【MKAT18, An empirical model of large-batch training, 2018, arXiv:1812.06162】来确定;对于我们能训练的最大模型,在收敛时大约是100-200万个token。(第5.1节)
图2 我们展示了一系列语言模型的训练过程,模型大小从10^3到10^9个参数(不包括嵌入)不等。更大的模型需要更少的样本达到相同的性能。
图3 随着可用计算量的增加,我们可以选择如何分配资源来训练更大的模型、使用更大的批量和进行更多的训练步骤。我们以十亿倍的计算量增长为例进行说明。为了实现计算效率最优的训练,大部分增长应投入到增加模型大小上。为避免数据重用,只需要相对较小的数据量增长。在数据增长中,大部分可用于通过更大的批量大小增加并行度,只需要非常小的串行训练时间增长。
一个经过自回归语言建模训练的Transformer的测试损失,当性能仅受限于非嵌入参数数量N、数据集大小D或最优分配的计算预算 $C_{min}$ 中的任何一个时,可以用幂律来预测(见图1):
对于参数数量有限、在足够大的数据集上训练至收敛的模型:
对于使用有限数据集并提前停止的大型模型:
当使用有限计算量、足够大的数据集、最优大小的模型和足够小的批量大小进行训练时(即最优地利用计算资源):
图4 左图:提前停止的测试损失L(N, D)根据公式(1.5)可预测地随数据集大小D和模型大小N变化。右图:在初始瞬态期后,所有模型大小N的学习曲线都可以用公式(1.6)拟合,该公式以Smin为参数,Smin是在大批量训练时的步数(详见5.1节)。
这些关系在 $C_{min}$ 的八个数量级、N的六个数量级和D的两个数量级范围内都成立。它们对模型形状和其他Transformer超参数(深度、宽度、自注意力头数)的依赖非常弱,具体的数值与Webtext2训练集【RWC+19, Language models are unsupervised multitask learners, 2019】相关。幂律指数 $\alpha_N, \alpha_D, \alpha_{minC}$ 指定了当我们扩大N、D或 $C_{min}$ 时预期的性能提升程度;例如,将参数数量加倍会使损失减小一个因子 $2^{-\alpha_N} = 0.95$。$N_c, C_{min_c}, D_c$ 的精确数值取决于词汇表大小和分词方式,因此没有根本意义。
临界批量大小,它决定了数据并行的速度/效率权衡【MKAT18, An empirical model of large-batch training, 2018, arXiv:1812.06162】,也大致遵循L的幂律:
公式(1.1)和(1.2)共同表明,随着模型大小的增加,我们应该根据 $D \propto N^{\alpha_N / \alpha_D} \sim N^{0.74}$ 次线性地增加数据集大小。事实上,我们发现有一个单一的方程结合了(1.1)和(1.2),它控制了对N和D的同时依赖性,并决定了过拟合的程度:
其拟合结果如图4左侧所示。我们推测这种函数形式也可能适用于其他生成式建模任务的训练对数似然。
当在无限数据极限下,对给定的模型进行有限步数S的参数更新训练时,在初始瞬态期之后,学习曲线可以被精确地拟合为(见图4右侧):
其中 $S_c \approx 2.1 \times 10^3$ 且 $\alpha_S \approx 0.76$,$S_{min}(S)$ 是使用公式(5.4)估计的最小可能优化步数(参数更新次数)。
当在固定的计算预算C内训练,但没有其他限制时,公式(1.6)预测最优模型大小N、最优批量大小B、最优步数S和数据集大小D应该如下增长:
其中
这与经验上的最优结果 $N \propto C_{min}^{0.73}, B \propto C_{min}^{0.24}, S \propto C_{min}^{0.03}$ 非常吻合。随着训练时间或数据集大小的增加(见图3)。这也意味着随着模型变大,它们的样本效率越来越高。在实践中,研究人员通常会训练较小的模型更长时间,这超出了计算效率最高的方式,原因是硬件限制。最优性能取决于总计算量,呈幂律关系(见公式(1.3))。
我们使用以下符号:
* L – 交叉熵损失,单位为nat。通常它是在一个上下文中的token上取平均,但在某些情况下,我们报告上下文中特定token的损失。
* N – 模型参数的数量,不包括所有词汇表和位置嵌入。
* C ≈ 6NBS – 总的非嵌入训练计算量的估计值,其中B是批量大小,S是训练步数(即参数更新次数)。我们以PF-days为单位引用数值,其中一个PF-day = $10^{15} \times 24 \times 3600 = 8.64 \times 10^{19}$ 次浮点运算。
* D – 数据集大小,单位为token。
* $B_{crit}$ – 临界批量大小【MKAT18, An empirical model of large-batch training, 2018, arXiv:1812.06162】,在5.1节中定义和讨论。在临界批量大小下训练,可以在时间和计算效率之间提供大致最优的折衷。
* $C_{min}$ – 达到给定损失值所需的最小非嵌入计算量的估计值。这是如果模型在远小于临界批量大小的批量下训练时将使用的训练计算量。
* $S_{min}$ – 达到给定损失值所需的最小训练步数的估计值。这也是如果模型在远大于临界批量大小的批量下训练时将使用的训练步数。
* $\alpha_X$ – 损失缩放的幂律指数,即 $L(X) \propto 1/X^{\alpha_X}$,其中X可以是N, D, C, S, B, $C_{min}$中的任何一个。
我们在一份扩展版的WebText数据集【RWC+19, Language models are unsupervised multitask learners, 2019】——WebText2上训练语言模型,使用字节对编码(byte-pair encoding, BPE)【SHB15, Neural machine translation of rare words with subword units, 2015, 1508.07909】进行分词,词汇表大小 $n_{vocab} = 50257$。我们优化在1024个token的上下文中平均的自回归对数似然(即交叉熵损失),这也是我们主要的性能指标。我们记录了在WebText2测试分布以及一系列其他文本分布上的损失。我们主要训练仅解码器(decoder-only)【LSP+18, Generating wikipedia by summarizing long sequences, 2018, arXiv:1801.10198】, 【RNSS18, Improving language understanding by generative pre-training, 2018】的Transformer【VSP+17, Attention is all you need, 2017】模型,但为了比较,也训练了LSTM模型和Universal Transformer【DGV+18, Universal transformers, 2018, 1807.03819】模型。
Transformer架构参数:我们使用超参数 $n_{layer}$(层数)、$d_{model}$(残差流的维度)、$d_{ff}$(中间前馈层的维度)、$d_{attn}$(注意力输出的维度)和 $n_{heads}$(每层的注意力头数)来参数化Transformer架构。输入上下文包含 $n_{ctx}$ 个token,除非另有说明,否则 $n_{ctx} = 1024$。
非嵌入参数N的定义:我们用N表示模型大小,定义为非嵌入参数的数量:
这里我们排除了偏置项和其他次要项。我们的模型在嵌入矩阵中还有 $n_{vocab}d_{model}$ 个参数,并使用 $n_{ctx}d_{model}$ 个参数用于位置嵌入,但我们在讨论“模型大小”N时不包括这些参数;我们将看到这样做可以产生明显更清晰的缩放定律。
前向传播计算量:评估一次Transformer的前向传播大约需要
次加乘运算,其中因子2来自于矩阵乘法中使用的乘加操作。更详细的每操作参数和计算量计数包含在表1中。
训练计算量估计:对于上下文和模型,当 $d_{model} > n_{ctx}/12$ 时,每个token的上下文相关计算成本占总计算量的比例相对较小。由于我们主要研究 $d_{model} \ge n_{ctx}/12$ 的模型,因此在我们的训练计算量估计中不包括上下文相关的项。考虑到反向传播(计算量约是前向传播的两倍),我们定义估计的非嵌入计算量为每个训练token大约 $C \approx 6N$ 次浮点运算。
表1 Transformer模型的参数数量和计算量(前向传播)估计。省略了非线性、偏置和层归一化等次要项。
为了描述语言模型的缩放特性,我们训练了各种各样的模型,改变了多个因素,包括:模型大小(非嵌入参数从768到15亿不等)、数据集大小(从2200万到230亿token不等)、形状(包括深度、宽度、注意力头和前馈维度)、上下文长度(大多数运行为1024,但也实验了更短的上下文)和批量大小(大多数运行为 $2^{19}$,但也为了测量临界批量大小而改变它)。本节将展示数据及经验驱动的拟合,理论分析推迟到后续章节。
性能与N的幂律关系:在图6中,我们展示了各种模型的性能,从形状为(nlayer, dmodel) = (2, 128)的小模型到十亿参数模型,形状从(6, 4288)到(207, 768)不等。在这里,我们在完整的WebText2数据集上训练到接近收敛,并且没有观察到过拟合(可能除了最大的模型)。如图1所示,我们发现随着非嵌入参数数量N的增加,性能呈现稳定趋势,可以拟合为公式(1.5)的第一项:
排除嵌入参数的重要性:为了观察这些趋势,研究性能与N的关系至关重要;如果我们使用总参数数(包括嵌入参数),趋势会变得有些模糊(见图6)。这表明嵌入矩阵可以做得更小而不影响性能,正如最近的工作【LCG+19, Albert: A lite bert for self-supervised learning of language representations, 2019, 1909.11942】所见。
跨数据集的幂律一致性:尽管这些模型是在WebText2数据集上训练的,但它们在各种其他数据集上的测试损失也是N的幂律,且幂指数几乎相同,如图8所示。
性能与D和C的幂律关系:我们在图1中展示了测试损失作为数据集大小D(以token计)和训练计算量C的函数的经验趋势。对于随D变化的趋势,我们使用一个(nlayer, nembd) = (36, 1280)的模型,在WebText2数据集的固定子集上进行训练。一旦测试损失停止下降,我们就停止训练。我们看到,得到的测试损失可以用一个简单的数据集大小幂律来拟合:
数据和拟合结果出现在图1中。
计算量与性能的关系:训练期间使用的总非嵌入计算量可以估计为 $C = 6NBS$,其中B是批量大小,S是参数更新次数,因子6考虑了前向和后向传播。因此,对于给定的C值,我们可以扫描所有具有不同N的模型,以找到在步数 $S = C/(6BS)$ 时性能最好的模型。请注意,在这些结果中,所有模型的批量大小B保持不变,这意味着这些经验结果并非真正的最优。我们将在后面的章节中使用调整后的 $C_{min}$ 来产生更清晰的趋势。结果显示为图1左侧图中的粗黑线。它可以拟合为:
该图还包括单个学习曲线的图像,以阐明单个模型何时达到最优。我们稍后将更仔细地研究计算的最优分配。数据强烈表明,样本效率随模型大小的增加而提高,我们也在附录的图19中直接说明了这一点。
在第3节中,我们发现了语言建模性能的一些基本缩放定律。在这里,我们将研究一个大小为N的模型在D个token的数据集上训练时的性能,同时改变N和D。我们将凭经验证明,最优训练的测试损失符合公式(1.5)的缩放定律。这为我们在增加模型大小的同时需要多少数据来控制过拟合提供了指导。
L(N, D)方程的构建原则:我们选择了参数化形式(1.5)(为方便起见在此重复):
基于三个原则:
方程形式的解释:我们选择的L(N, D)满足第一个要求,因为我们可以通过改变词汇表来重新缩放 $N_c, D_c$。这也意味着 $N_c, D_c$ 的值没有根本意义。由于我们在测试损失不再改善时提前停止训练,并以相同的方式优化所有模型,我们期望更大的模型应该总是比小模型表现更好。但在固定的有限D下,我们也不期望任何模型能够接近最佳可能损失(即文本的熵)。同样,一个固定大小的模型将受到容量限制。这些考虑激发了我们的第二个原则。请注意,在无限D下的L(N)和在无限N下的L(D)的知识完全决定了L(N, D)中的所有参数。第三个原则更具推测性。有一个简单而普遍的原因可以解释为什么在非常大的D时,过拟gling应与 $1/D$ 成比例。过拟合应与数据集的方差或信噪比有关【AS17, High-dimensional dynamics of generalization error in neural networks, 2017, 1710.03667】,这与 $1/D$ 成比例。对于任何平滑的损失函数,这个期望都应该成立,因为我们期望能够在 $D \to \infty$ 的极限附近展开损失。然而,这个论点假设 $1/D$ 的修正项主导了其他方差来源,例如有限的批量大小和对优化效率的其他限制。没有经验证实,我们对其适用性不会非常有信心。我们的第三个原则解释了公式(1.5)中N和D角色的不对称性。非常相似的对称表达式是可能的,但它们不会有关于 $1/D$ 的整数次幂展开,并且需要引入一个额外的参数。无论如何,我们将看到我们的L(N, D)方程能很好地拟合数据,这是我们L(N, D)假设最重要的理由。
L(N, D)拟合结果:我们用10%的dropout对所有模型进行正则化,并通过跟踪测试损失并在其不再下降时停止来提前停止。结果显示在图9中,包括对公式(1.5)中四个参数 $\alpha_N, \alpha_D, N_c, D_c$ 的拟合:
> 表2 L(N, D)的拟合参数
>
我们得到了一个极好的拟合,除了数据集被缩减了1024倍,大约为 $2 \times 10^7$ token的运行。对于如此小的数据集,一个epoch只包含40个参数更新。也许这样小的数据集代表了语言建模的一个不同范式,因为过拟合在训练早期就发生了(见图16)。另请注意,这些参数与第3节中获得的参数略有不同,因为这里我们拟合的是完整的L(N, D),而不仅仅是L(N, ∞)或L(∞, D)。
过拟合程度的分析:为了描绘无限数据极限的边界地带,我们可以直接研究过拟合的程度。除了最大的模型,当使用完整的22B token的WebText2数据集训练时,我们没有看到过拟合的迹象,所以我们可以将其视为代表 $D = \infty$。因此,我们可以通过定义以下量来比较有限D与无限数据极限:
并研究其作为N, D的函数。事实上,我们凭经验看到 $\delta L$ 仅依赖于N和D的特定组合,如图9右侧所示。这源于公式(1.5)的缩放定律,它意味着:
注意,在大D时,这个公式也有一个关于 $1/D$ 的幂级数展开。
避免过拟合的数据量需求:我们估计不同随机种子的损失变化大约是0.02,这意味着为了在训练到收敛的该阈值内避免过拟合,我们需要:
根据这个关系,小于 $10^9$ 参数的模型可以在22B token的WebText2数据集上以最小的过拟合进行训练,但我们最大的模型会遇到一些轻微的过拟合。更普遍地,这个关系表明,数据集大小可以次线性地随模型大小增长,同时避免过拟合。但请注意,这通常不代表计算效率最高的训练。我们还应强调,在改变数据集和模型大小时,我们没有优化正则化(例如dropout概率)。
本节将证明一个简单的缩放定律可以很好地描述损失作为模型大小N和训练时间的函数。首先,我们将解释如何使用【MKAT18, An empirical model of large-batch training, 2018, arXiv:1812.06162】的结果来定义一个通用的训练步数 $S_{min}$,这考虑了我们大多数模型没有在最优批量大小下训练的事实。然后,我们将证明我们可以使用公式(1.6)来拟合损失对模型大小和训练时间的依赖性。稍后,我们将使用这些结果来预测训练计算在模型大小和训练时间之间的最优分配,然后证实该预测。
临界批量大小理论:【MKAT18, An empirical model of large-batch training, 2018, arXiv:1812.06162】(另见【SLA+18, Measuring the effects of data parallelism on neural network training, 2018, arXiv:1811.03600】, 【ZLN+19, Which algorithmic choices matter at which batch sizes? insights from a noisy quadratic model, 2019, 1907.04164】)提出了一个关于训练批量大小依赖性的简单经验理论。该理论认为存在一个临界批量大小 $B_{crit}$;对于 $B$ 直到 $B_{crit}$,增加批量大小对计算效率的降低非常小,而对于 $B > B_{crit}$,增加B会导致收益递减。该理论还认为梯度噪声尺度为 $B_{crit}$ 提供了一个简单的预测,并且两者都不直接依赖于模型大小,除非通过已达到的损失值。这些结果可以用来预测训练时间和计算量如何随批量大小变化。为了尽可能有效地利用训练时间和计算量,最好使用批量大小 $B \approx B_{crit}$ 进行训练。在 $B \ge B_{crit}$ 下训练可以最小化训练步数,而在 $B \le B_{crit}$ 下训练可以最小化计算量的使用。
训练步数与数据量的关系:更具体地说,研究证明对于各种神经网络任务,训练步数S和处理的数据样本数E = BS在训练到任何固定的损失值L时满足简单关系:
这里 $S_{min}$ 是达到L所需的最小步数,而 $E_{min}$ 是必须处理的最小数据样本数。我们在附录的图18中展示了Transformer的这种关系(5.1)。这个关系定义了临界批量大小:
它是目标损失值的函数。在临界批量大小下训练可以在时间/计算之间做出大致最优的权衡,需要 $2S_{min}$ 步训练并处理 $E = 2E_{min}$ 个数据样本。
$B_{crit}(L)$ 的幂律关系:在图10中,我们绘制了临界批量大小和梯度噪声尺度作为两个不同模型训练损失的函数。我们看到 $B_{crit}(L)$ 与模型大小无关,仅依赖于损失L。因此,【MKAT18, An empirical model of large-batch training, 2018, arXiv:1812.06162】的预测对Transformer语言模型仍然成立。临界批量大小可以用损失的幂律来拟合:
其中 $B^* \approx 2 \times 10^8$ 且 $\alpha_B \approx 0.21$。我们为 $B_{crit}(L)$ 选择这种参数化是因为当损失接近其最小值 $L_{min}$ 时,梯度噪声尺度预计会发散,我们期望 $B_{crit}$ 会跟踪这个噪声尺度。我们不知道 $L_{min}$,因为我们没有看到我们的模型接近它的迹象,但 $L_{min} > 0$ 因为自然语言的熵是非零的。由于显然 $L_{min}$ 比我们已达到的L值小得多,我们使用了一个在 $L \to 0$ 时 $B_{crit}$ 发散的参数化。
标准化训练步数 $S_{min}$ 和计算量 $C_{min}$:我们将使用 $B_{crit}(L)$ 来估计在批量大小 $B=2^{19}$ token下训练的步数S与在 $B \ge B_{crit}$ 下训练的步数之间的关系。对于任何给定的目标损失值L,这很简单:
这也定义了如果我们要在 $B \le B_{crit}(L)$ 下训练,用大小为N的模型训练到L所需的计算量的临界值。这是:
其中 $C = 6NBS$ 估计了在批量大小B下使用的(非嵌入)计算量。
L(N, S_min)拟合结果:现在我们将使用公式(5.4)中定义的 $S_{min}$ 来获得一个简单而通用的拟合,用于描述在无限数据极限下损失对模型大小和训练时间的依赖性。我们将使用公式(1.6)来拟合稳定的、用Adam优化的训练运行,为方便起见在此重复:
我们包括学习率调度预热期之后的所有训练步骤,并找到了与数据拟合的参数:
> 表3 L(N, S)的拟合参数
>
使用这些参数,我们获得了图4中的学习曲线拟合。尽管拟合不完美,但考虑到公式(5.6)的简单性,我们认为它们非常有说服力。
结果的可视化与解释:数据和拟合可以用一种不同且更有趣的方式可视化,如图11所示。在那里,我们研究了测试损失作为模型大小的函数,同时固定总的非嵌入计算量C或步数S。对于拟合,我们使用公式(5.5)和(5.4)以及上述参数和公式(5.6)。损失对 $S_{min}$ 的幂律依赖性反映了优化器动态和损失景观的相互作用。由于拟合在训练后期最好,此时损失可能近似为二次型,因此幂律应该提供关于损失Hessian矩阵谱的信息。其普适性表明Hessian特征值密度大致与模型大小无关。
数据集:
模型架构:
硬件配置:
软件与训练配置:
基础缩放定律 (Sec 3):
N、数据集大小D和计算量C均呈现平滑的幂律关系(图1)。例如,L(N) ∝ N^{-0.076},L(D) ∝ D^{-0.095}。N的情况下,改变模型的深度、宽度、注意力头数等对最终性能影响很小(图5)。N中排除后,L(N)的幂律趋势变得更加清晰和一致(图6)。过拟合与数据限制 (Sec 4):
L(N, D)方程(公式1.5),该方程能准确预测同时改变模型大小N和数据集大小D时的性能,并描述过拟合现象(图9)。N和D的绝对大小,而是取决于比率N^{0.74}/D。这意味着模型大小增加8倍,数据集大小只需增加约5倍即可维持相同的过拟合水平。训练动态与时间缩放 (Sec 5):
B_crit的存在,它只依赖于当前达到的损失L,而与模型大小无关,且B_crit与L也呈幂律关系B_crit ∝ L^{-4.8}(图10)。L(N, S_min)方程(公式1.6),在校正了批量大小效应后,该方程能统一描述不同大小模型的学习曲线,表明训练动态具有普适性(图4右,图11)。最优计算预算分配 (Sec 6):
C下,最高效的策略是训练一个非常大的模型,并在其远未收敛时就提前停止(图3)。C_min的增加,最优模型大小N应快速增长(N ∝ C_min^{0.73}),而最优训练步数S几乎保持不变(S ∝ C_min^{0.03})。大部分新增计算量应用于扩大模型规模和批量大小(图14)。L(C_min)和L(D)的缩放定律在C* ~ 10^4 PF-Days处会产生矛盾,这可能预示着当前Transformer架构从自然语言中提取信息的极限(图15)。我们在图1的右上角展示了性能作为训练所用计算量的经验趋势。然而,这个结果是在固定批量大小B下训练得到的,而我们知道,实际上我们可以通过在第5.1节讨论的临界批量大小 $B_{crit}$ 下训练来更高效地训练。通过标准化到临界批量大小来纠正这种低效率,可以得到更清晰和更可预测的趋势。本节我们将调整此疏忽,并利用第5节的结果来确定模型大小N和训练处理的数据量 $2B_{crit}S_{min}$ 之间的最优计算分配。
经校正的计算量-性能关系:让我们首先研究损失作为最优分配计算量(公式5.5)的函数。结果绘制在图13中,并附有幂律拟合。我们看到,与图1的计算量图相比,使用 $C_{min}$ 的新拟合有所改善。
最优模型大小与计算量的关系:给定 $L(C_{min})$,很自然地会问,提供给定训练计算量下最小损失的最优模型大小 $N(C_{min})$ 是多少。最优模型大小如图14所示。我们观察到 $N(C_{min})$ 可以很好地用一个幂律来拟合:
次优模型大小的代价:在图12中,我们展示了训练次优大小模型的效果(见附录B.4)。
最优步数与批量大小的推导:根据定义 $C_{min} \equiv 6N B_{crit}S$,所以我们可以使用 $N(C_{min})$ 来提取进一步的结果。特别是,由于之前的拟合显示 $B \propto L^{-4.8}$ 和 $L \propto C_{min}^{-0.05}$,我们可以得出结论 $B_{crit} \propto C_{min}^{0.24}$。这使我们得出结论,最优步数将只随计算量非常缓慢地增长,即:
这与图14中的经验结果相符。事实上,测量的指数足够小,以至于我们的结果甚至可能与指数为零相容。因此,我们得出结论,当我们以最优计算分配来扩展语言建模时,我们应该主要增加模型大小N,同时通过 $B \propto B_{crit}$ 来扩展批量大小,而串行步数的增加可以忽略不计。由于计算高效的训练使用相对较少的优化步骤,因此可能需要进一步研究加速早期训练动态的方法。
PROTECTED_IMAGE_69____PROTECTED_IMAGE_70
缩放定律的内在矛盾:我们没有观察到在大计算量、大数据或大模型尺寸下偏离纯幂律趋势的迹象。然而,我们的趋势最终必须趋于平缓,因为自然语言的熵是非零的。实际上,本节描述的计算高效训练的趋势已经包含了一个明显的矛盾。在比本文记录的规模大几个数量级时,由 $L(C_{min})$ 缩放定律预测的性能下降到低于考虑训练数据随计算量缓慢增长所应能达到的水平。这意味着我们的缩放定律必须在此点之前失效。
矛盾点的推导与猜想:为了控制过拟合,第4节的结果意味着我们应该将数据集大小缩放为:
这里我们使用了图14中计算高效的 $N(C_{min})$。让我们将其与计算高效训练的数据需求进行比较。如果我们在临界批量大小下训练(即 $C = 2C_{min}$)并且在训练期间从不重用数据,我们发现数据使用量随计算量增长为:
这是数据集大小随计算量有效增长的最大速率,因为它意味着我们只训练一个epoch。但它的数据集增长速度远慢于公式(6.6)。这似乎意味着计算高效的训练最终会遇到过拟合问题,即使训练过程从不重用任何数据!根据图1,我们预计当受数据集大小(即过拟合)瓶颈时,损失应按 $L(D) \propto D^{-0.095}$ 缩放。这意味着一旦我们受数据限制,损失将随计算量缩放为 $L(D(C_{min})) \propto C_{min}^{-0.03}$。这又是一个矛盾,因为它最终会与我们从图13中对 $L(C_{min})$ 的预测相交,在那里我们发现缩放关系为 $L(C_{min}) \propto C_{min}^{-0.050}$。
交叉点的意义:$L(D(C_{min}))$ 和 $L(C_{min})$ 的交叉点发生在:
$C^* \sim 10^4$ PF-Days, $N^* \sim 10^{12}$ 参数, $D^* \sim 10^{12}$ tokens, $L^* \sim 1.7$ nats/token
尽管数值高度不确定,根据幂律拟合的精确指数值,可能会有一个数量级的变动。最明显的解释是我们的缩放定律在达到或超过此点时失效,这一点在计算量和模型大小上仍有许多数量级的距离。但我们推测交叉点具有更深层的意义:它提供了一个估计,即Transformer语言模型达到最大性能的点。如果模型大小不能超过 $N^*$ 而不产生质变的数据需求,也许这意味着一旦我们达到 $C_{min}^*$ 和 $N^*$,我们已经提取了自然语言数据中所有可靠的信息。在这种解释中,$L^*$ 将为自然语言的每token熵提供一个粗略的估计。
我们观察到语言模型对数似然损失与非嵌入参数数量N、数据集大小D和优化后的训练计算量 $C_{min}$ 之间存在一致的缩放关系,如公式(1.5)和(1.6)所概括。相反,我们发现对许多架构和优化超参数的依赖性非常弱。由于与N、D、$C_{min}$ 的缩放关系是幂律,因此随着规模的增加,收益递减。
我们能够精确地建模损失对N和D的同时变化,以及对N和S的同时变化的依赖关系。我们使用这些关系推导出了计算缩放、过拟合程度、提前停止步骤以及训练大型语言模型时的数据需求。因此,我们的缩放关系超越了单纯的观察,提供了一个预测框架。人们可以将这些关系解释为理想气体定律的类似物,后者以一种通用的方式关联了气体的宏观属性,而与其微观成分的大部分细节无关。
很自然地可以推测,这些缩放关系将适用于其他具有最大似然损失的生成式建模任务,也许也适用于其他情境。为此,在其他领域(如图像、音频和视频模型)测试这些关系将很有趣。目前我们不知道我们的哪些结果依赖于自然语言数据的结构,哪些是普适的。找到一个可以推导出这些缩放关系的理论框架——我们所观察到的“热力学”背后的“统计力学”——也将是令人兴奋的。
在自然语言领域,研究损失的持续改善是否转化为相关语言任务的改善将非常重要。平滑的量变可以掩盖重大的质变:“量变引起质变”。例如,经济的平滑总体增长并不能揭示支撑它的具体技术发展。同样,语言模型损失的平滑改善可能隐藏着能力上看似质的变化。
我们的结果强烈表明,更大的模型将继续表现更好,并且也将比以前所认识到的样本效率高得多。大模型可能比大数据更重要。在这种背景下,有必要对模型并行性进行进一步研究,例如流水线并行【HCC+18, Gpipe: Efficient training of giant neural networks using pipeline parallelism, 2018, 1811.06965】、张量并行【SCP+18, Mesh-tensorflow: Deep learning for supercomputers, 2018, 1811.02084】、稀疏性【CGRS19, Generating long sequences with sparse transformers, 2019, 1904.10509】或模型动态增长【WRH17, Growing a brain: Fine-tuning by increasing model capacity, 2017】等技术。
为方便参考,我们下面提供了论文中描述的关键趋势的摘要。
<blockquote>表4 关键趋势方程
表5 趋势拟合的关键参数
表6 计算高效训练的趋势
在本附录中,所有C、S和 $\alpha_C$ 的值都已针对在临界批量大小 $B_{crit}$ 下的训练进行了调整。为避免符号混乱,我们省略了“adj”标签。
基础方程:学习曲线的幂律拟合为计算高效训练提供了一个简单的方案。本附录将推导最优性能、模型大小和训练步数作为计算预算的函数。我们从公式(1.6)开始:
这里,S代表在临界批量大小【MKAT18, An empirical model of large-batch training, 2018, arXiv:1812.06162】下训练时的参数更新次数,定义见公式(5.2)。
我们希望确定固定计算预算下的最优训练参数,因此我们替换 $S = C / (6N B(L))$,其中C是训练运行中使用的FLOPs数量:
最优性条件:现在,我们设置 $\partial_N L|_C = 0$ 来找到最优性条件:
公式(B.3)和(B.4)共同决定了计算高效的前沿。
高效训练的特性:现在我们整合(B.3)和(B.4)的含义。首先,注意将(B.4)代入(B.3)得到:
这意味着对于计算高效的训练,我们应该训练到比收敛损失高出固定百分比 $\alpha_N / \alpha_S \approx 10\%$ 的水平。
最优损失与计算预算的关系:接下来,让我们确定最优损失如何依赖于计算预算。消去N得到性能对计算量的幂律依赖关系:
其中我们定义了
最优模型大小与步数:类似地,我们可以消去L来找到N(C):
和
不同位置token的性能:图21显示了上下文中不同token的损失作为模型大小的函数。我们看到,在 $n_{ctx} = 1024$ 上训练的模型在除了第一个token之外的所有token上都随着模型大小的增加而稳定改善。固定模型大小,损失似乎作为上下文中位置T的幂律函数进行缩放,见图20。这可能是语言中潜在的幂律相关性【EP94, On the origin of long-range correlations in texts, 1994】, 【ACDE12, On the origin of long-range correlations in texts, 2012】的结果,或者是模型架构和优化的更普遍特征。
短上下文模型的比较:我们还包括了用极小上下文 $n_{ctx} = 8$ 训练的模型,以便与我们的长上下文模型进行比较。即使是在 $n_{ctx} = 8$ 上训练的中等大小模型,在非常早期的token上也能胜过我们最大的 $n_{ctx} = 1024$ 模型。这也表明,用更大的模型在大的上下文上训练,应该有可能实现进一步的改进。
PROTECTED_IMAGE_74____PROTECTED_IMAGE_75
学习率调度的影响:我们尝试了多种学习率和调度。图22绘制了多种调度及其对一个小语言模型产生的测试性能。我们得出结论,学习率调度的选择大多无关紧要,只要总的累积学习率足够大,并且调度包括一个预热期和一个最终衰减到接近零学习率的阶段。
学习率选择的经验法则:我们发现更大的模型需要更小的学习率以防止发散,而较小的模型可以容忍更大的学习率。为了实现这一点,大多数运行都使用了以下经验法则:
我们期望这个公式可以被改进。可能存在对网络宽度的依赖,这很可能由初始化规模设定。该公式在 $N > 10^{10}$ 参数时也会失效。尽管如此,我们发现它对我们考虑的模型来说足够好用。