这篇文章是2020年发表的一篇LLM领域中非常重要的论文,由OpenAI发布,总结了LLM模型规模与训练数据token之间的比例关系,即我们熟知的 Scaling Laws,允许 通过观察小规模训练实验,提前预测大模型的效果表现,降低浪费以合理分配训练资源。虽然发布距今已经5年了,且一直以来都有人在挑战这个定理,但对于学习VLA、VLN、LLM的人而言仍然非常重要,因为他可以在你研究初期就给你一个大致的范围,告诉你想要训练好一个大模型的数据上限在哪。
下面这张表可以让你对这篇笔记中的内容有一个大致的印象,以便更轻松理解什么是 Scaling Laws。
模型版本 | 参数规模(约数) | 训练数据量(token数量) | 性能提升概况 |
---|---|---|---|
GPT-3 | 1750 亿参数 | 约 3000 亿 tokens | 通用NLP任务效果大幅超过BERT,首个大规模few-shot模型 |
GPT-3.5 | ~数百亿 - 未公开 | 约万亿 tokens | 微调优化,ChatGPT基座,逻辑推理、对话流畅度增强 |
GPT-4 | 未公开,推测5000亿-1万亿参数 | 约数万亿 tokens | 多模态支持,复杂推理能力显著提升,稳健性和泛化大幅增强 |
对于LLM而言,训练for循环与小模型不同,通常以token量表示,但也可以理解为下面这张表:
模型版本 | 训练轮次(大致估算) | 总Token数量 | 备注 |
---|---|---|---|
GPT-3 | ~1次左右 | 3000亿tokens | 部分数据可能重复采样 |
GPT-4 | 未公开,估计<2次 | 数万亿tokens | 多模态混合训练 |
LLaMA 2 | ~2次 | 2万亿tokens | Meta开源,明确写了2 epochs |
【Note】:这篇文章非常经典,建议仔细阅读一遍。
这里大致总结了一下本文的核心结论:
- 所有结果都是基于Transformer结构,以及以最大似然Loss为基础的模型;
- 当模型规模增加8倍时,只需将训练集增大5倍即可避免性能溢出;
- 训练曲线为可预测的幂律,并且与模型规模无关,用于粗略估计经过多长时间训练后,整体loss值大概是多少;
- 迁移到不同分布的数据上会招致常数惩罚,但在其他方面的提升大致与训练集上的表现一致;
- 直至收敛前,大模型相比较于小模型有更高的样本利用率,且对数据的增长非常慢仅为 D ∼ C 0.27 D\sim C^{0.27} D∼C0.27;
- 训练模型的理想 batch_size 大致仅为损失函数的幂,且可以通过测量梯度噪声尺度来确定;
- 模型训练最终的收敛位置与learning rate schedule 基本无关;
- 泛化能力几乎完全取决于分布内验证损失,而与训练时长或收敛状态无关;
- 得到了很多有关损失函数、模型规模、数据集规模、算力预算之间的拟合函数;
- 即使训练过程中从未使用任何重复数据,高效的计算训练最终也会遇到过拟合问题,即训练通常只需使用一次完整数据即可(for 循环 i=1);
- 幂律指数可以粗略地解释为数据中相关特征数的倒数;
写在最前面
为了方便你的阅读,以下几点的注意事项请务必了解:
- 该系列文章每个字都是我理解后自行翻译并写上去的,可能会存在笔误与理解错误,如果发现了希望读者能够在评论区指正,我会在第一时间修正错误。
- 阅读这个系列需要你有基本的 VLN, LLM, VLM 相关基础知识,有时候我会直接使用英文名词,因为这些词汇实在不容易找到符合语境的翻译。
- 原文可能因为版面限制存在图像表格与段落不同步的问题,为了更方便阅读,我会在博文中重新对图像表格进行排版,并做到引用图表的文字下方就能看到被引用的图表。因此可能会出现一张图片在博客中多处位置重复出现的情况。
- 对于原文中的图像,我会在必要时对图像描述进行翻译并附上我自己的理解,但如果图像描述不值得翻译我也不会强行写上去。
Basic Information
- 论文标题:Scaling Laws for Neural Language Models
- 原文链接: https://arxiv.org/abs/2001.08361
- 发表时间:2020年01月23日
- 发表平台:arxiv
- 预印版本号:[v1] Thu, 23 Jan 2020 03:59:20 UTC (1,520 KB)
- 作者团队: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;
- OpenAI;
- 项目链接: 【无】
- GitHub仓库: 【无】
Abstract
作者研究了语言模型在交叉熵损失上性能的经验尺度规律。损失随模型大小、数据集大小、训练所用计算量呈幂律变化,某些趋势甚至跨越七个数量级以上。其他架构细节(例如网络宽度或深度)在大尺度上的影响极小。简单的函数就能表示过拟合对模型/数据集大小的依赖性,以及训练速度对模型大小的依赖性。这些关系能够得到固定预算以内的最佳分配,较大的模型具有更高的样本使用效率,因此最佳训练方式是在相对较少的数据量上训练大模型,并在表现出收敛之前停止。
作者研究了语言模型在交叉熵损失上的经验性缩放规律。结果表明,损失值随着模型规模、训练数据量、训练计算量的增加,呈现出幂律下降的趋势,这种规律跨越了超过七个数量级的范围。在大尺度模型参数条件下,诸如模型宽度与深度等结构细节对损失的影响都很有限。此外,模型规模与数据集大小之间的关系,决定了模型是否容易过拟合;而训练速度则主要取决于模型规模,这些关系都可以用简单的数学公式描述。基于这些规律,可以合理地规划在有限预算下,模型规模与训练数据的最佳分配方案。总体而言,大模型的样本利用效率更高,因此如果追求计算资源的最大效率,最优策略通常是:用相对较少的数据,训练非常大的模型,并且在模型完全收敛之前提前结束训练。
1. Introduction
语言为人工智能研究提供了一个天然的领域,因为绝大多数推理任务都能用语言高效地表达和评估,而全球文本总量为生成模型的无监督学习提供了丰富的数据。深度学习近年来在语言建模领域取得了快速进展,最先进的模型 [RNSS
、RSR
] 在许多特定任务 [WPN
] 上的表现已接近人类水平,包括编写连贯的多段落提示文本样本 [RWC
]。
人们可能认为语言建模的性能取决于模型架构、神经网络的大小、用于训练的算力、用于训练的数据等。在本研究中,作者实证了语言建模损失对所有这些因素的依赖性,并重点关注 Transformer
架构 [VSP
, LSP
]。语言任务性能的高上限和低下限使人们能够研究超过七个数量级的趋势。
在整个过程中将观察性能作为训练时间、上下文长度、数据集大小、模型大小、计算预算之间函数级的精确幂律缩放。
1.1 Summary
对 Transformer
语言模型的主要发现如下:
Performance depends strongly on scale, weakly on model shape
模型性能最主要取决于规模,而规模由三个因素组成:模型参数数量 N N N(不包括嵌入)、**数据集大小 D D D **、训练计算量 C C C。在合理的范围内,其他超参数(例如深度与宽度)与性能之间的依赖性非常弱。(第 3 节)
Smooth power laws
当不受其他两个比例因子的影响时,性能与三个比例因子
N
N
N、
D
D
D、
C
C
C 均呈幂律关系,趋势跨越超过六个数量级(见Fig.1
)。实验中没有观察到在上限附近出现偏离这些趋势的迹象,但在最终在达到零损失值之前必趋于平稳。(第 3 节)
Universality of overfitting
只要同时增加 N N N 和 D D D 性能就能得到可预测的提升;但如果 N N N 或 D D D 中有一个保持不变,而另一个增加,性能就会进入收益递减状态。可预测的性能损失取决于比率 N 0.74 / D N^{0.74}/D N0.74/D,这意味着每当将模型规模增加 8 倍时,只需将数据量增加大约 5 倍即可避免性能溢出。(第 4 节)
Universality of training
训练曲线遵循可预测的幂律,其参数大致与模型大小无关。通过推断训练曲线的早期部分,可以粗略地预测经过指定训练时长后,loss大概是多少。(第 5 节)
Transfer improves with test performance
在与训练集不同的分布的文本上评估模型时,结果与训练集上的结果高度相关,损失的偏移量大致为常数。换句话说,迁移到不同的分布会招致常数惩罚,但其他方面的提升大致与训练集上的表现一致。(第 3.2.2 节)
Sample efficiency
大型模型比小型模型具有更高的样本效率,可以用更少的优化步骤(Fig.2
)和更少的数据点(Fig.4
)达到相同的性能水平。
Convergence is inefficient
当计算预算
C
C
C 固定,且模型规模
N
N
N 或可用数据
D
D
D 不受任何其他限制时,可以通过训练非常大的模型并在远未达到收敛时停止来获得最佳性能(见Fig.3
)。因此,直至收敛之前训练大模型计算效率将远高于小型模型,且数据需求的增长速度非常缓慢,为
D
∼
C
0.27
D\sim C^{0.27}
D∼C0.27 。(第 6 节)
Optimal batch size
训练模型的理想 batch_size 大致仅为损失函数的幂,且可以通过测量梯度噪声尺度 [MKAT
] 来确定;对于能够训练的最大模型,收敛时的理想 batch_size 大约为 100 ~ 200 万个token。(第 5.1 节)
综上所述,随着适当扩展模型规模、数据量、计算能力,语言模型性能的提升将平稳且可预测。规模更大的语言模型将比现有模型表现更佳,样本效率也更高。
1.2 Summary of Scaling Laws
当性能仅受非嵌入参数数量
N
N
N、数据集大小
D
D
D 、最优分配的计算预算
C
m
i
n
C_{min}
Cmin 限制时,可以使用幂律预自回归建模语言训练的 Transformer
的测试损失(见Fig.1
):
- 对于参数数量有限的模型,在足够大的数据集上训练收敛:
L ( N ) = ( N c / N ) α N ; α N ∼ 0.076 ; N c ∼ 8.8 × 1 0 13 ( n o n − e m b e d d i n g p a r a m e t e r s ) ( 1.1 ) L(N)=(N_{c}/N)^{\alpha_{N}};\quad \alpha_{N}\sim0.076;\quad N_{c}\sim8.8\times10^{13}(non-embedding\quad parameters)\quad(1.1) L(N)=(Nc/N)αN;αN∼0.076;Nc∼8.8×1013(non−embeddingparameters)(1.1)
- 对于使用有限数据集进行提前停止训练的大型模型:
L ( D ) = ( D c / D ) α D ; α D ∼ 0.095 ; D c ∼ 5.4 × 1 0 13 ( t o k e n s ) ( 1.2 ) L(D)=(D_{c}/D)^{\alpha_{D}};\quad \alpha_{D}\sim0.095;\quad D_{c}\sim5.4\times10^{13}(tokens)\quad(1.2) L(D)=(Dc/D)αD;αD∼0.095;Dc∼5.4×1013(tokens)(1.2)
- 当使用有限的计算量、足够大的数据集、最佳大小的模型、足够小的batch_size进行训练时:
L ( C m i n ) = ( C c m i n / C m i n ) α C m i n ; α C m i n ∼ 0.050 , C c m i n ∼ 3.1 × 1 0 8 ( P F − d a y s ) ( 1.3 ) L(C_{min})=(C^{min}_{c}/C_{min})^{\alpha^{min}_{C}};\quad \alpha_{C}^{min}\sim0.050,\quad C^{min}_{c}\sim3.1\times10^{8}(PF-days)\quad(1.3) L(Cmin)=(Ccmin/Cmin)αCmin;αCmin∼0.050,Ccmin∼3.1×108(PF−days)(1.3)
此外还观察到,在固定batch_size的训练中,训练计算
C
C
C 呈现出经验幂律趋势(Fig.1
),应该使用
C
m
i
n
C_{min}
Cmin 的趋势进行预测。它们之间的关系由公式 (5.5) 给出。
这些关系在
C
m
i
n
C_{min}
Cmin 上跨越八个数量级,在
N
N
N 上跨越六个数量级,在
D
D
D 上跨越两个数量级以上。它们与模型结构和其他 Transformer
超参数(深度、宽度、自注意力头数量)的关联非常弱,具体数值与 Webtext2
训练集 [RWC
] 相关。幂律
α
N
\alpha_{N}
αN 、
α
D
\alpha_{D}
αD 、
α
C
m
i
n
\alpha_{C}^{min}
αCmin 指定了随着
N
N
N、
D
D
D 或
C
m
i
n
C_{min}
Cmin 的扩大,预期性能提升的程度;例如,将参数数量加倍,损失会减小
a
α
N
=
0.95
a^{\alpha_{N}}=0.95
aαN=0.95 倍;
N
N
N、
C
m
i
n
C_{min}
Cmin 和
D
D
D 的精确数值取决于词汇量和分词。
临界batch_size决定了数据并行的速度/效率权衡 ([MKAT
]) 也大致遵循
L
L
L 的幂律:
B c r i t ( L ) = B ∗ L 1 / α B , B ∗ ∼ 2 ⋅ 1 0 8 t o k e n s , α B ∼ 0.21 ( 1.4 ) B_{crit}(L)=\frac{B_{*}}{L^{1/\alpha_{B}}}, \quad B_{*}\sim2\cdot10^{8}tokens,\quad\alpha_{B}\sim0.21\quad(1.4) Bcrit(L)=L1/αBB∗,B∗∼2⋅108tokens,αB∼0.21(1.4)
Equation (1.1)
和 Equation (1.2)
共同表明,随着模型规模的增加,数据集的规模也应该以
D
∝
N
α
N
α
D
D\propto N^{\frac{\alpha_{N}}{\alpha_{D}}}
D∝NαDαN 亚线性方式增加。事实上,存在一个结合Equation (1.1)
和 Equation (1.2)
的方程控制着
N
N
N 和
D
D
D 的同时关系,并控制着过拟合的程度:
L ( N , D ) = [ ( N c N ) α N α D + D c D ] α D ( 1.5 ) L(N,D)=\left[\left(\frac{N_{c}}{N}\right)^{\frac{\alpha_{N}}{\alpha_{D}}}+\frac{D_{c}}{D}\right]^{\alpha_{D}}\quad(1.5) L(N,D)=[(NNc)αDαN+DDc]αD(1.5)
如Fig.4
左侧所示,推测这种函数形式也可以参数化其他生成建模任务的训练对数似然。
在无限数据中,对给定模型进行有限数量的参数更新步骤
S
S
S 训练时,经过初期过度后,学习曲线可以通过以下方式准确拟合(见Fig.4
右侧):
L ( N , S ) = ( N c N ) α N + ( S c S m i n ( S ) ) α s ( 1.6 ) L(N,S)=\left(\frac{N_{c}}{N}\right)^{\alpha_{N}}+\left(\frac{S_{c}}{S_{min}(S)}\right)^{\alpha_{s}}\quad(1.6) L(N,S)=(NNc)αN+(Smin(S)Sc)αs(1.6)
其中
S
c
≈
2.1
×
1
0
3
S_{c}\approx2.1\times10^{3}
Sc≈2.1×103 、
α
s
≈
0.76
\alpha_{s}\approx0.76
αs≈0.76,其中
S
m
i
n
(
S
)
S_{min}(S)
Smin(S) 是Equation (5.4)
估计的优化步骤(参数更新)可能的最小迭代次数。
在固定计算预算
C
C
C 内进行训练,但没有其他限制时,Equation (1.6)
可以预测最佳模型大小
N
N
N、最佳batch_size
B
B
B、最佳steps
S
S
S 、数据集大小
D
D
D 应该增长为:
N ∝ C α C m i n / α N , B ∝ C α C m i n / α B , S ∝ C α C m i n / α S , D = B ⋅ S ( 1.7 ) N\propto C^{\alpha_{C}^{min}/\alpha_{N}},\quad B\propto C^{\alpha^{min}_{C}/\alpha_{B}},\quad S\propto C^{\alpha^{min}_{C}/\alpha_{S}},\quad D=B\cdot S\quad(1.7) N∝CαCmin/αN,B∝CαCmin/αB,S∝CαCmin/αS,D=B⋅S(1.7)
其中:
α m i n = 1 / ( 1 / α S + 1 / α B + 1 / α N ) ( 1.8 ) \alpha^{min}=1/(1/\alpha_{S}+1/\alpha_{B}+1/\alpha_{N})\quad (1.8) αmin=1/(1/αS+1/αB+1/αN)(1.8)
这与经验最优结论
N
∝
C
m
i
n
0.73
N\propto C^{0.73}_{min}
N∝Cmin0.73、
B
∝
C
m
i
n
0.24
B\propto C^{0.24}_{min}
B∝Cmin0.24、
S
∝
m
i
n
0.03
S\propto^{0.03}_{min}
S∝min0.03 非常接近。随着计算预算
C
C
C 的增加,对于更大的模型而言,不会大幅增加训练时间或数据集大小(见Fig.3
)。这也意味着,随着模型规模的扩大,样本使用效率会越来越高。在实践中,由于硬件限制,训练较小模型的时间通常会超过最大计算效率所需的时间。最佳性能取决于总计算量,呈幂律关系(见Equation (1.3)
)。
作者提供了Equation (1.5)
的一些基本理论依据,分析了学习曲线拟合及其对训练时间的影响,并按每个 token 细分了结果,还将其与 LSTM 和循环 Transformer
[DGV
] 进行了一些简要比较。
1.3 Notation
本文使用以下符号:
- L L L:模型的交叉熵损失,通常会对上下文中的所有 token 取平均值,但在某些情况下会使用上下文中特定 token 的损失;
- N N N:模型参数总量,不包括所有词汇和位置嵌入;
- C ∝ 6 N B S C\propto6NBS C∝6NBS:非 embedding 训练总计算量的估计,其中 B B B 是 batch_size; S S S 是训练steps,这里以 P F − d a y s PF-days PF−days 为单位引用数值,其中一个 P F − d a y s = 1 0 15 × 24 × 3600 = 0.64 × 1 0 19 PF-days=10^{15}\times24\times3600=0.64\times10^{19} PF−days=1015×24×3600=0.64×1019 次浮点运算;
- D D D:数据集大小,以tokens为单位;
-
B
c
r
i
t
B_{crit}
Bcrit:临界batch_size [
MKAT
],定义和讨论见第 5.1 节,以临界batch_size进行训练可以在时间和计算效率之间实现大致最优的折衷; - C m i n C_{min} Cmin:达到给定loss所需的最小非嵌入计算量的估值,如果模型的训练batch_size远小于临界batch_size,则将使用此训练计算量;
- S m i n S_{min} Smin:达到给定loss所需的最小训练steps估值,如果模型的训练batch_szie远大于临界batch_size,则需要使用这个训练steps;
- α X \alpha_{X} αX:loss的幂律指数为 L ( X ) ∝ 1 / X α X L(X)\propto 1/X^{\alpha_{X}} L(X)∝1/XαX,其中 X X X 可以是 N N N、 D D D、 C C C、 S S S、 B B B、 C m i n C_{min} Cmin 中的任意一个;
2. Background and Methods
作者在 WebText2
上训练语言模型,WebText2
是 WebText
[RWC
] 扩展版本,使用字节对编码 [SHB
] 进行标记化,词汇量为
n
v
o
c
a
b
=
50257
n_{vocab}=50257
nvocab=50257。优化了在 1024-token 上下文中取平均值的自回归对数似然(即交叉熵损失),这也是主要性能指标。记录了 WebText2
测试分布和在一些其他文本分布上的损失。主要训练仅使用解码器的 [LSP
, RNSS
] Transformer
[VSP
] 模型,但也训练了 LSTM 模型和 Universal Transformer
[DGV
] 进行比较。
2.1 Parameter and Compute Scaling of Transformers
使用超参数
n
l
a
y
e
r
n_{layer}
nlayer(层数)、
d
m
o
d
e
l
d_{model}
dmodel(残差流维度)、
d
f
f
d_{ff}
dff(中间前馈层维度)、$d_{attn}(注意力输出维度)和
n
h
e
a
d
s
n_{heads}
nheads(每层注意力头数量)来参数化 Transformer
架构。在输入上下文中包含 $n_{ctx} 个 token,除非另有说明否则
n
c
t
x
=
1024
n_{ctx} = 1024
nctx=1024。
用 N N N 表示模型大小,将其定义为非嵌入参数的数量:
N ≈ 2 d m o d e l n l a y e r ( 2 d a t t n + d f f ) = 12 n l a y e r d m o d e l 2 with the standard d a t t n = d f f / 4 = d m o d e l ( 2.1 ) \begin{align} N &\approx 2d_{model}n_{layer}(2d_{attn}+d_{ff})\nonumber \\ &= 12n_{layer}d_{model}^{2}\text{with the standard}\quad d_{attn}=d_{ff}/4=d_{model} \quad(2.1) \nonumber \end{align} N≈2dmodelnlayer(2dattn+dff)=12nlayerdmodel2with the standarddattn=dff/4=dmodel(2.1)
排除了biases和其他次要的引导项。模型在嵌入矩阵中也包含 n v o c a b d m o d e l n_{vocab}d_{model} nvocabdmodel 参数,并使用 n c t x d m o d e l n_{ctx}d_{model} nctxdmodel 参数进行位置嵌入,但在讨论“模型大小” N N N 时,并未将这些参数纳入;作者发现这会产生更加清晰的缩放规律。
评估 Transformer
的前向传播大致涉及:
C f o r w a r d ≈ 2 N + 2 n l a y e r n c t x d m o d e l ( 2.2 ) C_{forward}\approx 2N+2n_{layer}n_{ctx}d_{model}\quad(2.2) Cforward≈2N+2nlayernctxdmodel(2.2)
加乘运算,其中因数来自矩阵乘法中使用的乘加运算。Table.1
中包含了更详细的每个运算参数和计算次数。
对于 d m o d e l > n c t x / 12 d_{model} > n_{ctx}/12 dmodel>nctx/12 的上下文和模型,每个 token 的上下文相关计算成本仅占总计算量的一小部分。由于这里主要研究 d m o d e l ≤ n c t x / 12 的模型 d_{model} ≤ n_{ctx}/12 的模型 dmodel≤nctx/12的模型,因此在训练计算量估算中不包含上下文相关项。考虑到反向传播(计算量约为正向传播的两倍),将估算的非嵌入计算量定义为每个训练 token 的 C ≈ 6 N C\approx 6N C≈6N 次浮点运算。
2.2 Training Procedures
除非另有说明,使用 Adam
优化器 [KB
] 训练模型,steps固定为
2.5
×
1
0
5
2.5\times10^{5}
2.5×105,batch_size为 512 个序列,每个序列包含 1024 个 token。由于内存限制,最大的模型(超过 10 亿个参数)使用 Adafactor
[SS
] 进行训练。尝试了各种学习率和学习计划,如Appendix. D.6
中所述。作者发现,收敛结果与学习率计划基本无关。除非另有说明,数据中包含的所有训练运行均采用相同的学习率计划,即 3000 步线性预热,然后余弦衰减至零。
2.3 Datasets
在 [RWC
] 中描述的 WebText
扩展版本上训练模型。原始 WebText
数据集是从 Reddit
抓取的截至 2017 年 12 月的出站链接,这些链接至少获得了 3 karma
。在第二个版本 WebText2
中,添加了 2018 年 1 月至 10 月期间的出站 Reddit
链接,同样至少获得了 3 karma
。karma
阈值可作为判断人们是否认为链接有趣或有用的启发式方法。新链接的文本是使用 Newspaper3k
Python 库提取的,该数据集包含 20.3M 个文档,包含 96 GB 文本和
1.62
×
1
0
10
1.62\times10^{10}
1.62×1010 个单词(由 wc 定义)。然后,应用 [RWC
] 中描述的可逆标记器,生成
2.29
×
1
0
10
2.29\times10^{10}
2.29×1010 个tokens,保留了
6.6
×
1
0
8
6.6\times10^{8}
6.6×108 个tokens作为测试集,并且还对类似的书籍语料库 [ZKZ
]、Common Crawl
[Fou
]、英文维基百科和公开的互联网书籍集合样本进行了测试。
3. Empirical Results and Basic Power Laws
为了表征语言模型的扩展,作者训练了各种各样的模型,并考虑了许多因素,包括:
- Model size:大小从 768 ~ 15 亿个非嵌入参数;
- Dataset size:数量从 2200 万~ 230 亿不等;
- Shape:包括深度、宽度、注意力头、前馈维度;
- Context length:大多数测试为 1024,但也尝试使用较短的上下文;
- Batch size:大多数测试为 2 19 2^{19} 219,但也会改变用来测量临界batch_size;
在本节中,将展示数据以及基于经验的拟合,将理论分析推迟到后面的章节。
3.1 Approximate Transformer Shape and Hyperparameter Independence
当非嵌入参数总数
N
N
N 保持不变时,Transformer
的性能对形状参数
n
l
a
y
e
r
n_{layer}
nlayer、
n
h
e
a
d
s
n_{heads}
nheads 和
d
f
f
d_{ff}
dff 的依赖性非常弱。为了得到这些结果,训练了固定规模的模型并控制变量改变单个超参数。对于
n
h
e
a
d
s
n_{heads}
nheads 而言,当改变
n
l
a
y
e
r
n_{layer}
nlayer 时,同时改变
d
m
o
d
e
l
d_{model}
dmodel,保持
N
∝
12
n
l
a
y
e
r
d
m
o
d
e
l
2
N\propto 12n_{layer}d^{2}_{model}
N∝12nlayerdmodel2 不变。类似地,为了在模型规模固定的情况下改变
d
f
f
d_{ff}
dff,同时改变了
d
m
o
d
e
l
d_{model}
dmodel 参数,如Table.1
中参数数量所要求的。如果较深的 Transformer
有效表现为较浅模型的集成,正如 ResNets
[VWB
] 所建议的那样,那么
n
l
a
y
e
r
s
n_{layers}
nlayers 的独立性将随之而来。结果如Fig.5
所示。
3.2 Performance with Non-Embedding Parameter Count N
Fig.6
展示了各种模型的性能,从形状 (
n
l
a
y
e
r
n_{layer}
nlayer,
d
m
o
d
e
l
d_{model}
dmodel) = (2,128) 的小型模型,到形状从 (6,4288) ~ (207,768) 的十亿参数模型。作者在完整的 WebText2
数据集上训练到接近收敛,并且没有观察到过拟合(可能除了那些非常大的模型)。
如Fig.1
所示,作者发现非嵌入参数数量为 N 时存在一个稳定的趋势,该趋势可以拟合方程 (1.5) 的第一项,因此:
L ( N ) ≈ ( N c N ) α N ( 3.1 ) L(N)\approx \left(\frac{N_{c}}{N}\right)^{\alpha_{N}}\quad(3.1) L(N)≈(NNc)αN(3.1)
为了观察这些趋势,研究性能与
N
N
N 的关系至关重要;如果使用参数总量(包括嵌入参数),趋势就会有些模糊(见Fig.6
)。这表明,嵌入矩阵可以变得更小而不会影响性能。
虽然这些模型已经在 WebText2
数据集上进行了训练,但它们在各种其他数据集上的测试损失也是
N
N
N 的幂律,且幂几乎相同,如Fig.8
所示。
3.2.1 Comparing to LSTMs and Universal Transformers
在Fig.7
中,比较了 LSTM 和 Transformer
的性能,并将其作为非嵌入参数总量
N
N
N 的函数。LSTM 使用相同的数据集和上下文长度进行训练。从这些图中可以看出,对于上下文中出现的较早的词条,LSTM 的性能与 Transformer
相当,但对于较晚出现的词条,LSTM 的性能则无法与 Transformer
相提并论。Appendix. D.5
中展示了性能与上下文位置之间的幂律关系,其中,模型规模越大,幂值越大,表明快速识别模式的能力越强。
在附录中的Fig.17
中比较了标准 Transformer
与循环 Transformer
[DGV
] 的性能。这些模型复用了参数,因此作为
N
N
N 函数的性能略有提升,但每个参数都需要额外的计算。
3.2.2 Generalization Among Data Distributions
作者还在一组额外的文本数据分布上测试了模型。Fig.8
显示了这些数据集上的测试损失与模型大小的关系,模型都仅在 WebText2
数据集上进行训练。这些其他数据分布上的损失随着模型大小的增加而平稳提升,与 WebText2
数据集上的提升同步。同时发现,泛化能力几乎完全取决于分布内验证损失,而与训练时长或收敛程度无关,还观察到对模型深度没有相关性(参见Appendix. D.8
)。
3.3 Performance with Dataset Size and Compute
在Fig.1
中,作者展示了测试损失随数据集大小
D
D
D(以token为单位)和训练计算
C
C
C 变化的经验趋势。
对于
D
D
D 的趋势,在 WebText2
数据集的固定子集上训练了一个 (
n
l
a
y
e
r
n_{layer}
nlayer,
n
e
m
b
d
n_{embd}
nembd) = (36,1280) 的模型。一旦测试损失停止下降就停止训练。作者发现,由此产生的测试损失可以用简单的幂律拟合,数据集大小。数据和拟合结果Fig.1
所示:
L ( D ) ≈ ( D c D ) α D ( 3.2 ) L(D)\approx \left(\frac{D_{c}}{D}\right)^{\alpha_{D}}\quad(3.2) L(D)≈(DDc)αD(3.2)
训练期间使用的非嵌入计算总量可估算为 C = 6 N B S C=6NBS C=6NBS,其中 B B B 是batch_size, S S S 是参数更新次数,因子 6 表示前向和后向传播次数。对于给定的 C C C 值,扫描所有不同 N N N 值的模型,找到在 S = C 6 B S S=\frac{C}{6BS} S=6BSC 上性能最佳的模型。在这些结果中,所有模型的batch_size B B B 保持不变,这意味着这些经验结果并非真正最优。后面的部分中使用调整后的 C m i n C_{min} Cmin 来解释这一点,以获得更清晰的趋势。
结果如Fig.1
左侧图中的粗黑线所示,可以被拟合如下:
L ( C ) = ( C C C ) α C ( 3.3 ) L(C)=\left(\frac{C_{C}}{C}\right)^{\alpha_{C}}\quad(3.3) L(C)=(CCC)αC(3.3)
Fig.1
还包含各个学习曲线以阐明模型何时达到最优。稍后将更深入地研究计算的最优分配。数据证明了,样本效率会随着模型规模的增大而提高,附录中的Fig.19
中直接说明了这一点。
4 Charting the Infinite Data Limit and Overfitting
在第三部分中,作者发现了一些语言模型性能的基本缩放定律。本章节将研究在包含
D
D
D 个 token 的数据集上训练一个规模为
N
N
N 的模型,同时改变
N
N
N 和
D
D
D 时的模型性能。将通过实证证明,最优训练的测试损失符合Equation. (1.5)
的缩放定律,为控制过拟合的同时训练规模不断扩大的模型所需的数据量提供了指导。
4.1 Proposed L(N,D) Equation
选择了参数化Equation. (1.5)
:
L ( N , D ) = [ ( N c N ) α N α D + D c D ] α D ( 4.1 ) L(N,D)=\left[\left(\frac{N_{c}}{N}\right)^{\frac{\alpha_{N}}{\alpha_{D}}}+\frac{D_{c}}{D}\right]^{\alpha_{D}}\quad(4.1) L(N,D)=[(NNc)αDαN+DDc]αD(4.1)
这里列出三个原则:
- 词汇量或分词方式的变化预计会以某种方式重新调整损失。 L ( N , D ) L(N,D) L(N,D) 的参数化必须允许这种重新调整;
- 固定 D D D,使 N → ∞ N\to ∞ N→∞,总损失应该趋近于 L ( D ) L(D) L(D);反之固定 N N N,使 D → ∞ D\to ∞ D→∞,损失必须趋近于 L ( N ) L(N) L(N);
- L ( N , D ) L(N,D) L(N,D) 在 D = ∞ D=∞ D=∞ 处应为解析式,因此它有一个关于 1 / D 1/D 1/D 的整数幂级数展开式,该理论支持明显弱于前两个原理;
作者选择 L ( N , D ) L(N,D) L(N,D) 满足第一个要求,因为可以随着词汇量的变化而重新调整 N c N_{c} Nc, D c D_{c} Dc,这也意味着 N c N_{c} Nc, D c D_{c} Dc 的值没有具体含义。
由于当测试损失不再以相同的方式改善和优化所有模型时,会提前停止训练,因此作者预期较大的模型应该始终比较小的模型表现更好。但是,在固定的有限 D D D 的情况下,也不强求任何模型能够接近最佳损失(即文本的熵);同样,固定大小的模型也会受到容量限制。这些因素促成了第二个原则。在无限 D D D 时对 L ( N ) L(N) L(N) 的了解以及在无限 N N N 时的 L ( D ) L(D) L(D) 的了解完全决定了 L ( N , D ) L(N,D) L(N,D) 中的所有参数。
第三个原则更具推测性。通常会认为过拟合在非常大的
D
D
D 下会扩展
∝
1
/
D
\propto 1/D
∝1/D。过拟合应该与数据集的方差或信噪比[AS
]相关,并且其扩展速度为
1
/
D
1/D
1/D。这个预期应该适用于任何平滑的损失函数,因为这里期望扩展损失在
D
→
∞
D\to ∞
D→∞ 极限附近。然而,这个论点假设了
1
/
D
1/D
1/D 校正比其他方差来源(例如有限的batch_size和其他对优化效果的限制)占主导地位。
第三条原理解释了Equation. (1.5)
中
N
N
N 和
D
D
D 之间的不对称性。非常相似的对称表达式是可能的,但不会出现整数幂的
1
/
D
1/D
1/D 展开式上,并且需要引入一个额外的参数。
无论如何将看到 L ( N , D ) L(N,D) L(N,D) 方程与数据很好地拟合,这是 L ( N , D ) L(N,D) L(N,D) 假设的最重要依据。
4.2 Results
对所有模型进行正则化,采用 10% 的 dropout
值,并通过跟踪测试损失并在其不再下降时停止。结果如Fig.9
所示,其中包括对Equation (1.5)
中四个参数
α
N
\alpha_{N}
αN、
α
D
\alpha_{D}
αD、
N
c
N_{c}
Nc、
D
c
D_{c}
Dc 的拟合结果:
这里获得了极好的拟合效果,除了数据集缩减了 1024 倍(约为
2
×
107
2\times107
2×107 个 token)的运行情况。在这种小的数据集上,一个 epoch 仅包含 40 次参数更新。小数据集或许代表了语言建模的一种不同模式,因为过拟合在训练的早期就发生了(参见Fig.16
)。这些参数与第 3 节中获得的参数略有不同,因为这里拟合的是完整的
L
(
N
,
D
)
L(N,D)
L(N,D),而不仅仅是
L
(
N
,
∞
)
L(N,∞)
L(N,∞) 或
L
(
∞
,
D
)
L(∞,D)
L(∞,D)。
为了绘制无限数据极限的边界,可以直接研究过拟合的程度。除了最大规模的模型之外,在使用完整的 220 亿个 token WebText2
数据集进行训练时,都没有看到过拟合的迹象,因此可以将其作为
D
=
∞
D=∞
D=∞ 的替代。通过定义有限
D
D
D 与无限数据极限进行比较:
δ L ( N , D ) ≡ L ( N , D ) L ( N , ∞ ) − 1 ( 4.2 ) \delta L(N,D)\equiv\frac{L(N,D)}{L(N,∞)}-1\quad(4.2) δL(N,D)≡L(N,∞)L(N,D)−1(4.2)
并将其作为
N
N
N 和
D
D
D 的函数进行研究。经验发现,
δ
L
\delta L
δL 仅取决于
N
N
N 和
D
D
D 的特定组合,如Fig.16
所示,这遵循 Equation (1.5)
的标度定律,这意味着
δ L ≈ ( 1 + ( N N c ) α N α D D c D ) α D − 1 ( 4.3 ) \delta L\approx\left(1+\left(\frac{N}{N_{c}}\right)^{\frac{\alpha_{N}}{\alpha_{D}}}\frac{D_{c}}{D}\right)^{\alpha_{D}}-1\quad(4.3) δL≈(1+(NcN)αDαNDDc)αD−1(4.3)
即便是在较大的 D D D 下,此公式也有 1 / D 1/D 1/D 幂的级数展开式。
作者估计,不同随机种子的损失变化大约为 0.02,这意味着为了避免在训练到收敛阈值时过度拟合,需要以下条件成立:
D ≳ ( 5 × 1 0 3 ) N 0.74 ( 4.4 ) D\gtrsim(5\times10^{3})N^{0.74}\quad(4.4) D≳(5×103)N0.74(4.4)
基于此关系,参数少于
1
0
9
10^9
109 的模型可以在 22B tokens 的 WebText2
数据集上训练,且过拟合程度极低,但最大的模型会遇到一些轻微的过拟合。此关系表明,当数据集大小可以与模型大小呈亚线性增长,同时可以避免过拟合。但请注意,这并不代表计算效率最高的训练。作者还强调,没有在数据集和模型大小变化时优化正则化(例如 dropout 概率)。
5. Scaling Laws with Model Size and Training Time
在本节中,将证明一个简单的缩放定律可以很好地描述损失作为模型大小
N
N
N 和训练时间的函数。首先,解释如何利用 [MKAT
] 结果来定义一个通用的训练步长
S
m
i
n
S_{min}
Smin,这解释了大多数模型尚未以最佳batch_size进行训练的事实。然后,证明可以使用Equation (1.6)
拟合损失与模型大小和训练时间之间的关系。之后,将利用这些结果来预测模型大小和训练时间之间训练计算资源的最佳分配,并验证该预测。
5.1 Adjustment for Training at B c r i t ( L ) B_{crit}(L) Bcrit(L)
[MKAT
] 提出了一个关于训练batch_size相关性的简单经验理论。理论认为,存在一个临界batch_size
B
c
r
i
t
B_{crit}
Bcrit;当
B
B
B 小于
B
c
r
i
t
B_{crit}
Bcrit 时,可以增加batch_size大小,此时计算效率的下降非常小;而当
B
B
B >
B
c
r
i
t
B_{crit}
Bcrit 时,增加
B
B
B 会导致收益显著下滑。此外,理论还认为,梯度噪声尺度可以对
B
c
r
i
t
B_{crit}
Bcrit 进行简单的预测,并且除了通过已达到的损失值之外,两者都不直接依赖于模型大小。这些结果可用于预测训练时间和计算能力将如何随batch_size而变化。为了尽可能有效地利用训练时间和计算能力,最好使用
B
≈
B
c
r
i
t
B\approx B_{crit}
B≈Bcrit 的batch_size进行训练。当
B
≫
B
c
r
i
t
B\gg B_{crit}
B≫Bcrit 时进行训练可最大限度地减少训练步骤数,而当
B
≪
B
c
r
i
t
B\ll B_{crit}
B≪Bcrit 时进行训练可最大限度地减少计算能力的使用。
更具体地说,对于各种各样的神经网络任务,训练步骤的数量和处理的数据示例的数量 E = B S E=BS E=BS 满足如下简单的关系:
( S S m i n − 1 ) ( E E m i n − 1 ) = 1 ( 5.1 ) \left(\frac{S}{S_{min}}-1\right)\left(\frac{E}{E_{min}}-1\right)=1\quad(5.1) (SminS−1)(EminE−1)=1(5.1)
当训练到损失 L L L 为任何固定值时,这里 S m i n S_{min} Smin 是达到 L L L 所需的最小步数,而 E m i n E_{min} Emin 是必须处理的最小数据示例数。
附录中的Fig.18
中演示了Transformer
的关系 (5.1)。此关系定义了临界batch_size:
B c r i t ( L ) ≡ E m i n S m i n ( 5.2 ) B_{crit}(L)\equiv\frac{E_{min}}{S_{min}}\quad(5.2) Bcrit(L)≡SminEmin(5.2)
Euqation (5.2)
为损失目标值的函数。以临界batch_size进行训练可以实现大致最优的时间/计算权衡,需要
2
S
m
i
n
2S_{min}
2Smin 个训练步长,并处理
E
=
2
E
m
i
n
E = 2E_{min}
E=2Emin 个数据样本。
在Fig.10
中绘制了两个不同模型的临界batch_size和梯度噪声尺度 5 与训练损失的关系。
B
c
r
i
t
(
L
)
B_{crit}(L)
Bcrit(L) 与模型大小无关,仅取决于损失
L
L
L。因此,[MKAT
] 的预测对于 Transformer
语言模型仍然成立。临界batch_size可以用损失函数的幂律拟合,其中
B
∗
≈
2
×
1
0
8
,
α
B
≈
0.21
B_{*}\approx2\times10^{8}, \alpha_{B}\approx0.21
B∗≈2×108,αB≈0.21:
B c r i t ( L ) ≈ B ∗ L 1 / α B ( 5.3 ) B_{crit}(L)\approx\frac{B_{*}}{L^{1/\alpha_{B}}}\quad(5.3) Bcrit(L)≈L1/αBB∗(5.3)
作者选择 B c r i t ( L ) B_{crit}(L) Bcrit(L) 的参数化方式,是因为当损失函数接近其最小值 L m i n L_{min} Lmin 时,梯度噪声尺度预计会发散,而 B c r i t B_{crit} Bcrit 会跟踪该噪声尺度。目前还不知道 L m i n L_{min} Lmin 的值,因为没有看到任何迹象表明模型正在接近它;但由于自然语言的熵不为零,因此 L m i n > 0 L_{min} > 0 Lmin>0。由于 L m i n L_{min} Lmin 显然远小于已有的 L L L 值,因此使用 B c r i t B_{crit} Bcrit 在 L → 0 L\to0 L→0 时发散的参数化方式。
使用 B c r i t ( L ) B_{crit}(L) Bcrit(L) 来估计batch_size为 B B B = 219 个 token 时训练步数 S S S 与batch_size为 B ≫ B c r i t B\gg B_{crit} B≫Bcrit 时训练步数之间的关系,表示如下:
S m i n ( S ) ≡ S 1 + B c r i t ( L ) / B ( minimum steps, at B ≫ B c r i t ) ( 5.4 ) S_{min}(S)\equiv\frac{S}{1+B_{crit}(L)/B}\quad(\text{minimum steps, at }B\gg B_{crit})\quad(5.4) Smin(S)≡1+Bcrit(L)/BS(minimum steps, at B≫Bcrit)(5.4)
对于任何给定损失值 L L L,同样定义了一个临界值,即如果要在 B ≪ B c r i t ( L ) B\ll B_{crit}(L) B≪Bcrit(L) 下训练,则使用规模为 N N N 的模型训练到 L L L 所需的计算量,其中 C = 6 N B C = 6NB C=6NB 估计batch_size B B B 使用的(非嵌入)计算:
C m i n ≡ C 1 + B / B c r i t ( L ) ( minimum compute, at B ≪ B c r i t ) ( 5.5 ) C_{min}\equiv\frac{C}{1+B/B_{crit}(L)}\quad(\text{minimum compute, at} B\ll B_{crit})\quad(5.5) Cmin≡1+B/Bcrit(L)C(minimum compute, atB≪Bcrit)(5.5)
5.2 Results for L ( N , S m i n ) L(N,S_{min}) L(N,Smin) and Performance with Model Size and Compute
将使用Equation (5.4)
中定义的
S
m
i
n
S_{min}
Smin 来获得一个简单且通用的拟合方法,以拟合无限数据极限下损失对模型大小和训练时间的依赖关系。Equation (1.6)
来拟合稳定的、经 Adam
优化后的训练过程,为方便起见,这里重复一下:
L ( N , S m i n ) = ( N c N ) α N + ( S c S m i n ) α S ( 5.6 ) L(N,S_{min})=\left(\frac{N_{c}}{N}\right)^{\alpha_{N}}+\left(\frac{S_{c}}{S_{min}}\right)^{\alpha_{S}}\quad(5.6) L(N,Smin)=(NNc)αN+(SminSc)αS(5.6)
对于损失函数,将学习速率计划的预热期之后的所有训练步骤纳入其中,并使用以下参数找到与数据的拟合:
利用这些参数,得到Fig.4
中的学习曲线拟合。虽然拟合并不完美,但Equation (5.6)
形式足够简单。
数据和拟合结果可以以一种不同且更有趣的方式进行可视化,如Fig.11
所示。作者研究了测试损失随模型大小的变化,同时固定训练中使用的总非嵌入计算量
C
C
C 或步数
S
S
S。对于拟合,使用Equation (5.5)
和 Equation (5.4)
以及上述参数和Equation (5.6)
。
损失函数对
S
m
i
n
S_{min}
Smin 的幂律依赖性反映了优化器动态与损失函数景观的相互作用。由于拟合效果在训练后期达到最佳,此时损失函数可能近似为二次函数,因此幂律应该能够提供关于损失函数 Hessian
矩阵谱的信息。它的普适性表明 Hessian
特征值密度与模型大小基本无关。
5.3 Lower Bound on Early Stopping Step
L ( N , S m i n ) L(N,S_{min}) L(N,Smin) 的结果可用于推导在训练数据有限的情况下提前停止的步长的大致下限。其动机是,对于给定模型,有限和无限 D D D 的学习曲线在达到 S m i n ≈ S s t o p S_{min}\approx S_{stop} Smin≈Sstop 之前将非常相似。因此,过拟合应该与在 S s t o p S_{stop} Sstop 处结束训练的校正值成正比,这样会低估 S s t o p S_{stop} Sstop,实际上当 D D D 有限时,测试损失的下降速度会更慢,需要更多的训练步数才能达到有限 D D D 下的最佳测试损失。由此推导出不等式:
S s t o p ( N , D ) ≳ S c [ L ( N , D ) − L ( N , ∞ ) ] 1 / α S ( 5.7 ) S_{stop}(N,D)\gtrsim\frac{S_{c}}{[L(N,D)-L(N,∞)]^{1/\alpha_{S}}}\quad(5.7) Sstop(N,D)≳[L(N,D)−L(N,∞)]1/αSSc(5.7)
其中
L
(
N
,
∞
)
L(N,∞)
L(N,∞) 是收敛损失,利用无限可用数据进行评估。附录中的Fig.16
展示了该不等式及其与经验数据的比较。在该图中,
S
s
t
o
p
S_{stop}
Sstop 和
L
(
N
,
D
)
L(N,D)
L(N,D) 的值是经验值(尽管
S
s
t
o
p
S_{stop}
Sstop 已调整以模拟
B
≫
B
c
r
i
t
B \gg B_{crit}
B≫Bcrit 时的训练),而
L
(
N
,
∞
)
L(N,∞)
L(N,∞) 是根据
D
=
∞
D= ∞
D=∞ 时
L
(
N
,
D
)
L(N,D)
L(N,D) 的拟合值计算得出的。
6 Optimal Allocation of the Compute Budget
Fig.1
的右上角展示了性能随训练过程中所用计算量变化的经验趋势。然而,该结果为固定batch_size
B
B
B 进行训练,实际上以 5.1 节中讨论过的batch_size
B
c
r
i
t
B_{crit}
Bcrit 进行训练可以提高训练效率。使用更少的样本或更少的训练步数可以分别实现较大或较小的损失值,而通过标准化到临界批次大小来校正这种低效率,可以得到更清晰、更可预测的趋势。
在本节中将针对这一疏忽进行调整。更重要的是将利用第 5 节的结果来确定模型规模 N N N 和训练期间处理的数据量之间的最佳计算分配,即 #2B_{crit}S_{min}$。将利用 L ( N , S m i n ) L(N,S_{min}) L(N,Smin) 方程,从经验和理论两个角度确定这一分配,并证明这些方法是一致的。
6.1 Optimal Performance and Allocations
首先研究一下损失与Equation (5.5)
中最优分配计算量的关系。结果如Fig.13
所示,并附有幂律拟合图,与Fig.1
的计算图相比,新的
C
m
i
n
C_{min}
Cmin 拟合结果有所改善。
给定
L
(
C
m
i
n
)
L(C_{min})
L(Cmin) 自然地会寻求最优模型大小
N
(
C
m
i
n
)
N(C_{min})
N(Cmin),使得在给定训练计算量的情况下,损失最小。最优模型大小如Fig.14
所示。观察到
N
(
C
m
i
n
)
N(C_{min})
N(Cmin) 可以很好地服从幂律分布:
N ( C m i n ) ∝ ( C m i n ) 0.73 ( 6.1 ) N(C_{min})\propto(C_{min})^{0.73}\quad(6.1) N(Cmin)∝(Cmin)0.73(6.1)
在Fig.12
中展示了次优规模的训练模型的效果(见Appendix. B.4
)。
根据定义, C m i n ≡ 6 N B c r i t S C_{min}≡6NB_{crit}S Cmin≡6NBcritS,因此可以使用 N ( C m i n ) N(C_{min}) N(Cmin) 进一步推导结果。具体而言,由于先前的拟合结果显示 B ∝ L − 4.8 B\propto L^{−4.8} B∝L−4.8 且 L ∝ C m i n − 0.05 L\propto C^{-0.05}_{min} L∝Cmin−0.05 可以得出 KaTeX parse error: Undefined control sequence: \propro at position 9: B_{crit}\̲p̲r̲o̲p̲r̲o̲ ̲C^{0.24}_{min}。得出结论,最优步数只会随着计算量的增长而非常缓慢地增长,如下所示:
S m i n ∝ ( C m i n ) 0.03 ( 6.2 ) S_{min}\propto(C_{min})^{0.03}\quad(6.2) Smin∝(Cmin)0.03(6.2)
与Fig.14
中的经验结果相匹配。事实上,当测得的指数足够小结果甚至可能与零指数一致。
因此得出结论:当以最优计算分配的方式扩展语言模型时,应该主要增加模型规模 N N N,同时通过 B ∝ B c r i t B\propto B_{crit} B∝Bcrit 扩大batch_size,并尽量减少串行步骤数量的增加。由于计算效率高的训练使用的优化步骤相对较少,因此可能需要在加速早期训练动态方面开展更多工作。
6.2 Predictions from L ( N , S m i n ) L(N,S_{min}) L(N,Smin)
L
(
C
m
i
n
)
L(C_{min})
L(Cmin) 的结果及其分配情况可以通过第 5 节中得到的
L
(
N
,
S
m
i
n
)
L(N,S_{min})
L(N,Smin) 预测。给定
L
(
N
,
S
m
i
n
)
L(N, S_{min})
L(N,Smin) 方程,代入
S
m
i
n
=
C
m
i
n
S_{min} = C_{min}
Smin=Cmin,在固定训练计算量的情况下,找到损失函数的最小值
6
N
B
6NB
6NB,该函数是关于
N
N
N 的函数。Appendix. B
详细介绍了此过程,并提供了一些额外的预测。
对于作为训练计算函数的损失,预测如下:
L ( C m i n ) = C c m i n C m i n α C m i n ( 6.3 ) L(C_{min})=\frac{C^{min}_{c}}{C_{min}}^{\alpha^{min}_{C}}\quad(6.3) L(Cmin)=CminCcminαCmin(6.3)
其中:
α C m i n ≡ 1 1 / α S + 1 / α B + 1 / α N ≈ 0.054 ( 6.4 ) \alpha^{min}_{C}\equiv\frac{1}{1/\alpha_{S}+1/\alpha_{B}+1/\alpha_{N}}\approx0.054\quad(6.4) αCmin≡1/αS+1/αB+1/αN1≈0.054(6.4)
损失函数方程与Fig.13
的指数非常吻合:
此外还预测:
N ( C m i n ) ∝ ( C m i n ) α C m i n / α N ≈ ( C m i n ) 0.71 ( 6.5 ) N(C_{min})\propto(C_{min})^{\alpha^{min}_{C}/\alpha_{N}}\approx(C_{min})^{0.71}\quad(6.5) N(Cmin)∝(Cmin)αCmin/αN≈(Cmin)0.71(6.5)
这也与Fig.14
的缩放比例相符,误差在几个百分点以内,缩放规律为语言建模的性能提供了一个预测框架。
6.3 Contradictions and a Conjecture
作者没有观察到在计算量、数据量或模型规模较大时偏离幂律趋势的迹象。然而,由于自然语言的熵值不为零,那么函数的趋势最终必然趋于平稳。
本节描述的计算高效训练趋势已经包含了一个明显的矛盾。在比本文所述规模高出几个数量级的条件下,
L
(
C
m
i
n
)
L(C_{min})
L(Cmin) 缩放定律预测的性能会下降到低于在计算量缓慢增长的训练数据应有的水平。这意味着缩放定律在此点之前必然失效,但作者推测交点具有更深层的含义:Transformer
语言模型达到最佳性能的点的估计值。
由于计算高效型训练所使用的数据量会随着计算预算的增加而缓慢增长,
L
(
C
m
i
n
)
L(C_{min})
L(Cmin) 预测的性能最终会达到
L
(
D
)
L(D)
L(D) 幂律设定的下限(见Fig.15
):
为了控制过度拟合,第 4 节的结果表明应该将数据集的大小缩放如下,其中
N
(
C
m
i
n
)
N(C_{min})
N(Cmin) 为Fig.14
中的模型规模:
D ∝ N 0.74 ∝ C m i n 0.54 ( 6.6 ) D\propto N^{0.74}\propto C^{0.54}_{min}\quad(6.6) D∝N0.74∝Cmin0.54(6.6)
将其与计算高效训练的数据需求进行比较。如果以临界batch_size(即 C = 2 C m i n C = 2C_{min} C=2Cmin)进行训练,并且在训练期间从不重复使用数据,会发现数据使用量会随着计算量的增长而增长,如下所示
D ( C m i n ) = 2 C m i n 6 N ( C m i n ) ≈ ( 4 × 1 0 10 t o k e n s ) ( C m i n / P F − D a y ) 0.26 ( 6.7 ) D(C_{min})=\frac{2C_{min}}{6N(C_{min})}\approx(4\times10^{10}tokens)(C_{min}/PF-Day)^{0.26}\quad(6.7) D(Cmin)=6N(Cmin)2Cmin≈(4×1010tokens)(Cmin/PF−Day)0.26(6.7)
这是数据集大小能够随着计算有效增长的最大速率,这意味着只训练一个周期。但数据集增长速度比Equation (6.6)
中慢得多。这似乎意味着,即使训练过程从未使用任何重复数据,计算高效训练最终也会遇到过拟合的问题。
根据Fig.1
可以预计,当数据集规模受限(即过拟合)时,损失函数的缩放比例应为
L
(
D
)
∝
D
−
0.095
L(D)\propto D^{-0.095}
L(D)∝D−0.095。意味着一旦数据受限,损失函数的缩放比例应为
L
(
D
(
C
m
i
n
)
)
∝
C
m
i
n
−
0.03
L(D(C_{min}))\propto C^{-0.03}_{min}
L(D(Cmin))∝Cmin−0.03。这又一次出现了矛盾,因为这最终会与Fig.13
中对
L
(
C
m
i
n
)
L(C_{min})
L(Cmin) 的预测相交,在Fig.13
中发现
L
(
C
m
i
n
)
∝
C
m
i
n
−
0.050
L(C_{min})\propto C_{min}^{-0.050}
L(Cmin)∝Cmin−0.050 。
L ( D ( C m i n ) ) L(D(C_{min})) L(D(Cmin)) 和 L ( C m i n ) L(C_{min}) L(Cmin) 的交点位于:
C ∗ ∼ 1 0 4 PF-Days N ∗ ∼ 1 0 12 parameters , D ∗ ∼ 1 0 12 tokens , L ∗ ∼ 1.7 nats/token ( 6.8 ) C^{*}\sim10^{4} \text{PF-Days}\quad N^{*}\sim10^{12} \text{parameters},\quad D^{*}\sim10^{12}\text{tokens},\quad L^{*}\sim1.7 \text{nats/token}\quad(6.8) C∗∼104PF-DaysN∗∼1012parameters,D∗∼1012tokens,L∗∼1.7nats/token(6.8)
尽管根据幂律拟合中指数的精确值不确定,但数值会在一个方向上浮动一个或多个数量级。最合理的解释是,缩放定律在达到这一点时或之前就失效了,而这在计算和模型规模上仍然还有许多数量级的差距。
或许这个交点有着更深层的含义。如果无法在不改变数据质量要求的情况下将模型规模扩大到 N ∗ N^{*} N∗以上,那么这或许意味着一旦达到 C m i n ∗ C_{min}^{*} Cmin∗ 和 N ∗ N^{*} N∗ 就提取了自然语言数据中所有可靠的信息。按照这种解释, L ∗ L^{*} L∗ 可以粗略估计自然语言 entropy-per-token。在这种情况下,预计损失趋势会在 L ∗ L^{*} L∗ 或之前趋于平稳。
可以考虑一个添加了噪声的训练数据集版本来猜测
L
(
C
m
i
n
)
L(C_{min})
L(Cmin) 在趋于平稳时的函数形式。例如,在模型显示的每个上下文中附加一个随机的token字符串,使用一个常数加法因子人为地增加损失。这样,与本底噪声的差
L
−
L
n
o
i
s
e
L-L_{noise}
L−Lnoise 将成为更有意义的性能指标,即使该差的小幅下降也可能代表定性性能的显著提升。由于人为噪声会同等地影响所有拟合公式,因此临界点 Equation (6.8)
不会发生变化(除了
L
∗
L^{*}
L∗ 的绝对值),即使它发生在趋于平稳之后,也可能具有意义。
7. Related Work
幂律的来源多种多样 [THK
]。密度估计 [Was
] 和随机森林模型 [Bia
] 中幂律随模型和数据集大小的变化可能与我们的结果相关。这些模型表明,幂律指数可以非常粗略地解释为数据中相关特征数量的倒数。
一些早期的 [BB
、Goo
] 研究发现性能和数据集大小之间存在幂律关系。最近的研究 [HNA
、HAD
] 也研究了模型大小和数据大小之间的缩放关系;他们的工作可能是文献中与本文的研究最接近的。但请注意,[HNA
] 发现数据集大小随模型大小呈超线性缩放,而作者发现的是亚线性缩放。本文在计算最优分配方面的发现与 [Kom
] 有一些相似之处,包括幂律学习曲线。EfficientNets
[TL
] 似乎也遵循准确率和模型大小之间的近似幂律关系。最近的研究 [RRBS
] 研究了各种数据集的数据集大小和模型大小的缩放关系,并拟合了一个与本文类似的假设。
EfficientNet
[TL
] 主张以指数方式(使用不同的系数)缩放深度和宽度,以获得最佳图像模型性能,从而使宽度与深度呈幂律缩放关系。作者发现,对于语言模型而言,在缩放时该幂应该大致为 1(因为宽度/深度应该保持不变)。但更重要的发现是,与语言模型的整体规模相比,精确的架构超参数并不重要。[VWB
] 认为深度模型可以作为较浅模型的集成,这可能解释了这一发现。早期研究 [ZK
] 比较了宽度和深度,发现宽 ResNet
在图像分类方面的表现优于深度 ResNet
。一些研究固定了每个数据样本的计算量,这往往与模型参数的数量成比例缩放,而本文研究了模型大小和训练计算量的缩放关系。
[AS
、BHMM
] 已经研究了高度过度参数化模型的泛化,发现当模型大小达到数据集大小时会出现“阻塞转变” [GJS
](这可能需要比典型做法高出许多数量级的训练,尤其是在不使用早停的情况下),但是作者没有观察到这种转变,并且发现必要的训练数据在模型大小上呈亚线性增长。模型大小的扩展,尤其是在宽度较大的情况下 [JGH
、LXS
],可能为探讨本文的一些缩放关系提供有用的框架。优化结果,如学习曲线的形状,很可能可以用噪声二次模型来解释,该模型可以在现实环境中提供相当准确的预测 [ZLN
]。要使这种联系量化,需要表征 Hessian
谱 [Pap
、GARD
]。
8. Discussion
作者观察到,语言模型对数似然损失会随着非嵌入参数数量
N
N
N、数据集大小
D
D
D 、优化训练计算量
C
m
i
n
C_{min}
Cmin 的变化而呈现一致的缩放关系,如Equation (1.5)
和 Equation (1.6)
所示;同时发现其对模型架构和优化超参数的关联性非常弱。由于
N
N
N、
D
D
D 和
C
m
i
n
C_{min}
Cmin 的缩放关系呈幂律分布,因此随着规模的增加,收益会递减。
当这些参数同时变化时,能够精确地模拟Loss对 N N N 和 D D D 、 N N N 和 S S S 的依赖关系。利用这些关系推导出计算缩放比例、过拟合程度、提前停止步骤以及训练大型语言模型时的数据要求。因此,缩放函数超越了单纯的观察并提供了一个预测框架。可以将这些关系解读为理想气体定律的类似物,该定律以一种普适的方式关联着气体的宏观性质,而不受其微观成分的大部分细节的影响。
自然地,人们会推测这些缩放关系将适用于其他具有最大似然损失的生成建模任务,甚至可能适用于其他场景。在其他领域(例如图像、音频和视频模型)测试这些关系将会很有趣,或许还可以用于随机网络蒸馏。目前,还不知道哪些结果依赖于自然语言数据的结构,哪些结果具有普适性。找到一个可以推导出这些缩放关系的理论框架也同样令人兴奋:以一个观察到的“热力学”为基础的“统计力学”。这样的理论或许能够推导出其他更精确的预测,并提供对缩放定律局限性的系统性理解。
在自然语言领域,研究损失函数的持续改进是否能够转化为相关语言任务的改进至关重要。平稳的量变可能掩盖重大的质变:“多即是多”。例如,经济的平稳增长并不能反映出支撑其增长的具体技术发展。同样,语言模型损失函数的平稳改进也可能掩盖了看似质变的能力。
实验结果表明,更大的模型将继续表现更佳,并且其样本效率也将远超之前的预期。大型模型可能比大数据更重要。在此背景下,有必要进一步研究模型并行性。深模型可以使用流水线 [HCC
] 进行训练,这种方法可以在设备之间按深度分割参数,但随着设备数量的增加,最终需要增加batch_size。另一方面,宽网络更适合并行化 [SCP
],因为大型层可以分割给多个工作器,从而减少串行依赖性。稀疏性 [CGRS
、GRK
] 或分支(例如 [KSH
])可以通过提高模型并行性来加快大型网络的训练速度。而使用 [WRH
、WYL
] 等在训练过程中不断扩展网络的方法,或许能够在整个训练过程中始终保持计算效率的前沿。
Appendices
作者在附录中写了大量研究结果,我这里只列举我认为最重要的,如果你对他们的成果细节感兴趣建议自己去阅读一下;
A. Summary of Power Laws
为了方便参考,作者在下面提供了整篇论文中描述的主要趋势的摘要。
这些趋势的经验拟合值为:
计算高效训练的最佳参数如下: