Scaling Laws for Neural Language Models
Jan 2020
https://arxiv.org/abs/2001.08361
Jared Kaplan*, Sam McCandlish*, Tom Henighan, Tom B. Brown, Benjamin Chess, Rewon Child, Scott Gray, Alec Radford, Jeffrey Wu, Dario Amodei
[Johns Hopkins University, OpenAI]
我们研究了交叉熵损失下语言模型性能的经验缩放律。损失以幂律的形式随模型大小、数据集大小和用于训练的计算量而缩放,有些趋势跨越了七个数量级以上。网络宽度或深度等其他架构细节在大范围内影响最小。简单方程控制过拟合对模型/数据集大小的依赖性以及训练速度对模型大小的依赖。这些关系允许我们确定固定计算预算的最佳分配。较大的模型明显更具采样效率,因此最优计算效率训练涉及在相对少量的数据上训练非常大的模型,并在收敛之前显著停止。
1简介
语言为人工智能的研究提供了一个自然的领域,因为绝大多数推理任务都可以用语言有效地表达和评估,而世界文本通过生成建模为无监督学习提供了丰富的数据。深度学习最近在语言建模方面取得了快速进展,最先进的模型[RNSS18、DCLT18、YDY+19、LOG+19、RSR+19]在许多特定任务上接近人类水平的表现[WPN+19],包括连贯的多段图提示文本样本的合成[RWC+19]。
人们可能会期望语言建模性能取决于模型架构、神经模型的大小、用于训练它们的计算能力以及用于训练过程的数据。在这项工作中,我们将实证研究语言建模损失对所有这些因素的依赖性,重点关注Transformer架构[VSP+17,LSP+18]。语言任务表现的高上限和低下限使我们能够研究超过七个数量级的趋势。在整个过程中,我们将观察作为训练时间、上下文长度、数据集大小、模型大小和计算预算的函数的性能的精确幂律缩放。
1.1概述
我们对Transformer语言模型的主要发现如下:
图1随着模型大小、数据集大小和用于训练的计算机数量的增加,语言建模性能得到了平稳的提高2。为了获得最佳性能,必须同时放大所有三个因素。当不受其他两个因素的制约时,经验表现与每个单独的因素都有幂律关系。
性能强烈依赖于规模,弱依赖于模型形状:模型性能最强烈地依赖于规模。规模由三个因素组成:模型参数的数量N(不包括嵌入)、数据集的大小D和用于训练的计算量C。在合理的范围内,性能对其他架构超参数(如深度与宽度)的依赖性非常弱。(第3节)
平滑幂律:
性能与三个比例因子N、D、C中的每一个都有幂律关系,而不受其他两个比例因子的制约,趋势跨越六个数量级以上(见图1)。我们在高端市场没有观察到偏离这些趋势的迹象,尽管在达到零亏损之前,业绩必须最终趋于平稳。(第3节)
过度拟合的普遍性:
只要我们同时扩大N和D,性能就会得到可预测的改善,但如果N或D保持不变,而另一个增加,则会进入回报递减的状态。性能损失可预测地取决于比率N0.74/D,这意味着每次我们将模型大小增加8倍时,我们只需要将数据增加大约5倍就可以避免损失。(第4节)
训练的普遍性:
训练曲线遵循可预测的幂律,其参数大致与模型大小无关。通过推断训练曲线的早期部分,我们可以大致预测如果我们训练更长时间会造成的损失。(第5节)
传输性能随测试性能而提高:
当我们在具有与训练不同分布的文本上评估模型时,结果与训练验证集上的结果强相关,损失的偏移量大致恒定——换句话说,转移到不同分布会带来恒定的惩罚,但在其他方面会根据训练集的性能大致提高。(第3.2.2节)
样品效率:
大型模型比小型模型更具样本效率,可以用更少的优化步骤(图2)和更少的数据点(图4)达到相同的性能水平。
收敛效率低下:
当在固定的计算预算C内工作,但对模型大小N或可用数据D没有任何其他限制时,我们通过训练非常大的模型并在显著不足收敛的情况下停止来获得最佳性能(见图3)。因此,最大计算效率的训练将比基于训练小模型以收敛的预期更具样本效率,数据需求随着训练计算的D~C 0.27增长非常缓慢。(第6节)
最佳批量大小:
训练这些模型的理想批量大小大致仅为损失的幂,并且可以通过测量梯度噪声标度来确定[MKT18];对于我们可以训练的最大模型,大约有100-200万个token处于收敛状态。(第5.1节)
总之,这些结果表明,当我们适当地扩大模型大小、数据和计算时,语言建模性能会得到平滑和可预测的提高。我们预计,较大的语言模型将比当前模型表现更好,样本效率更高。
图2我们展示了一系列语言模型训练运行,模型的大小从103到109个参数不等(不包括嵌入)。
图3随着越来越多的计算可用,我们可以选择分配多少来训练更大的模型、使用更大的批次和训练更多的步骤。我们用10亿倍的计算量来说明这一点。为了优化计算效率的训练,大部分增加应该用于增加模型大小。需要相对较小的数据增量来避免重复使用。在数据的增加中,大多数都可以用于通过更大的批量来提高并行性,只需要很小的串行训练时间增加。
1.2缩放律概述
当性能仅受非嵌入参数数量N、数据集大小D或最佳分配的计算预算Cmin的限制时,可以使用幂律来预测训练为自回归模型语言的Transformer的测试损失(见图1):
1.对于参数数量有限的模型,在足够大的数据集上进行收敛训练:
2.对于使用具有早期停止的有限数据集训练的大型模型:
3.当使用有限的计算量、足够大的数据集、最优大小的模型和足够小的批量进行训练时(优化3使用计算):
图4左图:根据方程(1.5),早期停止测试损失L(N,D)随数据集大小D和模型大小N而变化,这是可预测的。右图:在初始过渡期之后,所有模型大小N的学习曲线都可以用方程(1.6)拟合,该方程是根据Smin参数化的,Smin是大批量训练时的步骤数(详见第5.1节)。
这些关系在Cmin中保持8个数量级,在N中保持6个数量级。在D中保持2个数量级以上。它们非常弱地依赖于模型形状和其他Transformer超参数(深度、宽度、自注意头的数量),特定数值与Webtext2训练集[RWC+19]相关。幂律αN、αD、αmin C规定了当我们放大N、D或Cmin时预期的性能改进程度;例如,将参数数量增加一倍会产生一个损失,该损失要小2倍-αN=0.95。Nc、Cmin c和Dc的精确数值取决于词汇大小和token化,因此没有基本意义。决定数据并行性的速度/效率折衷的临界批大小([MKAT18])也大致遵循L中的幂律:
方程(1.1)和(1.2)一起表明,随着模型大小的增加,我们应该根据D∞NαNαD~N0.74亚线性地增加数据集大小。事实上,我们发现有一个结合了(1.1)和(1.2)的单一方程,它控制了对N和D的同时依赖性,并控制了过拟合的程度:
如图4左侧所示。我们推测,这种函数形式也可能将其他生成建模任务的训练对数似然性参数化。当在无限数据限制中为有限数量的参数更新步骤S训练给定模型时,在初始过渡期之后,学习曲线可以通过精确拟合(见图4右侧)
其中,Sc≈2.1×103,αS≈0.76,Smin(S)是使用方程(5.4)估计的优化步骤(参数更新)的最小可能数量。当在固定计算预算C内进行训练,但没有其他约束时,方程(1.6)预测最佳模型大小N、最佳批处理大小B、最佳步骤数S和数据集大小D应随着
具有
这与经验最优结果N∞C 0.73min、B∞C 0.24min和S∞C 0.03min非常吻合。随着计算预算C的增加,它应该主要用于更大的模型,而不会显著增加训练时间或数据集大小(见图3)。这也意味着,随着模型越来越大,它们的样本效率也越来越高。在实践中,由于硬件限制,研究人员通常训练较小的模型的时间比最大计算效率要长。最佳性能取决于作为幂律的总计算(见等式(1.3))。
我们为方程(1.5)提供了一些基本的理论动机,分析了学习曲线拟合及其对训练时间的影响,并对我们的每个tokens的结果进行了细分。我们还对LSTM和经常性Transformer[DGV+18]进行了一些简短的比较。
1.3符号
我们使用以下符号:
•L——nats中的交叉熵损失。通常,它将在上下文中对tokens进行平均,但在某些情况下,我们会报告上下文中特定tokens的损失。
•N–模型参数的数量,不包括所有词汇和位置嵌入
•C≈6NBS–总非嵌入训练计算的估计值,其中B是批量大小,S是训练步骤数(即参数更新)。我们引用PF天数的数值,其中一个PF天数=1015×24×3600=8.64×1019浮点运算。
•D–数据集大小(以tokens为单位)
•Bcrit–临界批量[MKAT18],在第5.1节中定义和讨论。在临界批量大小下的训练提供了时间和计算效率之间的大致最优折衷。
•Cmin——达到给定损失值的最小非嵌入计算量的估计值。这是如果在比临界批量小得多的批量大小下训练模型时将使用的训练计算。
•Smin——达到给定损失值所需的最小训练步骤数的估计值。这也是如果在比临界批量大得多的批量大小下训练模型,将使用的训练步骤的数量。
•αX–损失标度的幂律指数为L(X)≈1/XαX,其中X可以是N、D、C、S、B、Cmin中的任何一个。
2背景和方法
我们在WebText2上训练语言模型,WebText2是WebText[RWC+19]数据集的扩展版本,使用字节对编码[SHB15]进行token,词汇大小nvocab=50257。我们优化了在1024个tokens上下文上平均的自回归对数似然性(即交叉熵损失),这也是我们的主要性能指标。我们在WebText2测试分发版和其他一些文本分发版中记录了损失。我们主要训练仅解码器[LSP+18,RNSS18]Transformer[VSP+17]模型,尽管我们也训练LSTM模型和通用Transformer[DGV+18]进行比较。
2.1Transformer的参数和计算比例
我们使用超参数nlayer(层数)、dmodel(残差流的维度)、dff(中间前馈层的维度),dattn(注意力输出的维度)和nhead(每层注意力头的数量)来参数化Transformer架构。我们在输入上下文中包括nctxtokens,除非另有说明,否则nctx=1024。
我们使用N来表示模型大小,我们将其定义为非嵌入参数的数量
我们排除了偏见和其他次要术语。我们的模型在嵌入矩阵中也有nvocabdmodel参数,并使用nctxdmodel参数进行位置嵌入,但在讨论“模型大小”N时,我们不包括这些参数;我们将看到,这会产生明显更清洁的缩放律。
评估Transformer的正向通过大致包括
加法-乘法运算,其中2的因子来自矩阵乘法中使用的乘法-累加运算。表1中包含了更详细的每个操作参数和计算计数。
表1Transformer模型的参数计数和计算(正向通过)估计。省略了诸如非线性、偏差和层归一化之类的子引导项。对于dmodel>nctx/12的上下文和模型,每个tokens的上下文相关计算成本在总计算中所占比例相对较小。由于我们主要研究dmodel>>nctx/12的模型,因此我们在训练计算估计中不包括上下文相关项。考虑到向后传递(大约是向前传递计算的两倍),我们将估计的非嵌入计算定义为每个训练tokens的C≈6N浮点运算符。
2.2训练程序
除非另有说明,否则我们使用Adam优化器[KB14]为固定的2.5×105个步骤训练模型,批量大小为512个1024个tokens序列。由于内存限制,我们最大的模型(超过1B个参数)是用Adafactor[SS18]训练的。我们试验了各种学习率和时间表,如附录D.6所述。我们发现,收敛的结果在很大程度上与学习进度无关。除非另有说明,否则我们数据中包括的所有训练都使用了一个学习率计划,其中包括3000步线性热身,然后余弦衰减为零。
2.3数据集
我们在[RWC+19]中描述的WebText数据集的扩展版本上训练我们的模型。最初的WebText数据集是从Reddit到2017年12月的出站链接的网络片段,至少收到了3个因果报应。在第二个版本WebText2中,我们添加了2018年1月至10月期间的Reddit出站链接,也至少有3个因果报应。因果报应阈值作为一种启发式方法,可以判断人们是否觉得这种联系有趣或有用。新链接的文本是用Newspaper3k python库提取的。总的来说,该数据集由203M个文档组成,包含96GB的文本和1.62×1010个单词(由wc定义)。然后,我们应用[RWC+19]中描述的可逆token器,它产生2.29×1010个token。我们保留了6.6×108的这些token作为测试集,我们还测试了类似的图书语料库[ZKZ+15]、公共爬行[Fou]、英语维基百科和一系列公开的互联网图书。
3实证结果与基本幂律
为了表征语言模型的伸缩性,我们训练了各种各样的模型,改变了许多因素,包括:
•模型大小(大小范围从768到15亿非嵌入参数)
•数据集大小(从2200万到230亿token不等)
•形状(包括深度、宽度、注意力头和前馈尺寸)
•上下文长度(大多数跑步为1024,尽管我们也尝试使用较短的上下文)
•批量大小(大多数运行为2 19,但我们也会对其进行更改以测量关键批量大小)
图5当非嵌入参数的总数N保持固定时,性能非常温和地取决于模型形状。在各种形状的情况下,损耗变化仅为百分之几。通过使用对L(N)的拟合作为基线来补偿参数计数中的小差异。纵横比尤其可以变化40倍,同时仅轻微影响性能;(nlayer,dmodel)=(64288)的损失在[RWC+19]中使用的(481600)模型的3%以内。
图6左图:当我们包括嵌入参数时,性能似乎在很大程度上取决于层的数量以及参数的数量。右图:当我们排除嵌入参数时,具有不同深度的模型的性能收敛于单一趋势。只有层数少于2层或深度与宽度之比极端的模型才显著偏离趋势。在本节中,我们将显示数据以及基于经验的拟合,将理论分析推迟到后面的部分。
3.1近似Transformer形状和超参数独立性
当我们固定总的非嵌入参数计数N时,转换器性能对形状参数nlayer、nhead和dff的依赖性非常弱。为了建立这些结果,我们在改变单个超参数的同时训练了具有固定大小的模型。这对于nhead来说是最简单的。当改变N层时,我们同时改变了d模型,同时保持N≈12n层2模型不变。类似地,为了在固定的模型大小下改变dff,我们还根据表1中的参数计数的要求,同时改变了dmodel参数。如果较深的变形金刚有效地表现为较浅模型的集合,那么nlayer的独立性将随之而来,正如ResNets[VWB16]所建议的那样。结果如图5所示。
3.2非嵌入参数计数为N的性能
在图6中,我们显示了各种模型的性能,从形状(nlayer,dmodel)=(2128)的小模型到形状从(64288)到(207768)的十亿参数模型。在这里,我们已经在完整的WebText2数据集上训练到接近收敛,并且没有观察到过拟合(可能除了最大的模型)。如图1所示,我们发现非嵌入参数计数为N的稳定趋势,该趋势可以拟合到方程(1.5)的第一项,因此
为了观察这些趋势,研究作为N函数的性能是至关重要的;如果我们使用总参数计数(包括嵌入参数),则趋势会有些模糊(见图6)。这表明可以在不影响性能的情况下缩小嵌入矩阵,正如最近的工作[LCG+19]中所看到的那样。尽管这些模型是在WebText2数据集上训练的,但它们在各种其他数据集上的测试损失也是N中的幂律,幂几乎相同,如图8所示。
3.2.1与LSTM和通用Transformer的比较
在图7中,我们将LSTM和Transformer性能作为非嵌入参数计数N的函数进行了比较。LSTM使用相同的数据集和上下文长度进行训练。我们从这些图中看到,对于上下文中早期出现的tokens,LSTM的性能与Transformer一样好,但对于后期的tokens,不能与Transformer的性能相匹配。我们提出了性能和上下文位置之间的幂律关系附录D.5,其中较大模型的幂越大,表明快速识别模式的能力越强。
我们还将附录中图17中的标准Transformer与常规Transformer[DGV+18]的性能进行了比较。这些模型重复使用参数,因此作为N的函数,性能稍好,但每个参数需要额外的计算。
3.2.2数据分布的泛化
我们还在一组额外的文本数据分布上测试了我们的模型。这些数据集上的测试损失作为模型大小的函数如图8所示;在所有情况下,模型仅在WebText2数据集上进行训练。我们看到,这些其他数据分布的损失随着模型大小的增加而顺利改善,与WebText2的改进直接平行。我们发现,泛化几乎完全取决于分布内验证损失,而不取决于训练的持续时间或收敛的接近程度。我们还观察到与模型深度无关(见附录D.8)。
3.3数据集大小和计算的性能
我们在图1中显示了测试损失的经验趋势,作为数据集大小D(以tokens为单位)和训练计算C的函数。
对于D的趋势,我们在WebText2数据集的固定子集上训练了一个(nlayer,nembd)=(361280)的模型。一旦测试损失停止减少,我们就停止了训练。我们看到,由此产生的测试损失可以用简单的幂律拟合
数据集大小。数据和拟合如图1所示。
训练期间使用的非嵌入计算的总量可以估计为C=6NBS,其中B是批量大小,S是参数更新的次数,并且因子6考虑了前向和后向传递。因此,对于给定的C值,我们可以扫描具有不同N的所有模型来找到模型
图8左图:其他数据分布的泛化性能随着模型大小的增加而顺利提高,与WebText2训练分布相比,只有一个很小且增长非常缓慢的偏移。右:泛化性能仅取决于训练分配性能,而不取决于训练阶段。我们将收敛模型(点)的泛化与单个大型模型(虚线)的泛化进行比较。在步骤S=C6BS上具有最佳性能。注意,在这些结果中,所有模型的批量大小B保持不变,这意味着这些经验结果并不是真正的最优结果。我们将在后面的章节中使用调整后的Cmin来解释这一点,以产生更清洁的趋势。结果显示为图1中左侧图上的粗黑线。它可以与
该图还包括个体学习曲线的图像,以澄清何时个体模型是最优的。我们稍后将更深入地研究计算的最佳分配。数据有力地表明,样本效率随着模型大小的增加而提高,我们也在附录中的图19中直接说明了这一点。
4绘制无限数据限制和过度拟合
在第3节中,我们发现了语言建模性能的一些基本缩放律。在这里,我们将研究在具有Dtokens的数据集上训练的大小为N的模型的性能,同时改变N和D。我们将根据经验证明,最佳训练的测试损失符合方程(1.5)的缩放律。这为我们在控制过拟合的同时训练不断增加的模型需要多少数据提供了指导。
4.1拟定的L(N,D)方程
我们选择了参数化(1.5)(为了方便起见,在此重复):
使用三个原则:
1.词汇大小或token化的变化预计会通过一个整体因素重新调整损失。L(N,D)的参数化(以及损失的所有模型)必须自然地允许这样的重新缩放。
2.固定D并发送N→ ∞, 总损失应该接近L(D)。相反,固定N并发送D→ ∞ 损失必须接近L(N)。
3.L(N,D)在D=∞时应该是解析的,因此它在1/D上具有整数幂级数展开。对这一原则的理论支持明显弱于前两个原则。
我们对L(N,D)的选择满足了第一个要求,因为我们可以随着词汇表的变化重新缩放Nc,Dc。这也意味着Nc、Dc的值没有根本意义。
图9根据方程(1.5),早期停止测试损失L(N,D)可预测地取决于数据集大小D和模型大小N。左图:对于较大的D,性能是N的直幂律。对于较小的固定D,性能随着N的增加而停止改善,模型开始过拟合。(反之亦然,见图4。)右:过拟合的程度主要取决于方程(4.3)中预测的比值NαNαD/D。这条线是我们对该方程的拟合。
由于当测试损失停止以相同的方式改进和优化所有模型时,我们会提前停止训练,因此我们预计较大的模型应该总是比较小的模型表现更好。但对于固定的有限D,我们也不期望任何模型能够接近最佳可能损失(即文本的熵)。同样,具有固定尺寸的模型将受到容量限制。这些考虑激发了我们的第二条原则。注意,L(N)在无穷大D和L(D)在无穷大N的知识完全确定了L(N,D)中的所有参数。
第三个原则更具推测性。有一个简单而普遍的原因,人们可能会期望过拟合在非常大的D下按比例缩放?1/D。过拟合应该与数据集的方差或信噪比有关[AS17],这按比例缩放为1/D。这个期望应该适用于任何光滑损失函数,因为我们期望能够扩展D的损失→ ∞ 限度然而,这一论点假设1/D校正优于其他方差源,例如有限的批量大小和优化效果的其他限制。如果没有实证的证实,我们就不会对其适用性充满信心。
我们的第三个原理解释了方程(1.5)中N和D的作用之间的不对称性。非常相似的对称表达式4是可能的,但它们不会有整数幂的1/D展开,并且需要引入额外的参数。
在任何情况下,我们都会看到我们的L(N,D)方程很好地拟合了数据,这是我们L(N,D)模拟的最重要的理由。
4.2结果
我们用10%的脱落率对所有模型进行正则化,并通过跟踪测试损失并在其不再减少时停止。结果如图9所示,包括方程(1.5)中四个参数αN、αD、Nc、Dc的拟合:
我们获得了极好的拟合,除了数据集减少了1024倍,达到约2×107个token的运行之外。对于这样一个小的数据集,一个epoch只包含40个参数更新。也许这样一个微小的数据集代表了一种不同的语言建模机制,因为过拟合在训练的早期就发生了(见图16)。还要注意,这些参数与第3节中获得的参数略有不同,因为这里我们拟合的是完整的L(N,D),而不仅仅是L(N、∞)或L(∞,D)。
为了绘制无限数据极限的边界,我们可以直接研究过拟合的程度。对于除最大模型外的所有模型,当使用完整的22BtokensWebText2数据集进行训练时,我们没有看到过拟合的迹象,因此我们可以将其作为D=∞的代表。因此,我们可以通过将有限D定义和研究为N,D的函数来将其与无限数据极限进行比较。事实上,我们从经验上看到,δL仅取决于N和D的特定组合,如图16所示。这遵循方程(1.5)的缩放律,这意味着
图10随着性能的提高,临界批量大小Bcrit在损失中遵循幂律,而不直接取决于模型大小。我们发现,损失每减少13%,临界批量大小就会增加一倍。Bcrit是根据图18中所示的数据进行经验测量的,但它也可以通过梯度噪声尺度进行粗略预测,如[MKAT18]所示。
注意,在大D时,这个公式也有1/D的幂级数展开。我们估计,不同随机种子的损失变化大约为0.02,这意味着当训练到收敛阈值内时,为了避免过度拟合,我们需要
通过这种关系,小于109个参数的模型可以在22BtokensWebText2数据集上以最小的过拟合进行训练,但我们最大的模型将遇到一些轻微的过拟合。更普遍地说,这种关系表明,数据集大小可以在模型大小中亚线性增长,同时避免过拟合。然而,请注意,这通常并不代表最大计算效率的训练。我们还应该强调,在改变数据集和模型大小的同时,我们没有优化正则化(例如丢弃概率)。
5个具有模型大小和训练时间的缩放律
在本节中,我们将证明一个简单的缩放律可以很好地描述作为模型大小N和训练时间函数的损失。首先,我们将解释如何使用[MKT18]的结果来定义通用训练步骤Smin,这解释了我们的大多数模型都没有以最佳批量进行训练的事实。然后,我们将证明,我们可以使用方程(1.6)拟合损失的模型大小和训练时间依赖性。稍后,我们将使用这些结果来预测模型大小和训练时间之间的训练计算的最佳分配,然后确认该预测。
5.1 Bcrit训练调整(L)
[MKAT18]中开发了一个关于训练批量依赖性的简单经验理论(另见[SLA+18,ZLN+19])。有人认为,训练有一个关键的批量大小Bcrit;对于B到Bcrit,可以在计算效率下降非常小的情况下增加批量大小,而对于B>Bcrit的情况,B的增加会导致回报递减。也有人认为,梯度噪声尺度为Bcrit提供了一个简单的预测,除了通过已经获得的损失值之外,两者都不直接取决于模型大小。这些结果可用于预测训练时间和计算将如何随批次大小而变化。为了尽可能有效地利用训练时间和计算,最好使用批量大小B≈Bcrit进行训练。在B>>Bcrit中进行训练可最大限度地减少训练步骤的数量,而B Bcrit可最大程度地减少计算的使用。
更具体地说,证明了对于各种各样的神经网络任务,训练步骤的数量S和处理的数据示例的数量E=BS满足简单关系
当训练到损失L的任何固定值时。这里,Smin是达到L所需的最小步骤数,而Emin是必须处理的最小数据示例数。我们在附录中展示了图18中Transformer的关系式(5.1)。此关系定义了关键批次大小
其是损失的目标值的函数。在临界批量大小下进行训练可以实现大致最优的时间/计算权衡,需要2分钟的训练步骤和处理E=2分钟的数据示例。
在图10中,我们绘制了两个不同模型的临界批量大小和梯度噪声标度5作为训练损失的函数。我们看到Bcrit(L)与模型大小无关,仅取决于损失L。因此[MKT18]的预测仍然适用于Transformer语言模型。临界批量大小可以与损失中的幂律拟合
其中B*≈2×108和αB≈0.21。
我们为Bcrit(L)选择了这个参数化,因为随着损失接近其最小值Lmin,梯度噪声尺度预计会发散,我们预计Bcrit会跟踪这个噪声尺度。我们不知道Lmin,因为我们没有看到我们的模型正在接近它的迹象,但Lmin>0,因为自然语言的熵是非零的。由于Lmin显然比我们获得的L值小得多,我们使用了一个参数化,其中Bcrit发散为L→ 0
我们将使用Bcrit(L)来估计在批量大小B=219个tokens下训练时的训练步骤数S与在B>>Bcrit下训练时训练步骤数之间的关系。这很简单
对于任何给定的损失目标值L。如果我们以B Bcrit(L)进行训练,这也定义了用大小为N的模型训练到L所需的计算的临界值。这是
其中C=6NBS估计在批量大小B下使用的(非嵌入)计算。
5.2 L(N,Smin)和性能与模型大小和计算的结果
现在,我们将使用方程(5.4)中定义的Smin来获得在无限数据限制下损失对模型大小和训练时间的依赖性的简单而普遍的拟合。我们将使用方程(1.6)拟合稳定的Adam优化训练跑,为了方便起见,在此重复:
损失。我们包括学习率时间表的热身期后的所有训练步骤,并使用以下参数找到数据的拟合:
图11当我们固定总计算或训练步骤数时,性能遵循方程(5.6)中的L(N,S)。计算预算的每个值都有一个相关的最佳模型大小,可以最大限度地提高性能。小S的中等拟合并不令人惊讶,因为学习曲线的幂律方程在训练初期就崩溃了。
使用这些参数,我们获得了图4中的学习曲线拟合。尽管拟合并不完美,但考虑到方程(5.6)的简单性,我们认为它们非常有说服力。
数据和拟合可以用一种不同的、更有趣的方式进行可视化,如图11所示。在那里,我们研究了作为模型大小函数的测试损失,同时固定了训练中使用的总非嵌入计算C或步骤S的数量。对于拟合,我们使用方程(5.5)和(5.4)以及上述参数和方程(5.6)。
损失对Smin的幂律依赖性反映了优化器动力学和损失景观的相互作用。由于拟合在训练后期是最好的,当损失可能近似为二次方时,功率线应该提供关于损失的Hessian谱的信息。其普遍性表明,Hessian特征值密度大致与模型大小无关。
5.3提前停止步骤的下限
L(N,Smin)的结果可用于推导当训练是数据受限时应发生早期停止的步骤的下限(和粗略估计)。它的动机是,给定模型的有限和无限D学习曲线将非常相似,直到我们达到Smin≈Sstop。因此,过拟合应该与在Sstop简单结束训练的校正成比例。这将低估Sstop,因为事实上,当我们有一个有限的D时,测试损失会减少得更慢,因此我们需要更多的训练步骤才能在有限的D下达到最佳测试损失。这一推理导致了不等式
其中L(N,∞)是收敛损失,用无限可用数据进行评估。该不等式及其与经验数据的比较如附录中的图16所示。在该图中,Sstop和L(N,D)的值是经验值(尽管Sstop被调整为模拟在B>>Bcrit时的训练),而L(N、∞)是根据在D=∞时评估的对L(N和D)的拟合来计算的。
6计算预算的优化分配
我们在图1的右上角显示了作为训练期间使用的计算的函数的性能的经验趋势。然而,这一结果涉及到在固定的批量大小B下进行训练,而我们知道,事实上,通过在第5.1节中讨论的批量大小Bcrit下训练,我们可以更有效地进行训练6。大的和小的损失值可以分别用更少的样本或更少的步骤来实现,并且通过标准化到临界批量来纠正这种低效率,从而产生更清洁、更可预测的趋势。
在本节中,我们将针对这种疏忽进行调整。更重要的是,我们将使用第5节的结果来确定模型大小N和训练期间处理的数据量之间的最佳计算分配,即2BcritSmin。我们将通过使用L(N,Smin)的方程,从经验和理论上确定这种分配,我们将证明这些方法是一致的。
6.1最佳性能和分配
让我们首先研究损失作为方程(5.5)中最优分配计算的函数。结果如图13所示,以及幂律拟合。我们看到,与图1的计算图相比,Cmin的新拟合有所改进。
给定L(Cmin),很自然地要求最优模型大小N(Cmin。最佳模型尺寸如图14所示。我们观察到N(Cmin)可以很好地与幂律拟合
在图12中,我们展示了次优大小的训练模型的效果(见附录B.4)。根据定义Cmin lect 6NBcritS,因此我们可以使用N(Cmin)来提取进一步的结果。特别是,由于先前的拟合显示B∞L−4.8和L∞C−0.05 min,我们可以得出Bcrit∞C 0.24 min的结论。这使我们得出结论,最佳步数只会随着计算而缓慢增长,与图14中的经验结果相匹配。事实上,测量的指数足够小,我们的结果甚至可能与零的指数一致。
因此,我们得出的结论是,当我们用优化的计算分配来扩大语言建模时,我们应该主要增加模型大小N,同时通过B∞Bcrit来扩大批量大小,串行步骤数量的增加可以忽略不计。由于计算高效训练使用相对较少的优化步骤,因此可能需要在加快早期训练动态方面进行额外的工作。
6.2 L(N,Smin)的预测
L(Cmin)和分配的结果可以根据第5节中获得的L(N,Smin)方程进行预测。给定我们的L(N,Smin)方程,我们可以用Smin=Cmin6NB代替,然后找到作为N函数的损失的最小值,同时固定训练计算。我们在附录B中详细执行了该程序,其中我们还提供了一些额外的预测。
对于作为训练计算函数的损失,我们预测
与图13的指数非常一致。我们还预测
这也与图14的缩放比例相匹配,在几个百分比以内。我们的缩放律为语言建模的性能提供了一个预测框架。
图15远远超出了我们根据经验研究的模型大小,我们发现L(Cmin)和L(D)的方程之间存在矛盾,因为计算高效训练所需的数据增长缓慢。这个交点标志着我们预计我们的预测会在这个点之前崩溃。这个点的位置对幂律拟合的精确指数非常敏感。
6.3矛盾与猜想
在计算、数据或模型大小较大的情况下,我们没有观察到偏离直幂律趋势的迹象。然而,我们的趋势最终必须趋于平稳,因为自然语言具有非零熵。
事实上,本节中描述的计算高效训练的趋势已经包含了明显的矛盾。在比这里记录的规模高出几个数量级的规模下,由于使用计算训练数据的增长缓慢,L(Cmin)规模定律预测的性能下降到可能的水平以下。这意味着我们的缩放律必须在这一点之前分解,但我们推测交叉点有更深的含义:它提供了Transformer语言模型达到最大性能的点的估计。
由于计算高效训练所使用的数据量随着计算预算的增长而缓慢增长,因此L(Cmin)预测的性能最终达到了L(D)幂律设定的下限(见图15)。让我们更详细地解决这个问题。
为了控制过拟合,第4节的结果表明,我们应该将数据集大小缩放为
其中我们使用了图14中的计算效率N(Cmin)。
让我们将其与计算高效训练的数据需求进行比较。如果我们以临界批量大小(即C=2Cmin)进行训练,并且在训练过程中从不重复使用数据,我们发现数据使用量随着计算的增长而增长
这是数据集大小随着计算而有效增长的最大速率,因为这意味着我们只为一个时期进行训练。但它使数据集的增长速度比方程(6.6)慢得多。这似乎意味着,即使训练过程从未重复使用任何数据,计算效率高的训练最终也会遇到过拟合问题!
根据图1,我们预计,当我们受到数据集大小的限制(即过拟合)时,损失应按L(D)∞D−0.095的比例缩放。这意味着,一旦我们受到数据限制,损失将按L(D(Cmin))≈C−0.03分钟计算。再一次,我们有一个矛盾,因为这最终将与我们对图13中L(Cmin)的预测相交,在图13中,我们发现了一个标度L(Cmn)∞C−0.050分钟。L(D(Cmin))和L(Cmin
尽管数值是高度不确定的,根据幂律拟合的指数的精确值,在任何一个方向上都会以一个数量级或幅度变化。最明显的解释是,我们的缩放律在达到这一点时或之前就崩溃了,这一点在计算和模型大小上都还有很多数量级的差距。
人们也可能猜测,这个交叉点有更深的含义。如果我们不能在没有质量不同的数据要求的情况下将模型大小增加到N*以上,也许这意味着一旦我们达到C*min和N*,我们就提取了自然语言数据中可用的所有可靠信息。在这种解释中,L*将为自然语言的每符号熵7提供一个粗略估计。在这种情况下,我们预计损失趋势将在L*或之前趋于平稳。
我们可以通过考虑添加了噪声的训练数据集版本来猜测L(Cmin)的函数形式。例如,我们可以向模型显示的每个上下文附加一个随机的tokens字符串,以通过恒定的加法因子人为地增加损失。然后,与本底噪声的距离L−Lnoise将是一个更有意义的性能指标,即使该距离的微小减小也可能代表定性性能的显著提高。由于人工噪声会对我们所有的趋势产生同等的影响,6.8的临界点不会改变(除了L*的绝对值),即使它发生在平稳之后,也可能是有意义的。
7相关工作
幂律可以产生于各种各样的来源[THK18]。密度估计[Was06]和随机森林模型[Bia12]中模型和数据集大小的幂律标度可能与我们的结果有关。这些模型表明,幂律指数可能具有非常粗略的解释,作为数据中相关特征数量的倒数。
一些早期的[BB01,Goo01]工作发现了性能和数据集大小之间的幂律缩放。最近的工作[HNA+17,HAD19]也研究了模型大小和数据大小之间的缩放;他们的作品可能是有史以来最接近我们的作品。然而,请注意,[HNA+17]发现了数据集大小与模型大小的超线性缩放,而我们发现了亚线性缩放。我们关于计算优化分配的发现与[Kom19]有一些相似之处,包括幂律学习曲线。EfficientNets[TL19]似乎也遵循精度和模型大小之间的近似幂律关系。最近的工作[RRBS19b]研究了各种数据集的数据集大小和模型大小的缩放,并适用于与我们类似的模拟。
EfficientNet[TL19]主张以指数方式缩放深度和宽度(具有不同的系数),以获得图像模型的最佳性能,从而导致宽度作为深度函数的幂律缩放。我们发现,对于语言模型,当按比例放大时,这种能力应该大致为一(因为宽度/深度应该保持固定)。但更重要的是,我们发现,与语言模型的整体规模相比,精确的架构超参数并不重要。在[VWB16]中,有人认为深层模型可以作为较浅模型的集合,这可能解释这一发现。早期的工作[ZK16]比较了宽度和深度,发现宽ResNets在图像分类方面可以优于深ResNets。一些研究固定了每个数据示例的计算,其倾向于与模型参数的数量成比例地缩放,而我们研究了与模型大小和训练计算量成比例的缩放。
各种工作[AS17,BHMM18]研究了高度过参数化模型中的泛化,发现当模型大小达到数据集大小时会出现“干扰过渡”[GJS+19](这可能需要训练超出典型实践的许多数量级,尤其是不使用早期停止)。我们没有观察到这样的转变,并发现必要的训练数据在模型大小上是次线性的。模型尺寸的扩展,特别是在大宽度[JGH18,LXS+19]时,可能会为思考我们的一些缩放关系提供一个有用的框架。我们的优化结果,例如学习曲线的形状,可能可以使用有噪声的二次模型来解释,该模型可以在现实环境中提供相当准确的预测[ZLN+19]。使这种联系定量化将需要对Hessian光谱进行表征[Pap18,GKX19,GARD18]。
8讨论
我们已经观察到语言模型对数似然损失与非嵌入参数计数N、数据集大小D和优化训练计算Cmin的一致缩放,如方程(1.5)和(1.6)所示。相反,我们发现对许多架构和优化超参数的依赖性非常弱。由于N、D、Cmin的标度是幂律,因此收益随着标度的增加而递减。当这些参数同时变化时,我们能够精确地模拟损失对N和D的依赖性,以及对N和S的依赖性。在训练大型语言模型时,我们使用这些关系来推导计算缩放、过拟合的大小、早期停止步骤和数据需求。因此,我们的缩放关系不仅仅是观察,而是提供了一个预测框架。人们可以将这些关系解释为理想气体定律的类似物,理想气体定律以一种普遍的方式联系气体的宏观性质,独立于其微观成分的大多数细节。
很自然地推测,缩放关系将适用于具有最大似然损失的其他生成建模任务,也许也适用于其他设置。为此,在其他领域测试这些关系将是一件有趣的事情,例如图像、音频和视频模型,也许还可以用于随机网络提取。在这一点上,我们不知道我们的结果中哪些取决于自然语言数据的结构,哪些是普遍的。找到一个可以导出标度关系的理论框架也将是令人兴奋的:我们观察到的“热力学”背后的“统计力学”。这样的理论可能使推导出其他更精确的预测成为可能,并对缩放律的局限性提供系统的理解。
在自然语言领域,重要的是调查对损失的持续改善是否转化为对相关语言任务的改善。平稳的数量变化可以掩盖重大的质量改进:“越多越好”。例如,经济的平稳总体增长并没有表明支撑它的具体技术发展。同样,语言模型损失的平稳改善可能掩盖了能力的看似质的变化。
我们的研究结果有力地表明,更大的模型将继续表现得更好,而且也将比以前所认识到的更有样本效率。大模型可能比大数据更重要。在这种情况下,有必要对模型并行性进行进一步的研究。深度模型可以使用流水线[HCC+18]进行训练,流水线在设备之间按深度划分参数,但随着使用更多设备,最终需要增加批量。另一方面,广域网更适合并行化[SCP+18],因为大的层可以在多个工作者之间划分,串行依赖性较小。稀疏[CGRS19,GRK17]或分支(例如[KSH12])可以通过增加模型并行性来允许更快地训练大型网络。使用像[WRH17,WYL19]这样的方法,随着网络的训练而增长,可能会在整个训练过程中保持在计算效率的前沿。
计算有效前沿的B经验模型
在本附录中,对C、S和αC的所有值进行了调整,以便在临界批量大小Bcrit下进行训练。我们去掉了“adj”的标签,以避免混淆注释。
B.1定义方程式
学习曲线的幂律拟合意味着计算高效训练的简单处方。在本附录中,我们将导出作为计算预算函数的最佳性能、模型大小和训练步骤数。我们从方程(1.6)开始,为了方便起见,在此重复
这里,S表示在临界批量[MKAT18]下训练时的参数更新次数,其在等式(5.2)9中定义:
我们想确定固定计算预算的最佳训练参数,因此我们替换S=C/(6NB(L)),其中C是训练运行中使用的FLOP的数量:
等式(B.3)和(B.4)一起确定了计算有效边界。
B.2高效训练
现在我们将(B.3)和(B.4)的含义汇总起来。首先,请注意,将(B.4
这意味着,对于计算高效训练,我们应该训练到收敛损失以上的固定百分比αNαS≈10%。接下来,让我们确定最佳损失如何取决于计算预算。消除N产生性能对计算的幂律依赖性:
我们定义的
B.3与低效的比较
通常,研究人员会训练模型,直到它们看起来接近收敛。在本节中,我们将上面描述的高效训练程序与这种更典型的设置进行比较。我们将收敛因子f定义为与收敛损失的偏差百分比:
对于计算效率训练,我们在上一节中使用了f=αN/αS≈10%,但研究人员通常使用更小的值。在这里,我们选择f0=2%作为估计。对于固定的损失值,我们预测:
因此,计算效率训练使用的参数更新减少了7.7倍,参数增加了2.7倍,计算量减少了65%,以达到相同的损失。
B.4次优模型尺寸
我们可以求解A.1,以找到在大小为N的模型中达到给定损失值L所需的计算量的表达式:
使用A.6和A.9,我们可以消除L,而有利于Neff(L),即最有效地达到L的模型大小。从中,我们找到了使用次优模型大小所需的过量计算的表达式:
结果如图X所示。在计算预算仅增加20%的情况下,可以使用0.6倍至2.2倍的最佳大小的模型。在核算成本推断时,使用较小的模型是有用的。如果有足够的硬件可用,可以用更少的步骤将更大的模型训练到相同级别的性能,从而实现更多的并行性和更快的训练(见图Y):
2.2倍大的模型需要减少45%的步骤,而训练计算则需要增加20%。注意,对于非常大的模型,该方程不应被信任,因为它仅在初始瞬态效应后的学习曲线的幂律区域有效。
C注意事项
在本节中,我们列出了一些潜在的分析注意事项。
•目前,我们对任何拟议的缩放律都没有坚实的理论理解。与模型大小和计算的比例关系尤其神秘。通过用有噪声的二次方对损失建模,可以理解在非常大的D保持模型大小固定[AS17]下的缩放,以及训练后期学习曲线的形状。但是,在非常大的模型尺寸下,用D进行缩放仍然是个谜。如果没有一个理论或系统地了解对我们的缩放律的修正,很难确定在什么情况下它们是可信的。
图16左图:我们将早期停止发生的步骤描述为过拟合程度的函数。红线表示第5.3节中得出的提前停车下限。右图:我们显示了在不同大小的数据集子样本上训练的一系列300M参数模型的训练和测试损失。测试损失通常遵循使用不受限制的数据进行的运行,直到出现分歧。请注意,过拟合程度(与无限数据限制相比)被Ltest−Ltrain(每次运行用黑条表示)显著高估。
•对于远远超出我们探索范围的损失值,我们对Bcrit(L)的预测没有特别的信心。Bcrit的变化可能会对数据并行性和所需串行训练步骤数量之间的权衡产生重大影响,这将对训练时间产生重大影响。
•我们没有彻底调查小数据制度,我们对L(N,D)的拟合对于最小的D值来说很差(其中一个历元仅对应40步)。此外,我们没有进行正则化和数据扩充的实验。这些方面的改进可能会在数量或质量上改变我们的结果。
•我们使用了估计的训练计算C≈6NBS,其中不包括与nctx成比例的贡献(见第2.1节)。因此,在非常大的nctx的情况下,我们与计算的比例在实践中可能会混淆,特别是在nctx和12dmodel的情况。
•我们调整了学习率,并试验了学习率时间表。但我们可能忽略了调整一些对标度有重要影响的超参数(如初始标度或动量)。
•学习率的最佳选择对目标损失很敏感。当训练接近收敛时,可能有必要使用较小的学习率来避免偏差。但是,当进行短期训练时(例如,由于计算限制),可能会使用更大的学习率。我们没有对没有进行收敛的训练跑进行更高的学习率实验。
D补充数字
D.1提前停车和测试与列车
在第5.3节中,我们描述了图16中所示的结果,该结果为早期停止步骤的下限提供了预测。我们还展示了在不同大小的数据集上训练时,给定模型大小的训练和测试损失。
D.2通用Transformer
在图17中,我们比较了标准Transformer和常规Transformer[DGV+18]的性能。这些模型重复使用参数,因此作为N的函数表现稍好,但作为计算C的函数表现略差。我们包括了参数重复使用的几种不同可能性。
D.3批量
我们使用图18中显示的数据来测量临界批量大小。这样就可以估计图10中的Bcrit(L)。
D.4样品效率与型号大小
从图2中可以很容易地看出,较大的模型训练得更快,因此样本效率更高。我们在图19中提供了另一种看待这一现象的方法,图19显示了不同模型何时达到不同的固定损失值。
图19达到测试损失的任何固定值所需的最小串行步骤数随着模型尺寸的增加而急剧下降。样本效率(此处显示的是远低于临界批量的训练)也大大提高,当将尽可能小的模型与非常大的模型进行比较时,提高了近100倍。
图20该图提供了关于每个tokens的性能的信息,作为模型大小和训练时间的函数。左图:每个tokens的损失是其在1024tokens上下文中的位置T的函数。损失在T中按幂律可预测地缩放。右:测试每个token的损失作为训练步骤的函数。
图21除了平均损失外,1024tokens上下文中的单个tokens也随着模型大小的增加而平滑改善。上下文nctx=8(虚线)更短的训练运行在早期token上表现更好,因为它们可以将所有容量分配给它们。
D.5上下文依赖
在图21的上下文中,显示了不同token的损失趋势作为模型大小的函数。我们看到,在nctx=1024上训练的模型在除第一个tokens外的所有tokens上都显示出随着模型大小的稳步改进。
在固定模型大小的情况下,损失似乎是作为上下文中位置T的函数的幂律,见图20。这可能是语言[EP94、ACDE12、LT16]中潜在幂律相关性的结果,或者是模型架构和优化的更一般的特征。它为在更大的背景下进行训练的潜在好处(或缺乏好处)提供了一些建议。较大的模型不仅在T=1024时收敛到更好的性能,而且在早期tokens时也能更快地改进,这表明较大的模型在检测上下文信息较少的模式方面更有效。在右图中,我们展示了固定模型的每个tokens性能如何随训练步骤而变化。该模型从学习短距离信息开始,只在稍后的训练中学习长距离相关性。
我们还包括了用微小上下文nctx=8训练的模型,以便与我们的较长上下文模型进行比较。即使是在nctx=8上训练的中等大小的模型,也可以在非常早期的token上主导我们最大的nctx=1024模型。这也表明,通过在大型环境中训练更大的模型,应该可以进行进一步的改进。
D.6学习进度表和错误分析
我们试验了各种学习率和时间表。图22中绘制了一个小型语言模型的大量时间表和由此产生的测试性能。我们得出的结论是,只要总的学习率足够大,并且时间表包括一个预热期和最终衰减到接近消失的学习率,学习率时间表的选择基本上是无关紧要的。时间表之间的变化似乎是统计噪音,并为不同训练跑之间的变化规模提供了一个粗略的衡量标准。对较大模型的实验表明,对于不同的模型大小,不同随机种子之间的最终测试损失的变化幅度大致恒定。我们发现,较大的模型需要较小的学习率来防止分歧,而较小的模型可以容忍较大的学习率。为了实现这一点,大多数运行都使用了以下经验法则:
我们期望这个公式能够得到改进。可能存在对网络宽度的依赖性,可能由初始化规模设置。对于N>1010的参数,该公式也进行了分解。尽管如此,我们发现它对于我们考虑的模型来说足够好。
D.7合身细节与幂律质量
我们对L(N)、L(C)和L(D)的拟合进行了许多函数形式的实验;幂律拟合在质量上比对数等其他函数准确得多(见图23)。
对于L(C),我们不包括拟合中只有1层的小模型,因为从1层到2层的过渡会导致数据中出现明显的结块。对于L(N),我们也不包括拟合中只有1层的非常小的模型,并且我们排除了尚未完全训练到收敛的最大模型。如果我们将拟合参数包括在内,拟合参数会发生轻微变化,而且无论怎样,趋势都会在两个方向上很好地推断。
D.8概括和体系结构
在图24中,我们表明,当我们固定总参数计数时,对其他数据分布的泛化不取决于网络深度。这似乎只取决于训练分配的表现。
图24我们展示了对具有大约15亿个参数的模型的一系列数据集的评估。我们没有观察到深度对泛化的影响;泛化性能主要取决于训练分布性能。12层模型过度拟合了互联网图书数据集,我们显示了早期停止的性能;我们在其他实验中没有看到这种令人惊讶的结果。