原文链接:
https://cameronrwolfe.substack.com/p/llm-scaling-laws
近些年来,AI 领域的大部分研究进展(尤其是 LLM)都是基于 scaling。也就是说,只要使用更多数据训练更大模型,就能得到更好的结果。这种关系可以被更严格地定义成 Scaling Law,这是一个可以描述 LLM 的测试损失随某个量(如训练计算量)的增长而降低的公式。Scaling Law 可帮助我们预测当投入更多资源进行更大规模训练时的效果,这能给我们提供继续投资 scaling 的必要信心。
「如果你有一个庞大的数据集并且训练了一个非常大的神经网络,那么成功是肯定的!」——Ilya Sutskever
过去多年时间里,Scaling Law 一直指引着 AI 研究前进的方向。事实上,像 OpenAI 这样的早期前沿实验室的成功甚至可以归功于他们对 Scaling Law 的
虔诚信仰
。然而,最近有报道称,顶级研究实验室正在努力训练下一代更好的 LLM。这些说法可能会让我们怀疑:scaling 之路会撞墙吗?如果会,还有其他前进的道路吗?
本文将从头开始回答这些问题,首先是深入解释 LLM Scaling Law 和相关研究。Scaling Law 的概念很简单,但公众对 Scaling Law 存在各种误解 —— 这项研究背后的科学实际上非常具体明确。利用对 Scaling Law 的详细理解,我们将讨论 LLM 研究的最新趋势以及导致 Scaling Law「停滞」的因素。最后,我们将利用这些信息更清楚地说明 AI 研究的未来,重点关注一些可能继续推动进步的关键思想 —— 其中也包括 scaling。
LLM 的基础 scaling 概念
为了理解 LLM 的 scaling 现状,我们首先需要对 Scaling Law 有一个总体的了解。我们将从头开始建立这种理解,首先是理解幂律的概念。然后,我们将探讨幂律在 LLM 中的应用研究,最终得出我们今天使用的 Scaling Law。
什么是幂律?
幂律
是 LLM scaling 的基本概念。简而言之,幂律描述了两个量之间的关系。对于 LLM 来说,第一个量是 LLM 的测试损失(或其他一些相关的性能指标,例如下游任务准确率 [7]),另一个量是我们想要 scaling 的一些设置,例如模型参数量。例如,在研究 LLM 的 scaling 属性时,我们可能会看到类似以下的陈述。
「有了足够的训练数据,验证损失的 scaling 与模型大小的函数关系应该大致上是平滑幂律。」 - 摘自 [4]
这样的陈述告诉我们,模型的测试损失和模型参数量之间存在可测量的关系。其中一个量的变化将导致另一个量发生相对的、无关尺度的变化。换句话说,我们可基于这种关系了解到:增加模型参数量(假设已满足其他条件,比如训练数据充足)将导致测试损失降低某个可预测的程度。
幂律公式。基本的幂律可表示为以下公式:
这里研究的两个量是 x 和 y,而 a 和 p 是描述这些量之间关系的常数。如果我们绘出这个幂律函数,我们会得到如下所示的图。这里提供普通和对数度量的图,因为大多数研究 LLM scaling 的论文都使用对数度量。
x 和 y 之间的基本幂律图
但很多时候,展示 LLM scaling 的图看起来并不像上面的图,而通常是上下颠倒的;请参阅下面的示例。
这只是逆幂律,可用如下公式表示:
逆幂律与标准幂律的公式几乎相同,但我们通常会对 p 使用负指数。使幂律的指数为负数会使图颠倒过来;请参阅下面的示例。
x 和 y 之间的逆幂律图
当使用对数度量绘制此逆幂律时,会产生大多数 LLM Scaling Law 特有的标志性线性关系。本文中涵盖的几乎每篇论文都会通过这样的图来研究 Scaling Law 的各种不同的因素(例如规模、计算、数据等)对 LLM 的性能的影响。现在,让我们更实际地来看看幂律,也就是看看最早的一些在 LLM scaling 语境中研究幂律的论文。
神经语言模型的 Scaling Law
在语言模型的早期,我们还不了解规模对性能的影响。语言模型是一个很有前途的研究领域,但当时的模型(例如原始 GPT)功能有限。我们尚未发现更大模型的力量,而创建更好的语言模型的途径还不明确。模型的形状(即层的数量和大小)重要吗?使模型更大是否有助于其表现更好?训练这些更大的模型需要多少数据?
「损失随模型大小、数据集大小和用于训练的计算量呈幂律变化,有些趋势跨越了七个数量级以上。」 - 摘自 [1]
在 [1] 中,作者的目标是通过分析多个因素(例如模型大小、模型形状、数据集大小、训练计算和批大小)对模型性能的影响来回答这些问题。通过此分析,我们了解到 LLM 性能会随着以下因素的增加而平稳提升:
更具体地说,当性能不受其他两个因素的瓶颈限制时,可以观察到这些因素中的每一个与 LLM 的测试损失之间存在幂律关系。
实验设置。
为了拟合幂律,作者在 WebText2 语料库的子集上预训练了最大 1.5B 参数的 LLM。这些子集的 token 数量从 22M 到 23B 不等。所有模型都使用固定的 1024 个 token 的上下文长度和标准的下一个 token 预测(交叉熵)损失进行训练。在留存测试集上测量相同的损失并将其用作主要性能指标。此设置与大多数 LLM 的标准预训练设置相匹配。
(来自 [1])
LLM scaling 的幂律。在 [1] 中训练的 LLM 的性能(就其在 WebText2 上的测试损失而言)会随着参数、数据和计算量的增加而稳步提高。这些趋势在计算量方面跨越了八个数量级,在模型大小方面跨越了六个数量级,在数据集大小方面跨越了两个数量级。上图提供了确切的幂律关系和拟合每个幂律关系的方程。这里的每个方程都与我们之前看到的逆幂律方程非常相似。但是,我们设置 a = 1 并在括号内添加一个额外的乘法常数。
[1] 的作者注意到一个小细节,并且这个细节对于正确拟合这些幂律是必要的。在计算模型参数的总数时,不包括
位置或 token 嵌入
,从而可以得到更清晰的 scaling 趋势;如下图所示。
(来自 [1])
不过,只有当训练不受其他因素阻碍时,这些幂律才适用。因此,为了获得最佳性能,应该同时增大这三个分量(模型大小、数据和计算量)。如果我们单独增大其中任何一个分量,我们就会达到某个收益递减点。
幂律意味着什么?虽然 [1] 中提供的幂律图看起来很有希望,但我们应该注意到这些图是基于对数度量的。如果使用普通度量绘制,我们会得到下面的图 —— 可以看到幂律的形状类似于指数衰减。
考虑到网上关于 scaling 和 AGI 的大量言论,这样的发现似乎违反直觉。在许多情况下,我们被灌输的直觉似乎是:随着计算量的对数增加,LLM 的质量呈指数级提高,但事实并非如此。实际上,随着规模增大,提升 LLM 的质量会变得越来越困难。
其他有用的发现。除了 [1] 中观察到的幂律之外,我们还看到,研究中涉及的其他因素(例如模型形状或架构设置)对模型性能的影响微乎其微;见上文。规模是打造更好 LLM 的最大因素 —— 更多的数据、计算量和模型参数可以平稳地提高 LLM 的性能。
「较大的模型具有更高的样本效率,因此最佳的计算效率训练涉及在相对适量的数据上训练非常大的模型,并在收敛之前停止。」 - 来自 [1]
有趣的是,[1] 中的实证分析表明,较大的 LLM 往往具有更高的样本效率,这意味着它们在数据较少的情况下可达到与较小模型相同的测试损失水平。因此,对 LLM 进行预训练以使其收敛(可以说)不是最优的。相反,我们可以在较少的数据上训练更大的模型,在收敛之前停止训练过程。这种方法在训练计算使用量方面是最优的,但它没有考虑到推理成本。实际上,我们通常会在更多数据上训练较小的模型,因为较小的模型托管成本较低。
作者还广泛分析了模型大小与用于预训练的数据量之间的关系,发现数据集的大小不需要像模型大小那样快速增加。模型大小增加约 8 倍需要训练数据量增加约 5 倍才能避免过拟合。
(来自 [1])
[1] 中发现的 Scaling Law 也在其他几个数据集上得到复现,我们发现在向测试损失添加固定偏移量后,相同的 Scaling Law 仍然成立(即考虑到数据集不同);见上文。这些结果为 LLM scaling 提供了令人信服的案例。我们通过更长时间、在更多数据上训练较大的模型获得了非常明显和可衡量的收益,这激发了人们对更大规模预训练 LLM 的兴趣。
「这些结果表明,随着我们适当扩大模型大小、数据和计算,语言建模性能会平稳且可预测地提高。我们预计,更大的语言模型将比当前模型表现更好,样本效率更高。」 - 来自 [1]
Scaling Law 的实际用途
大规模预训练非常好,但这一事实却带来了一些困境。续为了得到最好的模型,需要大量数据进行大规模模型训练。然而,这些
训练成本很高
,这意味着它们也会带来很大的风险。如果我们花费了 1000 万美元,结果训练了一个不符合我们期望的模型,这可如何是好?考虑到预训练的费用,我们无法执行任何特定于模型的调整,我们必须确保我们训练的模型表现良好。我们需要制定一个策略来调整这些模型并预测它们的性能,同时无需花费太多钱。
(来自 [11])
这就是 Scaling Law 的用武之地。到目前为止,我们已经看到了一些实证分析,这些分析是为了证明 Scaling Law 的存在而进行的,但这些 Scaling Law 在 AI 研究中也有非常实际的用例。特别是,我们可以:
使用 Scaling Law 推断更大模型的性能。
当然,这种方法有局限性。从较小的模型预测较大模型的性能很困难,而且可能不准确。模型可能因规模不同而表现不同。然而,研究社区已经提出了多种方法来使这更可行,Scaling Law 现在通常用于此目的。使用 Scaling Law 预测较大模型的性能的能力让我们作为研究人员更有信心(和安心)。此外,Scaling Law 提供了一种简单的方法来证明对 AI 研究的投资是合理的。
scaling 和预训练时代
「这就是我们今天看到的所有进步的驱动力 —— 在庞大的数据集上训练的超大型神经网络。」 - Ilya Sutskever
Scaling Law 的发现成为了 LLM 研究的大部分最新进展的催化剂。为了获得更好的结果,我们只是在更大(更好!)的数据集上训练越来越大的模型。基于这一策略,OpenAI 打造了 GPT 系列模型,此外 OpenAI 之外也有很多模型。在这里,我们将更深入地解读这一 scaling 研究的进展 —— 最近被 Ilya Sutskever 描述为「预训练时代」。
GPT 系列模型:GPT、GPT-2、GPT-3 和 GPT-4
LLM Scaling Law 最广为人知和最明显的应用是 OpenAI 打造的 GPT 系列模型。我们将主要关注该系列中早期的开放模型 —— 直到 GPT-3—— 因为:
除了 scaling 预训练过程外,后期的模型还极大受益于后训练研究。
我们还将介绍一些已知的 scaling 结果,如 GPT-4。
(来自 [2])
最早的 GPT 模型
[2] 实际上非常小 — 总共 12 层和 117M 个参数。该模型首先在 BooksCorpus 上进行预训练,BooksCorpus 是一个包含约 7000 本书原始文本的数据集。然后,使用监督训练目标并为每个任务创建单独的分类头来微调模型以解决各种不同的下游任务;见上文。这篇论文是第一批
对仅解码器 Transformer 进行大规模自监督预训练
的论文之一,其中得到了一些有趣的发现:
以这种方式进行预训练后,可以对单个模型进行微调,使其能以最领先的准确度解决各种不同的任务。
总体而言,GPT 并不是一个特别值得关注的模型,但它奠定了一些重要的基础(即仅解码器 Transformer 和自监督预训练)。
(来自 [3])
GPT-2
[3] 诞生在 GPT 之后不久,是多个模型的集合,其中最大的有 1.5B 参数;如上所示。这些模型与 GPT 模型具有相同的架构,并使用相同的自监督语言建模目标进行预训练。然而,与 GPT 相比,GPT-2 对预训练过程进行了两大改变:
预训练数据集改成了 WebText,它比 BooksCorpus 大得多,并且是通过从互联网上抓取数据创建的。
这些模型没有针对下游任务进行微调。相反,是通过使用预训练模型执行零样本推理来解决任务。
GPT-2 模型在大多数基准测试上都达不到最先进的性能,但它们的性能会随着模型的大小而不断提高 —— 扩大模型参数的数量会带来明显的好处;如下所示。
(来自 [3])
[3] 的作者还透露,尽管 GPT-2 模型取得了很亮眼的结果,但似乎仍然没有拟合 WebText 语料库。基于这一发现可以推断,继续 scaling LLM 预训练(无论是模型还是数据大小)应该是有益的。尽管 GPT-2 模型并不是特别强大,但这些模型所呈现的分析为「继续 scaling 并最终达到 AI 研究的转折点」提供了所需的信心。
「具有足够体量的语言模型将开始学习推断和执行自然语言序列中演示的任务,以便更好地预测它们,无论它们的方法如何。」 - 来自 [3]
GPT-3
[4] 是 AI 研究的一个分水岭,它明确证实了大规模预训练对 LLM 的好处。该模型有超过 1750 亿个参数,比最大的 GPT-2 模型大 100 多倍;如下所示。
(来自 [4])
同样,GPT-3 使用的仅解码器模型架构与之前的模型非常相似,但预训练却是基于 CommonCrawl 的更大数据集。这个数据集比之前的 WebText 数据集大约大 10 倍,[4] 中的作者将更大的预训练数据集与其他几个预训练数据源相结合,创建了不同语料库的混合;如下所示。
(来自 [4])
[4] 中的 GPT-3 主要通过使用
少样本学习
方法进行评估。少样本提示(GPT-3 使用)、零样本提示(GPT-2 使用)和微调(GPT 使用)之间的差异如下所示。
(来自 [4])
少样本学习是一种新范式:LLM 学习如何根据放置在其上下文窗口内的示例执行任务。[4] 中的作者将此概念称为「上下文学习(in-context learning)」。在这种情况下,LLM 实际上并没有「学习」—— 模型的权重根本没有更新。相反,模型输入中的示例被用作上下文,以生成更准确的输出。在 [4] 中可以看到,GPT-3 是一个能力很强的少样本学习器,似乎表明上下文学习是较大模型的一种涌现能力;如下所示。
(来自 [4])
当在各种语言理解任务上评估 GPT-3 时,研究者发现使用较大的模型时,可显著提高少样本学习的性能,如下图所示。与较小的模型相比,较大的模型可以更好、更有效地利用其上下文窗口中的信息。GPT-3 能够通过少样本学习在多个任务上超越 SOTA,并且模型的性能随着规模的扩大还能平稳提升。
(来自 [4])
单个模型能够在如此多的任务中表现如此出色,这一事实在当时震撼了很多人。解决这些任务时,不需要对底层模型进行任何微调或更改 —— 只需要调整模型的提示词。GPT-3 是最早发布的真正基础模型之一。该模型开创了 AI 研究的下一个时代,并引入了一种与 LLM 交互(即提示词)的全新直观范式。
超越 GPT-3
。GPT-3 的出色表现引发了人们对 LLM 研究的极大兴趣。这些兴趣主要集中在大规模预训练上。OpenAI 发布的接下来几个模型 ——InstructGPT [8]、ChatGPT 和 GPT-4 [5]—— 结合了大规模预训练和新的后训练技术(即监督微调和 RLHF),大大提高了 LLM 质量。这些模型非常吸引眼球,甚至引爆了公众对 AI 研究的兴趣。
「GPT-4 是一个基于 Transformer 的模型,经过预训练可以预测文档中的下一个 Token 。训练后的对齐过程可提高事实性和遵守期望行为的衡量标准。」 - 来自 [5]
自那以后,OpenAI 开始更少发布研究细节。相反,新模型只是通过他们的 API 发布,这使得公众无法了解这些模型是如何创建的。幸运的是,可以从 OpenAI 发布的材料中收集到一些有用的信息。例如,ChatGPT 的前身 InstructGPT [8] 有一篇相关论文,详细记录了该模型的后训练策略;如下所示。鉴于该论文还指出 GPT-3 是 InstructGPT 的基础模型,我们可以合理地推断,该模型的性能提升与 scaling 预训练过程基本无关。
(来自 [8])
与 ChatGPT 相比,GPT-4 的功能有了明显的提升。然而,研究者只是选择性地分享 GPT-4 的极少技术细节。GPT-4 的技术报告 [5] 只是告诉我们:
尽管如此,scaling 的重要性在这份技术报告中也非常明显。作者指出,这项工作的一个关键挑战是开发一种可 scaling 的训练架构,该架构在不同规模上的行为可预测,从而可以基于较小规模的运行结果进行外推,以提供对更大规模(且成本更高!)训练实践的信心。
「经过适当训练的大型语言模型的最终损失…… 可通过用于训练模型的计算量的幂律近似。」 - 来自 [5]
大规模预训练成本非常高,因此研究者通常只有一次机会来做对 —— 根本没有针对具体模型调整的空间。Scaling Law 在此过程中起着关键作用。研究者可以使用少成千上万倍的计算量来训练模型,并使用这些结果来拟合幂律。然后,这些幂律可用于预测更大模型的性能。特别是,研究者在 [8] 中看到,可使用衡量计算和测试损失之间关系的幂律来预测 GPT-4 的性能;如下所示。
用于训练 GPT-4 的 Scaling Law 公式(来自 [5])
此表达式看起来与我们之前看到的几乎相同,但它增加了一个不可约损失项,以解释 LLM 的测试损失可能永远不会达到零的事实。一旦拟合,Scaling Law 就可用来以非常高的准确度预测 GPT-4 的最终性能;请参见下面的描述。在这里,我们应该注意,该图没有使用对数尺度,可以看到损失的改善随着计算量的增加而明显开始衰减!
(来自 [5])
[5] 中的作者还指出,测试损失不是一个容易解释的指标,他们也尝试了预测各种其他性能指标。例如,Scaling Law 适合预测 LLM 在 HumanEval 编码基准上的通过率。首先,根据 HumanEval 中的问题的难度将其分成几类。然后,Scaling Law 适合预测 LLM 的通过率。研究者在 [5] 中看到,基于所需计算量少 1000 倍的实验,使用这种方法可以在 HumanEval 上准确预测 GPT-4 的通过率;如下所示。
(来自 [5])
如我们所见,scaling 预训练过程很有价值。然而,大规模预训练也成本非常高。Scaling Law 使这个过程更可预测,使研究者能够避免不必要或过多的计算成本。
Chinchilla:训练计算最优的大型语言模型
(来自 [9])
在 [1] 中,作者认为在 scaling LLM 预训练时,模型大小的增加速度要快于数据集的大小。然而,GPT-3 之后的大多数预训练研究表明研究者应该做相反的事情。研究者训练的模型明显大于 GPT-3—— 例如 530B 参数 MT-NLG [9] 模型 —— 但用于训练这些模型的数据集的大小与 GPT-3 相似;如上所示。这些模型并没有在 GPT-3 之上实现性能提升,而使用更多参数和更多数据组合的模型(例如 Gopher [10])表现要好得多;如下所示。
(来自 [10])
计算最优的 Scaling Law
。受这些观察的启发,[6] 的作者完全重新考虑了 [1] 中最初提出的 Scaling Law 的最佳实践。[6] 中的 Scaling Law 分析是使用更大的模型进行的,得出的结果与以前略有不同。更具体地说,使用大小从 70M 到 17B 参数的 LLM,在大小超过一万亿个 token 的数据集上进行训练;如下所示。
(来自 [10])
通过使用许多不同的模型和数据大小组合训练 LLM,我们可以发现一个幂律,该幂律可以根据这些因素预测 LLM 的测试损失。
根据这些幂律,研究者可以确定哪种训练设置最适合给定的计算预算。[6] 的作者认为,计算最优的训练应该按比例 scaling 模型和数据大小。这一发现表明,大多数 LLM 都训练不足,无法拟合其规模 —— 使用大量数据训练现有的 LLM 将对研究者大有裨益。例如,[6] 中拟合的 Scaling Law Gopher 应该使用再大 20 倍的数据集进行训练!
「预计所需的训练数据量远远超出了目前用于训练大型模型的数据量。」 - 来自 [6]
Chinchilla
。[6] 中提供的分析强调了数据规模的重要性。大型模型需要使用更多数据进行训练才能达到最佳性能。为了验证这一发现,作者训练了一个 700 亿参数的 LLM,称为 Chinchilla。与之前的模型相比,Chinchilla 较小,但拥有更大的预训练数据集 —— 总共 1.4T 个训练 token。Chinchilla 使用与 Gopher [10] 相同的数据和评估策略。尽管比 Gopher 小 4 倍,但 Chinchilla 的表现始终优于更大的模型;如下所示。
(来自 [6])
Chinchilla [6] 提出的 Scaling Law 在此后多年成为 AI 研究的标准。「
Chinchilla-optimal
」现在是一个常用术语。即使在今天,在发表了各种各样的其他 scaling 研究之后,Chinchilla 及其相关的 Scaling Law 仍不断被提及。
Scaling Law 之「死」
Scaling Law 最近成为 AI 研究中的一个热门(且有争议)话题。正如我们在前文中所看到的,在整个预训练时代,scaling 推动了 AI 的大部分进步。然而,随着 2024 年下半年模型发布和改进的速度放缓,我们开始看到对模型 scaling 的广泛质疑,这似乎表明 AI 研究(尤其是 Scaling Law)可能会遇到瓶颈。
路透社称,OpenAI 正在改变其产品战略,因为其在 scaling 当前方法方面遇到了瓶颈。
The Information 称,GPT 模型的改进速度开始放缓。
彭博社强调了几个前沿实验室在尝试构建更强大的 AI 时面临的困难。
TechCrunch 称,scaling 开始产生收益递减。
《时代》杂志发表了一篇细致入微的文章,强调了导致 AI 研究放缓的各种因素。
Ilya Sutskever 在 NeurIPS’24 的获奖演讲中表示,「我们所知的预训练将会终结」。
与此同时,许多专家则持相反观点。例如,Dario Amodei(Anthropic CEO)表示,scaling「可能……会继续」,而 Sam Altman 则坚持「没有墙」。本文将通过提供 scaling 的当前状态和可能存在的各种问题的合理解释,为这一讨论增添更多色彩。
scaling 变慢:这是什么意思?为什么会发生这种情况?
「这两种说法都可能是真的:scaling 在技术层面上仍然有效。针对用户的进步速度正在放缓。」 - Nathan Lambert