language
为人工智能的研究提供了一个天然的领域,因为绝大多数的 reasoning task
都可以用语言有效地表达和评估,而且世界上的文本通过 generative modeling
为无监督学习提供了大量的数据。最近,深度学习在 language modeling
方面取得了快速进展, SOTA
模型在许多特定任务上的表现接近人类水平。
人们可能预期语言建模的性能取决于模型结构、神经模型的规模、用于训练模型的算力、以及用于训练模型的数据。在论文 《Scaling Laws for Neural Language Models》
中,作者将实证研究 language modeling loss
对所有这些因素的依赖性,重点是 Transformer
架构。通过在语言任务上的性能的上限和下限,使作者能够研究 scale
中超过七个数量级的趋势。
在整个过程中,作者将观察到性能的精确的 power-law scaling
,其中性能作为训练时间、上下文长度、数据集大小、模型大小、compute budget
的函数。
相关工作:
幂律(power-law
)可以从各种来源产生。在密度估计(density estimation
) 模型和随机森林模型中,随模型规模和数据集大小有关的 power-law scaling
可能与我们的结果有关。这些模型表明,幂律指数可能有一个非常粗糙的解释,即数据中相关特征数量的倒数。
最近的工作 《Deep learning scaling is predictable,empirically》
、《Beyond human-level accuracy: Computational challenges in deep learning》
也研究了模型大小和数据大小之间的 scaling
;他们的工作可能是文献中最接近我们的工作。然而,请注意, 《Deep learning scaling is predictable,empirically》
发现数据集大小与模型大小的超线性 scaling
,而我们发现的是亚线性 scaling
。
我们关于计算量的 optimal allocation
的发现和 《One epoch is all you need》
之间有一些相似之处,包括 power-law learning curve
。
EfficientNet
似乎也服从于准确率和模型大小之间的近似的幂律关系。
最近的工作 《A constructive prediction of the generalization error across scales》
研究了各种数据集的数据集大小和模型大小的 scaling
,并符合与我们类似的分析方法。
EfficientNet
主张以指数方式 scale
模型的深度和宽度,以获得图像模型的最佳性能,导致宽度作为深度的函数出现 power-law scaling
。我们发现,对于语言模型来说,这个幂律在 scaling up
时应该是大致为 1
(即, width/depth
的比例应该保持固定)。但更重要的是,我们发现,与语言模型的 overall scale
相比,精确的架构超参数并不重要。
在 《Residual networks behave like ensembles of relatively shallow networks》
中,有人认为 deep
的模型可以作为较浅的模型的 ensemble
,这有可能解释这一发现。
早期的工作 《Wide residual networks》
比较了宽度和深度,发现 wide ResNet
在图像分类上可以胜过 deep ResNet
。
一些研究固定了每个数据样本的计算量(计算量往往与模型参数的数量成正比,固定这个值意味着固定模型大小),而我们研究的是与模型大小和 training computation
的 scaling
。
许多研究(《High-dimensional dynamics of generalization error inneural networks》
、《Reconciling modern machine learning and the bias-variance trade-off》
对高度过参数化的模型(highly overparameterized model
)的泛化进行了研究,发现当模型规模达到数据集规模时,会出现 "jamming transition"
(《Scaling description of generalization with number of parameters in deep learning》
)(这可能需要超出典型实践许多数量级的 training
,尤其是不使用早停)。我们没有观察到这样的 transition
,并发现所需的训练数据在模型大小上呈亚线性 scaling
。模型规模的扩展,特别是在 large width
上的扩展,可能为思考我们的一些 scaling
关系提供了一个有用的框架。
我们关于 optimization
的结果(如学习曲线的形状),很可能可以用一个 noisy
的二次模型来解释,它可以在现实环境中提供相当准确的预测(《Which algorithmic choices matter at which batch sizes? insights from a noisy quadratic model》
)。定量评估这种联系将需要海森谱( Hessian spectrum
) 的特性。
这篇论文直接看结论部分即可,剩余的大多数都是实验报告。
符号:
token
的交叉熵损失的平均值,但在某些情况下,我们会报告上下文中特定位置处的 token
的损失。
vocabulary embedding
和 positional embedding
。
non-embedding
的 training
总计算量的估计,其中 batch size
,training steps
数量(即 parameter updates
)。我们引入 PF-days
为单位,其中一个 PF-days
表示
token
。
critical batch size
,在后续内容中定义和讨论。使用 critical batch size
的训练提供了训练时间和计算效率之间的大致上的最佳 trade-off
。
loss
的最小 non-embedding compute
的估计。这是在模型以远小于 critical batch size
的 batch size
进行训练时将使用的 training compute
。
较小的
batch size
可以实现较小的计算量、但是需要较大的训练时间。
loss
所需的最小 training steps
数的估计。这也是如果模型在batch size
远大于 critical batch size
的情况下所使用的 training steps
数量。
较大的
batch size
可以实现较小的训练时间、但是需要较大的计算量。
loss
缩放的幂率函数的指数,其中
注,这里的
loss
函数是test loss
,而不是train loss
。
我们在 WebText2
上训练语言模型,这是 WebText
数据集的扩展版本,使用 byte-pair encoding: BPE
进行 tokenize
,vocabulary size
为 autoregressive log-likelihood
(即交叉熵损失),在 1024-token
的上下文中取平均,这也是我们的主要性能指标。我们在 WebText2
测试集、以及其它一些测试集上记录 loss
。我们主要训练 decoder-only Transformer
模型,尽管我们也训练 LSTM
模型和 Universal Transformer
以进行比较。
模型的性能评估指标是测试集上的交叉熵损失。
我们使用超参数 residual stream
的维度)、feed-forward layer
的维度)、attention output
的维度)和 attention head
的数量)对Transformer
架构进行参数化。我们在输入上下文中包括 token
,除另有说明外否则默认采用
我们用 non-embedding parameters
的数量(推导过程参考Table 1
):
其中,我们排除了 bias
项和其他次要的项。我们的模型在 embedding
矩阵中也有 positional embedding
,但我们在讨论 "模型大小" scaling law
。
评估 Transformer
的前向传播大致上包括 add-multiply operation
),其中系数 2
来自于矩阵乘法中使用的 multiply-accumulate operation
。下表中包含了更详细的每个操作的参数数量和计算次数。
对于 token
的 context-dependent
的计算成本是总计算量的一个相对较小的部分。由于我们主要研究 training compute
的估计中不包括 context-dependent
项。考虑到反向传播(大约是前向传播计算量的两倍),我们为每个 training token
将估计的 non-embedding compute
定义
对于
GPT-3 175B
,, , , 。因此只需要 即可满足上述条件。
除非另有说明,我们用 Adam
优化器训练模型,其中训练了固定的 batch size
为 512
个序列,每个序列包含 1024 tokens
。
由于内存限制,我们最大的模型(超过 1B
个参数)是用 Adafactor
训练的。
我们试验了各种学习率和 schedules
。我们发现,收敛的结果在很大程度上与 learning rate schedule
无关。除非另有说明,我们的数据中包括的所有 training runs
都使用了同一个 learning rate schedule
,即:3000
步的线性预热,然后是余弦衰减学习率到零。
我们用各种学习率和 schedule
进行了实验。下图显示了一个小型语言模型的一系列 schedules
和测试结果。我们的结论是,只要 total summed learning rate
足够大,而且 schedule
包括一个预热期、以及最后衰减到接近零的学习率,那么 learning rate schedule
的选择基本上是不重要的。schedules
之间的方差似乎是统计学上的噪音,并为不同 training runs
之间的方差的 scale
提供一个粗略的衡量标准。在较大的模型上的实验表明,对于不同的模型大小,不同的随机种子之间的 final test loss
的方差的幅度是大致不变的。
我们发现,较大的模型需要一个较小的学习率来防止发散,而较小的模型可以容忍较大的学习率。为了实现这一点,在大多数 runs
中使用了以下经验法则:
我们期望这个公式可以被改进。
可能存在对 network width
的依赖性,可能是由 initialization scale
设定的。对于
我们在 GPT2
中描述的 WebText
数据集的扩展版本上训练我们的模型。最初的 WebText
数据集是对 Reddit
在 2017
年 12
月的外链(包含 Reddit
用户的至少三个点赞)的网络爬取。在第二个版本中(即,WebText2
),我们增加了 2018
年 1
月至 10
月期间的 Reddit
外链,也是至少有 3
个点赞的。karma
阈值(即,点赞的数量阈值)作为一种启发式方法,用于判断人们是否认为该链接有趣或有用。新链接的文本是用 Newspaper3k python library
提取的。
总的来说,该数据集由 20.3M
篇文档组成,包含 96GB
的文本和 GPT2
中描述的可逆的 tokenizer
,产生 token
。我们保留了其中的 token
作为测试集,并且我们还在类似的 Books Corpus
、Common Crawl
、English Wikipedia
、以及公开的 Internet Books
集合中进行测试。
为了刻画 language model scaling
,我们训练了各种各样的模型,其中改变了一些因子,包括:
模型大小:从 768
到 1.5B
个 non-embedding
参数。
数据集大小:从 22M
到 230B
个 token
。
模型shape
:包括 depth
、width
、attention head
、以及 feed-forward dimension
。
上下文长度:大多数 runs
设置为 1024
,但我们也尝试使用较短的上下文。
batch size
: 大多数 runs
设置为 batch size
从而测量 critical batch size
。
当我们固定 non-embedding
参数总数 Transformer
的性能对 shape
参数
为了确定这些结果,我们用固定的模型大小来训练模型,同时改变一个超参数。
这对于 head
的维度,使得
右图中,每条曲线对应于固定的
同时改变 。
当改变
中间图中,每条曲线对应于固定的参数量同时改变
和 。
同样地,为了在固定的模型大小下改变 Table 1
中的参数数量所要求的。
左图中,每条曲线对应于固定的参数量同时改变
和 。
如果 deeper Transformer
有效地表现为 shallower model
的 ensembles
,那么就会导致 ResNet
的建议(《Residual networks behave like ensembles of relatively shallow networks》
)。结果显示在下图中。
下图中,不同的模型形状,得到的
test loss
差异很小,差异基本上都在10%
以内。
在下图中,我们展示了各种模型的性能,从 shape
shape
从 WebText2
数据集上训练到接近收敛,并且观察到没有过拟合(除了非常大的模型,因为对于非常大的模型则可能过拟合)。
如 Figure 1
右图所示,我们发现关于 non-embedding
参数数量
要观察这些趋势,关键是要研究模型性能与 embedding
参数),趋势就有些模糊了(如下左图所示)。这表明,embedding matrix
可以做得更小而不影响性能,这在最近的工作中已经看到了(《Albert: A lite bert for self-supervised learning of language representations》
)。
ALBert
将embedding matrix
分解为两个低维矩阵的乘积,这等价于降低了embedding matrix
的大小。
尽管这些模型是在 WebText2
数据集上训练的,但它们在其他各种数据集上的 test loss
也是
左图、右图的详细说明参考 “数据分布之间的泛化” 章节。
在下图中,我们比较了 LSTM
和 Transformer
的性能与 non-embedding
参数数量 LSTM
是用与 Transformer
相同的数据集和上下文长度来训练的。从右图中我们可以看出,LSTM
对于上下文位置中头部出现的 token
表现得和 Transformer
一样好,但是对于上下文位置中尾部出现的 token
则无法与 Transformer
的表现相媲美。
红色曲线为
LSTM
,蓝色曲线为Transformer
。
下图中给出了模型性能与上下文位置之间的幂律关系,其中,除了第一个 token
之外(最上面的一条曲线),都显示了随着模型大小的增加而稳定地改善,表明快速识别模式的能力有所提高。
我们还包括用很小的 token
上超越我们最大的
因为对于
的模型,它看到的上下文信息更多,理论上应该表现更好。
在固定模型大小的情况下, loss scale
似乎与上下文中的位置 power-law correlation
的结果,或者是模型结构和 optimization
的一个更普遍的特征。它为在更大的上下文中训练的潜在好处(或潜在不足)提供了一些建议。不仅较大的模型在 early tokens
时也改善得更快,这表明较大的模型在检测 less contextual information
的模式时更有效率。
在右边的图中,我们显示了对于一个固定的模型, per-token
性能是如何作为 training steps
的函数而变化的。early tokens
在训练过程中更快地被学好,而末尾的 tokens
在训练的后期才能训练好。
左图:每条曲线对应一个模型(不同模型大小)的
per-token test loss
,在模型训练结束后。右图:每条曲线对应一个
token index
的学习曲线,在模型训练过程中,固定的模型。
我们还在下图中比较了标准 Transformer
和 recurrent Transformer
(《Universal transformers》
)的性能。 recurrent Transformer
模型复用参数,因此表现得略好(右图),但代价是每个参数的额外计算量。
左图把
reuse
的参数也认为是全新的,因此参数规模会变大。
我们还在一组额外的文本数据分布上测试了我们的模型。下图显示了这些数据集上的 test loss
与模型大小的关系。在所有情况下,模型都只在 WebText2
数据集上训练过。
从左图中我们看到,在这些其他数据分布上的 loss
随着模型规模的增加而平滑地改善,直接地平行于 WebText2
的 test loss
曲线。
从右图中我们发现,泛化性几乎完全取决于 in-distribution validation loss
,而不取决于训练的持续时间、或接近于收敛的程度。
虚线表示单个大型模型在它训练过程中,所得到的
test loss
;圆点表示很多收敛的模型对应的test loss
。
我们还观察到对模型深度没有依赖性(在固定模型大小的条件下)。
我们在下图中显示了 test loss
作为数据集大小 token
数量为单位)和训练计算量
对于 WebText2
数据集的固定子集上训练了一个 test loss
不再减少,我们就停止训练。我们看到,所产生的 test loss
可以用数据集大小
如 Figure 1
中间的图所示。
训练过程中使用的 non-embedding
计算总量可以估计为 batch size
,parameter updates
的数量,系数 6
代表了同时包含前向传播和反向传播。因此,对于一个给定的 step
数量
请注意,在这些结果中,batch size
这个结果如Figure 1
左图的加粗黑线所示。它可以用如下的方程来拟合:
此外,在左图中还包括每个模型的学习曲线,从而展示每个模型何时达到最优。
我们将在后面更仔细地研究计算量的最佳分配问题。数据强烈表明,sample efficiency
随着模型的大小增加而提高,如右图所示,对于给定的 test loss
,模型越大所需要的样本数越少。
左图:每条曲线表示在给定的
test loss
(不同曲线采用不同的值)的条件下,最短的训练时间(由minimum steps
衡量)和模型大小的关系。通常而言,模型参数越大,训练时间越短。右图:每条曲线表示在给定的
test loss
(不同曲线采用不同的值)的条件下,最少的训练过程中看过的样本()和模型大小的关系。通常而言,模型参数越大,所需要的样本数越少。
在前面的内容中,我们发现了针对语言建模性能的一些 basic scaling laws
。这里,我们将研究在具有 tokens
的数据集上训练的大小为 test loss
符合公式 scaling law
。这为我们需要多少数据来训练规模不断扩大的模型、并同时控制过拟合提供了指导。
我们选择参数化
其中,这个公式基于三个原则:
词表大小或 tokenization
的变化有望通过一个整体因子来 rescale
损失函数。 loss
的建模)自然必须考虑到这种 rescaling
。
固定 overall loss
应该接近 overall loss
应该接近
analytic
的,因此它在 series expansion
)。对这一原则的理论支持明显弱于前两者。
即,对于无限的训练数据,模型应该能够收敛。
我们选择的 rescale
因为当 test loss
停止改善时我们提前结束训练,并且我们以相同方式优化所有模型,所以我们期望较大的模型应该总是比较小的模型表现得更好。但是对于固定的、有限的 possible loss
。类似地,具有固定大小的模型将是容量有限的。这些考虑激发了我们的第二个原则。注意,关于在
第三个原则更加是推测性的。一个简单而普遍的原因是,在非常大的 《High-dimensional dynamics of generalization error in neural networks》
),这与 loss
扩展到 correction
在其他方差来源中占主导地位,例如有限的 batch size
、efficacy of optimization
的其他限制。没有经验的证实,我们对它的适用性没有信心。
我们的第三个原则解释了公式
在任何情况下,我们都会看到,我们对于
我们以 10%
的 dropout rate
来正则化我们的所有模型,然后跟踪 test loss
,一旦 test loss
不再下降时我们就停止训练。实验结果如 Figure 9
左图所示,它包含了针对公式
Figure 9
左图:每条曲线代表一个data size
,给出了在该data size
的条件下,test loss
和的关系。
Figure 9
右图:和 之间的拟合曲线。
我们获得了极好的拟合,除了如下的 runs
:数据集已经减少了 1024
倍到大约 tokens
。对于如此小的数据集,一个 epoch
仅包含 40
次参数更新。也许这样一个微小的数据集代表了语言建模的一个不同的区域,因为过拟合在训练的早期就发生了 (Figure 16
右图的第一条 Test Loss
曲线)。还要注意,这些参数与 basic power laws
中获得的参数略有不同,因为这里我们拟合的是完整的
为了绘制 infinite data limit
的边界,我们可以直接研究过拟合的程度。对于除了最大的模型之外的所有模型,当用完整的 22B token
的 WebText2
数据集训练时,我们没有看到过拟合的迹象,因此我们可以将其作为 infinite data limit
:
并把它作为 Figure 9
右图所示。这是根据等式 scaling law
得出的,即:
根据
,我们可以得到:
注意,在大的
表示数据集无限大时的 test loss
,它是的下限,代表没有过拟合时的 test loss
。因此:
一定大于等于 0
。如Figure 9
右图所示。
代表了由于数据量不足导致的过拟合。
对于不同的随机数种子,我们估计 loss
的方差大约为 0.02
,这意味着,为了避免过拟合,我们需要:
推导过程:
,即可得到该方程。
利用这种关系,小于 22B token
的 WebText2
数据集上被训练从而具有最小的过拟合,但是我们最大的模型将会遇到一些轻微的过拟合。更一般地,这种关系表明数据集大小可以关于模型大小成亚线性增长,同时避免过拟合。然而,请注意,这通常并不代表 compute-efficient training
。
我们还应该强调,在改变数据集和模型大小时,我们没有 optimized regularization
(例如,dropout rate
)。
在本节中,我们将证明一个简单的 scaling law
可以很好地描述 loss
作为模型大小
首先,我们将解释如何使用 《An empirical model of large-batch training》
的结果来定义 universal training step
batch size
下训练的事实。
然后,我们将证明我们可以使用公式 loss
与模型大小和训练时间。
稍后,我们将使用这些结果来预测模型大小和训练时间之间关于训练计算量的最佳分配,然后确认该预测。
在 《An empirical model of large-batch training》
中提出了一个关于训练的 batch size
依赖性的简单的经验理论。该论文认为,对于 training
,有一个临界 batch size
对于 batch size
compute-efficiency
的下降非常小。
而对于
该论文还认为, gradient noise scale
为 gradient noise scale
也不直接依赖于模型大小,而是依赖于已经获得的 loss value
。这些结果可用于预测训练时间和计算量将如何随 batch size
而变化。为了尽可能有效地平衡训练时间和计算量,最好使用 batch size
为 training steps
数量,而在
即:大的
batch size
可以节省训练时间、但是浪费了计算量;小的batch size
可以节省计算量、但是浪费了计算时间。
更具体地,可以证明对于各种各样的神经网络任务, 当训练到 loss
training steps
数量 processed
数据样本数量
其中:training steps
数量,而
注意:
并不是在 处取得的,即: ,除了在 。
我们在下图中展示了针对 Transformer
的这种关系(即,test loss
。
这个关系定义了临界的 batch size
:
它是目标损失值的函数。在临界 batch size
的训练可以实现大致最优的 time/compute tradeoff
,需要 training steps
、以及处理
在下图中,我们绘制了两个不同模型的临界 batch size
和 gradient noise scale
,作为 training loss
的函数。我们看到,loss
《An empirical model of large-batch training》
的 prediction
继续适用于 Transformer
语言模型。临界 batch size
在 loss
上符合幂律:
其中:
为什么选择这样的拟合公式?因为随着 loss
接近其最小值 gradient noise scale
预计会发散,并且我们期望noise scale
。因此随着
注意:下图中,横轴的右侧为零。
如果我们在 loss
training steps
数量的临界值定义为:
推导过程:根据定义
、 ,以及拟合公式 ,有: 推导过程中并未要求
,这个约束条件从何而来?论文并未说明。读者猜测可能是由于 需要满足的条件而引起的。 该式子的物理意义:
根据
,则给定 batch size
,我们可以预测需要多少个 training step
模型能够收敛。 另一方面,任意选择一个
batch size
,根据它的收敛时的 training step
,我们能够统计得到 。
如果我们在 loss