Scaling Laws for Neural Language Models

发表时间: 2020-01 · arXiv:2001.08361 (OpenAI / Johns Hopkins)

神经语言模型的缩放定律

A1 主要贡献(总结)

语言为人工智能研究提供了一个天然的领域,因为绝大多数推理任务都可以用语言高效地表达和评估,而世界上的文本通过生成式建模为无监督学习提供了丰富的数据。深度学习最近在语言建模方面取得了快速进展,最先进的模型【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】。通过研究超过七个数量级的规模变化,我们观察到性能与训练时间、上下文长度、数据集大小、模型大小和计算预算之间存在精确的幂律缩放关系。

1.1 总结

我们对Transformer语言模型的主要发现如下:

图1 语言建模性能随着模型大小、数据集大小和用于训练的计算量的增加而平滑提升。为了获得最佳性能,所有三个因素必须协同扩展。当不受其他两个因素瓶颈时,经验性能与每个单一因素都存在幂律关系。
图1 语言建模性能随着模型大小、数据集大小和用于训练的计算量的增加而平滑提升。为了获得最佳性能,所有三个因素必须协同扩展。当不受其他两个因素瓶颈时,经验性能与每个单一因素都存在幂律关系。

图2 我们展示了一系列语言模型的训练过程,模型大小从10^3到10^9个参数(不包括嵌入)不等。
图2 我们展示了一系列语言模型的训练过程,模型大小从10^3到10^9个参数(不包括嵌入)不等。更大的模型需要更少的样本达到相同的性能。

图3 随着可用计算量的增加,我们可以选择如何分配资源来训练更大的模型、使用更大的批量和进行更多的训练步骤。我们以十亿倍的计算量增长为例进行说明。为了实现计算效率最优的训练,大部分增长应投入到增加模型大小上。为避免数据重用,只需要相对较小的数据量增长。在数据增长中,大部分可用于通过更大的批量大小增加并行度,只需要非常小的串行训练时间增长。
图3 随着可用计算量的增加,我们可以选择如何分配资源来训练更大的模型、使用更大的批量和进行更多的训练步骤。我们以十亿倍的计算量增长为例进行说明。为了实现计算效率最优的训练,大部分增长应投入到增加模型大小上。为避免数据重用,只需要相对较小的数据量增长。在数据增长中,大部分可用于通过更大的批量大小增加并行度,只需要非常小的串行训练时间增长。

1.2 缩放定律总结

一个经过自回归语言建模训练的Transformer的测试损失,当性能仅受限于非嵌入参数数量N、数据集大小D或最优分配的计算预算 $C_{min}$ 中的任何一个时,可以用幂律来预测(见图1):

  1. 对于参数数量有限、在足够大的数据集上训练至收敛的模型:
    公式1.1

  2. 对于使用有限数据集并提前停止的大型模型:
    公式1.2

  3. 当使用有限计算量、足够大的数据集、最优大小的模型和足够小的批量大小进行训练时(即最优地利用计算资源):
    公式1.3

图4 左图:提前停止的测试损失L(N, D)根据公式(1.5)可预测地随数据集大小D和模型大小N变化。右图:在初始瞬态期后,所有模型大小N的学习曲线都可以用公式(1.6)拟合,该公式以Smin为参数,Smin是在大批量训练时的步数(详见5.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.4

公式(1.1)和(1.2)共同表明,随着模型大小的增加,我们应该根据 $D \propto N^{\alpha_N / \alpha_D} \sim N^{0.74}$ 次线性地增加数据集大小。事实上,我们发现有一个单一的方程结合了(1.1)和(1.2),它控制了对N和D的同时依赖性,并决定了过拟合的程度:
公式1.5
其拟合结果如图4左侧所示。我们推测这种函数形式也可能适用于其他生成式建模任务的训练对数似然。

当在无限数据极限下,对给定的模型进行有限步数S的参数更新训练时,在初始瞬态期之后,学习曲线可以被精确地拟合为(见图4右侧):
公式1.6
其中 $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应该如下增长:
公式1.7
其中
公式1.8
这与经验上的最优结果 $N \propto C_{min}^{0.73}, B \propto C_{min}^{0.24}, S \propto C_{min}^{0.03}$ 非常吻合。随着训练时间或数据集大小的增加(见图3)。这也意味着随着模型变大,它们的样本效率越来越高。在实践中,研究人员通常会训练较小的模型更长时间,这超出了计算效率最高的方式,原因是硬件限制。最优性能取决于总计算量,呈幂律关系(见公式(1.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}$中的任何一个。

A3 背景知识与方法

我们在一份扩展版的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】模型。

2.1 Transformer的参数和计算量缩放

<blockquote>

表1 Transformer模型的参数数量和计算量(前向传播)估计。省略了非线性、偏置和层归一化等次要项。
表1 Transformer模型的参数数量和计算量(前向传播)估计。省略了非线性、偏置和层归一化等次要项。

</blockquote>

2.2 训练过程

2.3 数据集

A2 方法细节与关键观察(缩写)

为了描述语言模型的缩放特性,我们训练了各种各样的模型,改变了多个因素,包括:模型大小(非嵌入参数从768到15亿不等)、数据集大小(从2200万到230亿token不等)、形状(包括深度、宽度、注意力头和前馈维度)、上下文长度(大多数运行为1024,但也实验了更短的上下文)和批量大小(大多数运行为 $2^{19}$,但也为了测量临界批量大小而改变它)。本节将展示数据及经验驱动的拟合,理论分析推迟到后续章节。

3.1 近似的Transformer形状和超参数独立性

图5 当总非嵌入参数N固定时,性能对模型形状的依赖非常轻微。损失在广泛的形状范围内仅变化百分之几。参数计数的微小差异通过使用对L(N)的拟合作为基线来补偿。特别是,宽高比可以变化40倍,而对性能的影响很小;一个(nlayer, dmodel) = (6, 4288)的模型达到的损失在[RWC+19]中使用的(48, 1600)模型的3%以内。
图5 当总非嵌入参数N固定时,性能对模型形状的依赖非常轻微。损失在广泛的形状范围内仅变化百分之几。参数计数的微小差异通过使用对L(N)的拟合作为基线来补偿。特别是,宽高比可以变化40倍,而对性能的影响很小;一个(nlayer, dmodel) = (6, 4288)的模型达到的损失在[RWC+19]中使用的(48, 1600)模型的3%以内。

3.2 非嵌入参数数量N与性能的关系

图6 左图:当我们包含嵌入参数时,除了参数数量外,性能似乎还强烈依赖于层数。右图:当我们排除嵌入参数时,不同深度模型的性能收敛到单一趋势。只有少于2层或具有极端深宽比的模型才会显著偏离该趋势。
图6 左图:当我们包含嵌入参数时,除了参数数量外,性能似乎还强烈依赖于层数。右图:当我们排除嵌入参数时,不同深度模型的性能收敛到单一趋势。只有少于2层或具有极端深宽比的模型才会显著偏离该趋势。

3.2.1 与LSTM和Universal Transformer的比较

图7 Transformer渐进地优于LSTM;LSTM在少于100个token后性能趋于平稳
图7 Transformer渐进地优于LSTM;LSTM在少于100个token后性能趋于平稳

3.2.2 跨数据分布的泛化能力

图8 左图:对其他数据分布的泛化性能随着模型大小平滑提升,与WebText2训练分布的偏移很小且增长非常缓慢。右图:泛化性能仅取决于训练分布的性能,而不取决于训练阶段。我们比较了收敛模型(点)与单个大模型(虚线)在训练过程中的泛化能力。
图8 左图:对其他数据分布的泛化性能随着模型大小平滑提升,与WebText2训练分布的偏移很小且增长非常缓慢。右图:泛化性能仅取决于训练分布的性能,而不取决于训练阶段。我们比较了收敛模型(点)与单个大模型(虚线)在训练过程中的泛化能力。

3.3 数据集大小和计算量与性能的关系

4. 描绘无限数据极限和过拟合

在第3节中,我们发现了语言建模性能的一些基本缩放定律。在这里,我们将研究一个大小为N的模型在D个token的数据集上训练时的性能,同时改变N和D。我们将凭经验证明,最优训练的测试损失符合公式(1.5)的缩放定律。这为我们在增加模型大小的同时需要多少数据来控制过拟合提供了指导。

4.1 提出的L(N, D)方程

4.2 结果

图9 提前停止的测试损失L(N, D)可预测地依赖于数据集大小D和模型大小N,遵循公式(1.5)。左图:对于大的D,性能是N的纯幂律。对于较小的固定D,随着N的增加和模型开始过拟合,性能停止改善。(反之亦然,见图4。)右图:过拟合的程度主要取决于比率N^αD/D,如公式(4.3)所预测。直线是我们对该方程的拟合。
图9 提前停止的测试损失L(N, D)可预测地依赖于数据集大小D和模型大小N,遵循公式(1.5)。左图:对于大的D,性能是N的纯幂律。对于较小的固定D,随着N的增加和模型开始过拟合,性能停止改善。(反之亦然,见图4。)右图:过拟合的程度主要取决于比率N^αD/D,如公式(4.3)所预测。直线是我们对该方程的拟合。

5. 模型大小和训练时间的缩放定律

本节将证明一个简单的缩放定律可以很好地描述损失作为模型大小N和训练时间的函数。首先,我们将解释如何使用【MKAT18, An empirical model of large-batch training, 2018, arXiv:1812.06162】的结果来定义一个通用的训练步数 $S_{min}$,这考虑了我们大多数模型没有在最优批量大小下训练的事实。然后,我们将证明我们可以使用公式(1.6)来拟合损失对模型大小和训练时间的依赖性。稍后,我们将使用这些结果来预测训练计算在模型大小和训练时间之间的最优分配,然后证实该预测。

5.1 根据 $B_{crit}(L)$ 进行训练调整

图10 随着性能提升,临界批量大小Bcrit遵循损失的幂律,并且不直接依赖于模型大小。我们发现,损失每降低13%,临界批量大小大约翻倍。Bcrit是根据图18中显示的数据凭经验测量的,但它也大致由梯度噪声尺度预测,如[MKAT18]中所述。
图10 随着性能提升,临界批量大小Bcrit遵循损失的幂律,并且不直接依赖于模型大小。我们发现,损失每降低13%,临界批量大小大约翻倍。Bcrit是根据图18中显示的数据凭经验测量的,但它也大致由梯度噪声尺度预测,如[MKAT18]中所述。

5.2 L(N, S_min)的结果以及模型大小和计算量的性能

图11 当我们固定总计算量或训练步数时,性能遵循公式(5.6)的L(N, S)。每个计算预算值都有一个相关的最优模型大小,可以最大化性能。在小的S处拟合效果不佳是不足为奇的,因为学习曲线的幂律方程在训练的非常早期会失效。
图11 当我们固定总计算量或训练步数时,性能遵循公式(5.6)的L(N, S)。每个计算预算值都有一个相关的最优模型大小,可以最大化性能。在小的S处拟合效果不佳是不足为奇的,因为学习曲线的幂律方程在训练的非常早期会失效。

5.3 提前停止步骤的下界

A4 实验环境(总结)

A4 实验结果(总结)

A7 补充细节(缩写)

6. 最优计算预算分配

我们在图1的右上角展示了性能作为训练所用计算量的经验趋势。然而,这个结果是在固定批量大小B下训练得到的,而我们知道,实际上我们可以通过在第5.1节讨论的临界批量大小 $B_{crit}$ 下训练来更高效地训练。通过标准化到临界批量大小来纠正这种低效率,可以得到更清晰和更可预测的趋势。本节我们将调整此疏忽,并利用第5节的结果来确定模型大小N和训练处理的数据量 $2B_{crit}S_{min}$ 之间的最优计算分配。

6.1 最优性能与分配

PROTECTED_IMAGE_69____PROTECTED_IMAGE_70
图14 左图:每个计算预算Cmin值都有一个相关的最优模型大小N。最优模型大小随Cmin增长非常迅速,计算量每增加10倍,模型大小增加5倍。处理的数据样本数量构成了增长的其余部分,仅增长了2倍,相对温和。右图:经批量调整的优化步数也增长非常缓慢,甚至可能不增长,这意味着处理的数据样本增长的大部分可以用于增加批量大小。

6.2 来自L(N, S_min)的预测

6.3 矛盾与猜想

图15 在我们经验研究的模型尺寸之外很远的地方,我们发现我们的L(Cmin)和L(D)方程之间存在矛盾,这是由于计算高效训练所需的数据增长缓慢。交叉点标志着我们预期我们的预测会失效的点。该点的位置对我们幂律拟合的精确指数高度敏感。
图15 在我们经验研究的模型尺寸之外很远的地方,我们发现我们的L(Cmin)和L(D)方程之间存在矛盾,这是由于计算高效训练所需的数据增长缓慢。交叉点标志着我们预期我们的预测会失效的点。该点的位置对我们幂律拟合的精确指数高度敏感。

A5 结论(总结)

我们观察到语言模型对数似然损失与非嵌入参数数量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】等技术。

A6 附录(缩写)

A 幂律总结

为方便参考,我们下面提供了论文中描述的关键趋势的摘要。

<blockquote>

表4 关键趋势方程
表4 关键趋势方程

表5 趋势拟合的关键参数
表5 趋势拟合的关键参数

表6 计算高效训练的趋势
表6 计算高效训练的趋势

</blockquote>

B 计算高效前沿的经验模型

在本附录中,所有C、S和 $\alpha_C$ 的值都已针对在临界批量大小 $B_{crit}$ 下的训练进行了调整。为避免符号混乱,我们省略了“adj”标签。

B.1 定义方程

B.2 高效训练

B.3 与低效训练的比较

B.4 次优模型大小

C 警告

图16 左图:我们描述了提前停止发生的步骤,作为过拟合程度的函数。红线表示在5.3节中推导出的提前停止的下界。右图:我们展示了一系列在不同大小的数据集子样本上训练的3亿参数模型的训练和测试损失。测试损失通常遵循在无限制数据下运行的损失,直到发散。请注意,过拟合的程度(与无限数据极限相比)被L_test - L_train显著高估(每个运行用黑条表示)。
图16 左图:我们描述了提前停止发生的步骤,作为过拟合程度的函数。红线表示在5.3节中推导出的提前停止的下界。右图:我们展示了一系列在不同大小的数据集子样本上训练的3亿参数模型的训练和测试损失。测试损失通常遵循在无限制数据下运行的损失,直到发散。请注意,过拟合的程度(与无限数据极限相比)被L_test - L_train显著高估(每个运行用黑条表示)。

D 补充图表

D.2 Universal Transformer

图17 我们将重用参数的循环Transformer [DGV+18] 与标准Transformer进行比较。在参数数量相等的情况下,循环Transformer表现稍好,但在考虑重用并按FLOP比较时表现稍差。
图17 我们将重用参数的循环Transformer [DGV+18] 与标准Transformer进行比较。在参数数量相等的情况下,循环Transformer表现稍好,但在考虑重用并按FLOP比较时表现稍差。

D.3 批量大小

图18 这些图展示了对于大量损失L值和两种不同Transformer模型大小,对公式(5.1)的拟合。这些拟合被用于测量图10的Bcrit(L)。
图18 这些图展示了对于大量损失L值和两种不同Transformer模型大小,对公式(5.1)的拟合。这些拟合被用于测量图10的Bcrit(L)。

D.4 样本效率 vs 模型大小

图19 达到任何固定测试损失值所需的最小串行步数随着模型大小的增加而急剧减少。样本效率(此处显示为远低于临界批量大小的训练)也大大提高,当比较最小可能模型与非常大的模型时,提高了近100倍。
图19 达到任何固定测试损失值所需的最小串行步数随着模型大小的增加而急剧减少。样本效率(此处显示为远低于临界批量大小的训练)也大大提高,当比较最小可能模型与非常大的模型时,提高了近100倍。

D.5 上下文依赖性

PROTECTED_IMAGE_74____PROTECTED_IMAGE_75

D.6 学习率调度和误差分析

图22 我们在一个300万参数模型上测试了各种学习率调度,包括余弦衰减、线性衰减以及其他更快/更慢的衰减调度,如左图所示。在这些实验中,我们不衰减到零,因为我们发现这倾向于在训练结束时给出一个固定的改进。我们发现,只要学习率不太小且衰减不太快,性能就不强烈依赖于学习率。运行间的变化在损失上为0.05的水平,因此需要平均多次运行来验证小于此水平的性能变化。
图22 我们在一个300万参数模型上测试了各种学习率调度,包括余弦衰减、线性衰减以及其他更快/更慢的衰减调度,如左图所示。在这些实验中,我们不衰减到零,因为我们发现这倾向于在训练结束时给出一个固定的改进。我们发现,只要学习率不太小且衰减不太快,性能就不强烈依赖于学习率。运行间的变化在损失上为0.05的水平,因此需要平均多次运行来验证小于此水平的性能变化。

D.7 拟合细节和幂律质量

图23 L(N)的性能趋势,用幂律拟合比用对数等其他函数在质量上拟合得更好。
图23 L(N)的性能趋势,用幂律拟合比用对数等其他函数在质量上拟合得更好。

D.8 泛化与架构

图24 我们展示了对一系列数据集的评估,模型参数约为15亿。我们没有观察到深度对泛化的影响;泛化性能主要取决于训练分布的性能。12层模型在互联网书籍数据集上过拟合,我们展示了提前停止的性能;我们在其他实验中没有看到这个令人惊讶的结果。
图24 我们展示了对一系列数据集的评估,模型参数约为15亿。我们没有观察到深度对泛化的影响;泛化性能主要取决于训练分布的性能。12层模型在互联网书籍数据集上过拟合,我们展示了提前停止的性能;我们在其他实验中没有看到这个令人惊讶的结果。