大模型推理时的尺度扩展定律

news/2025/3/3 18:31:23/
大模型推理时的尺度扩展定律
FesianXu at 20250212 at Wechat Search Team

前言

大模型的尺度扩展定律告诉我们:『LLM的性能会随着模型的参数量、模型的训练量、模型的训练数据量的增加而增加』。训练存在尺度扩展定律,测试也存在尺度扩展定律,实践告诉我们在推理时候增大计算量,往往可以获得模型性能收益。那么在给定了计算预算的前提下,如何安排预算才能达到最好的模型效果呢?本篇文章就在讨论这一点。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注明出处,谢谢

  • 关键字:尺度扩展定律、推理时计算扩展
  • 发表单位:Google DeepMind

∇ \nabla 联系方式:

e-mail: FesianXu@gmail.com

github: https://github.com/FesianXu

知乎专栏: 计算机视觉/计算机图形理论与应用

微信公众号:机器学习杂货铺3号店


在大语言模型(Large Language Model, LLM)中,存在所谓的尺度扩展规律(Scaling Laws) [2],如Fig 1所示,即是:

LLM的性能会随着模型的参数量、模型的训练量、模型的训练数据量的增加而增加

fig1_llm_scaling_laws

Fig 1. 大模型中的尺度扩展规律,测试集损失随着模型训练量、训练集数据量、模型参数量的增加而递减(即是模型性能递增)。

然而,也有一系列工作告诉我们,在保持LLM不变的情况下,在推理时增加计算量,如以下方法,可以有效地提高模型效果

  1. 增加并行搜索计算量 :模型采样多个答案(有多种采样方法,Best-of-N、Beam Search、Lookahead Search等),通过奖励模型从中挑选一个最佳答案。
  2. 增加串行修改计算量 :模型给出一个初始答案,然后基于这个初始答案进行修正,以此类推直到得到一个最佳答案未知。

第一种方法也可以称之为是通过并行搜索(Search)的方法,第二种则是串行修正模型的输出Token概率分布的方法,文章中提到这两种不同方法,适用于不同的问题类型。那么对于一个特定的问题,在给定了有限计算预算的前提下,应该如何分配预训练计算量、推理时计算量呢?这两种计算量是否可以相互兑换呢(Exchange)?这正是本文想要讨论的,如何分配计算预算,特别是聚焦在如何分配推理时的计算预算。

如公式(1)所示,用 θ q , y ∗ ( q ) ∗ ( N ) \theta^{*}_{q, y^{*}(q)}(N) θq,y(q)(N)表示在给定了输入prompt为 q q q,推理计算预算 N N N的情况下的最佳推理策略, T a r g e t ( θ , N , q ) \mathrm{Target}(\theta,N,q) Target(θ,N,q)表示在给定推理策略 θ \theta θ、计算预算和prompt情况下的输出分布。那么公式(1)就是表示,在给定计算预算 N N N的情况下,最大化模型效果(此处 y = y ∗ ( q ) y=y^{*}(q) y=y(q)表示一个精准预测)得到的推理策略。此处的推理策略 θ \theta θ,不妨简单理解为是并行计算和串行计算的比例以及具体的一些超参数,比如beam width等。
θ q , y ∗ ( q ) ∗ ( N ) = arg ⁡ max ⁡ θ ( E y ∼ T a r g e t ( θ , N , q ) [ I y = y ∗ ( q ) ] ) (1) \theta^{*}_{q, y^{*}(q)}(N) = \arg \max_{\theta} (\mathbb{E}_{y \sim \mathrm{Target}(\theta,N,q)} \big [ \mathbb{I}_{y=y^{*}(q)} \big ]) \tag{1} θq,y(q)(N)=argθmax(EyTarget(θ,N,q)[Iy=y(q)])(1)
显然这个公式还是过于抽象,无法将问题细化。作者认为,给模型的问题难度(Difficulty)可以作为公式(1)的有效代理,即是假如问题难度分为离散的5个档次,那么只要求出不同难度档次下的最优推理策略,就是对公式(1)的有效拟合。那么问题就变成了如何定义一个问题的难度(注意到本文讨论的问题都是数学问题,也就是有明确答案的),作者采用的是基于『后验』的方法,也就是用一个基线LLM模型对问题进行2048次采样,计算这些答案的一次通过率(pass@1),越高的一次通过率说明问题越简单,越低的一次通过率则说明问题越难。

整个实验是在数据数据集MATH [3] 基准上进行的,其中包含了不同难度的高中级别数学问题,所有的实验中都采用分割出的12k个数据进行训练,500个数据进行测试。本文采用的Verifier(用于给答案打分,判断答案的好坏程度)是PRM(Process Reward Model),其能够对结构化答案中每一个步骤进行打分,如Fig 2所示,比起ORM(Output Reward Model)只对整个答案粒度进行打分,是一种更为细粒度的建模方式,具体可见 [4]。本文采用的PRM的具体训练方法请参考原论文 [1],本博文不做详细介绍。

fig2_prm_step_by_step_scoring

Fig 2. PRM可以对答案的每一个步骤进行检验,比起只能对最终答案进行检验的ORM,其打分粒度更细。其中每一行是一个解答步骤,用"\n"隔开,绿色背景越深,代表一个更高的PRM打分,红色背景越深则表示一个低的PRM打分。图来自 [4]。

基于并行搜索的方法

我们先来看到基于并行搜索的方法,本文探索了如Fig 3所示的几种搜索方法:

  1. 最佳N选1(Best-of-N):对问题进行多次采样,得到 N N N完整的回答,然后对所有采样得到的答案过一遍PRM判断答案的质量,然后将PRM打分最高的答案保留作为最终答案。考虑到我们的测试数据集是数学问题,可以认为是有明确的数字答案的,因此本文采用的是加权最佳N选1(Best-of-N Weighted)策略。不难看出,最佳N选1的计算预算即是 N N N

  2. 束搜索(Beam Search):一个问题的回答可以分为多个步骤(Step),在给定了固定数量的束数(The number of beams) N N N和束宽(beam width) M M M后,如Fig 3的中图所示:

    • 第一步: t 0 t_0 t0时刻,首先采样 N N N个答案步骤作为初始化。
    • 第二步:对于这 N N N个步骤进行PRM打分,保留其打分排序前 R = N / M R=N/M R=N/M的步骤。
    • 第三步: t 1 t_1 t1时刻,对于这 R R R个步骤,每一个继续采样 M M M个步骤,这样我们 t 1 t_1 t1时刻就有了 N / M × M = N N/M \times M = N N/M×M=N个答案步骤,和初始化时候的数量一样。
    • 第四步: t 2 t_2 t2时刻,重复第二步到第四步。

    不难发现,束搜索的每一步采样我们都固定采用 N N N个答案步骤,因此最终计算预算和最佳N选1是类似的,都是 N N N

  3. 前瞻搜索(Lookahead Search):是束搜索的『升级版』,每一轮采样都采样 K K K步前瞻(在束搜索中 K = 0 K=0 K=0),然后在通过RPM判断保留哪些采样轨迹,不难看出前瞻搜索的计算量通常都比较大,通常记作 N × ( K + 1 ) N \times (K+1) N×(K+1)

fig2_test_time_scaling_via_search

Fig 3. 对比不同的 PRM 搜索方法。左图:最佳N选1。中间图:束搜索。右图:前瞻搜索。

让我们来看到试验结果,束搜索和前瞻搜索都有推理超参数需要选择:

  • 束搜索:其束宽 M M M需要设定,本文采用了两种设定 M = N M = \sqrt{N} M=N 和固定的 M = 4 M = 4 M=4
  • 前瞻搜索:其前瞻 K K K和束宽 M M M需要设定,本文采用了三种设定:
    • K = 1 , M = N K = 1, M = \sqrt{N} K=1,M=N
    • K = 3 , M = N K = 3, M = \sqrt{N} K=3,M=N
    • K = 3 , M = 4 K = 3, M = 4 K=3,M=4

整个试验结果如Fig 4所示,从左图可以发现,在计算预算短缺的情况下,束搜索明显表现最佳,然而当预算增长到 N = 64 N = 64 N=64以后,最优N选1策略和前瞻搜索就开始赶上了束搜索,最终在高计算预算情况下,最优N选1策略效果拔得头筹。从右图来看,在不同的问题难度下,这三种搜索方法有着不同的优势。在简单问题上(问题难度1和2),当预算不足时候效果最好的是束搜索策略,随着预算增加,束搜索出现了性能下降的情况,这个可以认为是过拟合(也即是过度优化),再简单问题且有着充分预算的情况下,能看到最佳N选1策略的效果是最好的。

然而在困难问题上(问题难度3以上),我们发现几乎在所有预算下,都是束搜索策略的表现明显最好,在最难的问题(难度5)上,甚至只有束搜索还能产生有意义的结果。这个结论是很符合直观印象的,对于简单问题,模型一次性产生正确答案的几率比较高,因此通过最优N选1或者多数投票的策略都能获得很不错的效果,但是遇到困难问题的时候,一个复杂问题通常会有着多个复杂的步骤,祈求模型一次性产生正确答案的几率就很低了,束搜索能够以每一步中最正确的步骤作为种子继续搜索,因此解决复杂问题的能力就更强,当然这也需要更多的算力预算了。

fig3_diff_methods_for_searching_against_PRM_verifiers

Fig 4. 左图:比较针对 PRM 验证器进行搜索的不同方法。我们发现,在低生成预算情况下,束搜索(beam search)表现最佳,但随着预算的进一步增加,改进效果逐渐减弱,并且低于最佳 N 选一(best-of-N)基线。前瞻搜索(lookahead-search)在相同生成预算下通常表现不如其他方法。 右图:按难度级别对束搜索和最佳 N 选一进行比较。每个难度组中的四根柱状图分别对应不断增加的测试时计算预算(4、16、64 和 256 次生成)。在难度较低的问题(第 1 和第 2 组)上,随着预算的增加,束搜索出现了过度优化的迹象,而最佳 N 选一则没有这种情况。在中等难度的问题(第 3 和第 4 组)上,束搜索相较于最佳 N 选一展现出了一致的改进效果。

从上面的实验中,我们发现不同难度的问题需要不同的搜索策略,并且对计算预算的需求也不同,那么从以上试验得到的“计算最优测试时计算分配设置”(Compute-optimal test-time compute strategy)对比基线效果究竟有多大的优势呢?从Fig 5中我们发现,几乎在所有预算下,都是计算最优策略的效果显著最佳,并且对比 N = 16 N = 16 N=16 N = 64 N = 64 N=64,我们发现计算最优的配置几乎可以用基线最优N选1策略的25%计算预算达到相同的效果。

fig5_compute_optimal_trends

Fig 5. 将计算最优的测试时计算分配与 PRM 搜索的基线进行对比。通过根据问题难度的概念来调整测试时计算,我们发现使用最多少 4 倍的测试时计算(例如 16 次生成对比 64 次生成)几乎可以超越 PRM 的最佳 N 选一(best-of-N)。“计算最优 oracle”指的是使用从真实正确性信息中得出的 oracle 难度分组,“计算最优预测”指的是使用 PRM 的预测来生成难度分组。请注意,使用这两种难度分组的曲线在很大程度上彼此重叠。

总的来说,我们有以下结论,直接拿走不谢。

我们发现,任何给定验证器搜索方法的有效性在很大程度上取决于计算预算和具体问题。具体而言,束搜索在处理较难问题以及在较低计算预算下更为有效,而最佳 N 选一方法在处理较易问题以及在较高预算下则更为有效。此外,通过针对特定问题难度和测试时计算预算选择最佳搜索设置,我们几乎可以使用少至 4 倍的测试时计算量来超越最佳 N 选一方法。

基于串行修正的方法

以上是基于并行搜索的测试时提升方法,还有一系列的工作是基于串行修正的,做法也非常直观,让LLM去修改自己之前生成的答案,期望能将之前答案的错误部分修正,然后进行多次迭代直到获得最终的正确答案,这个过程如Fig 6左图的"Sequential Revisions"所示。基于现有的LLM,通过简单的prompt去修正自己的错误答案在推理型任务中被认为是低效的,因此需要微调出一个修正模型(Revision model),这个过程在本文就不介绍了,有兴趣的读者请自行翻阅原论文。

fig6_sequential_revision_vs_paralle_search

Fig 6. 并行搜索(例如,最佳 N 选一)与串行修订的对比。左图:并行采样并行独立生成 N 个答案,而顺序修订则根据之前的尝试依次生成每个答案。 右图:无论是顺序采样还是并行采样,我们都可以使用验证器来确定最佳 N 选一的答案(例如,通过应用最佳 N 选一加权)。我们还可以将部分预算分配给并行采样,部分分配给顺序采样,从而有效地结合这两种采样策略。在这种情况下,我们使用验证器首先在每个顺序链中选择最佳答案,然后在不同链之间选择最佳答案。

虽然这个能够修正自己错误的LLM是至多基于前4个答案进行修正训练的,在测试时候却可以生成长度更长的修改链(很简单,只需要保留最近的4次修正答案作为模型的上文就行了,之前的修正答案可以截断掉),如Fig 7左图所示,尝试更多次的修正能够获得更好的pass@1指标。在给定了 N N N的计算预算前提下,我们既可以进行并行采样 N N N次选取最佳答案(并行搜索策略),也可以串行修改 N N N次选取其中的最佳答案,那么哪种策略的效果更好呢?如Fig 7右图所示,作者发现不管是基于PRM模型校验的结果(也就是最佳N选1的结果),亦或是基于多数服从的结果(也就是投票结果),在不同的计算预算下,基本都是串行修正方案下的效果更有优势。

fig7_revison_model_vs_sequential

Fig 7. 左图:我们修订模型在每个修订步骤的首次通过率(pass@1)。在每个修订步骤之后,首次通过率逐渐提高,甚至超过了它训练时的 4 个修订步骤。我们通过在测试集中对每个问题的 4 个长度为 64 的修订轨迹的性能进行平均,来估计每个步骤的首次通过率。 右图:修订模型的顺序采样与并行采样对比。比较从我们的修订模型并行生成 N 个初始答案与使用模型顺序生成 N 个修订答案时的性能。当使用验证器和多数投票来选择答案时,我们发现使用修订模型顺序生成答案的表现略优于并行生成答案。

我们现在有串行修正和并行搜索两大类方法可以使用计算预算 N N N,如Fig 6右图的"Combining Sequential/Parallel"所示, 如何在这两大类方法中分配计算预算呢?从直观上看,串行修正是对答案的局部错误进行修改,而并行搜索则是从答案整体正确性的角度进行搜索,是一种更为全局的方法。作者用 R a t i o = N ( 串行修正 ) / N ( 并行搜索 ) Ratio = \mathrm{N(串行修正)}/\mathrm{N(并行搜索)} Ratio=N(串行修正)/N(并行搜索) 表示这两种方法的预算分配,如Fig 8左图所示,我们发现增加串行修正计算预算的比例能更容易带来性能提升,然而也存在一个理想比例达到性能的峰值,大概是16左右。

我们再看到不同难度问题下,预算分配的规律。如Fig 8右图所示,在简单问题下,提高串行修正计算预算比例总是能带来性能增长,然而在较难问题上,则需要一个合适的比例,意味着需要引入一定量的并行搜索才能得到更好的性能。这个现象也能解释我们之前的结论,简单问题就算LLM不能一次性给出完整的正确答案,但是能给出基本正确的答案,只需要少量的串行修正就能得到完全正确答案。但是较复杂的问题LLM很难一次性就给出基本正确的答案,而是需要多次搜索后才能找到基本正确的答案,因此需要引入串行搜索的计算。

fig8_vary_ratio_of_seq_parallel

Fig 8. 左图:改变分配给串行修订与并行搜索的生成预算比例。每条线代表在比例变化时一个固定的生成预算。我们使用验证器进行答案选择。我们发现,尽管增加串行修正往往比更多的并行搜索表现更佳,但在更高的生成预算下,存在一个理想比例,能够在两个极端之间取得平衡。 右图:对于 N = 128 的生成预算,在不同难度组中改变顺序与并行的比例。使用基于验证器的选择,我们发现较简单的问题在使用纯串行修正时能够达到最佳性能。而对于较难的问题,则存在一个串行与并行计算之间的理想比例。

作者验证了在考虑了串行和并行的最优计算预算分配下,对于单独并行计算的优势,结果是能够以纯并行计算25%的预算达到相同的模型效果,具体结果就不展开了。总结以上的试验,我们有结论如下,拿走不谢。

我们发现,在串行(例如修订)和并行(例如标准的最佳 N 选一)测试时计算之间存在一种权衡,并且串行与并行测试时计算的理想比例在很大程度上取决于计算预算和具体问题。具体而言,较简单的问题从纯串行的测试时计算中受益,而较难的问题通常在串行与并行计算达到某个理想比例时表现最佳。此外,通过针对给定问题难度和测试时计算预算最优地选择最佳设置,我们能够使用少至 4 倍的测试时计算量来超越并行的最佳 N 选一基线。

以上的试验让我们看到了,在测试阶段进行复杂推理策略带来的模型性能提升,我们不可避免有一个疑问:增加测试阶段的计算预算,是否能替代预训练阶段的计算预算呢?也就是是否能通过复杂的测试策略,从而在减少模型预训练的情况下,提升模型性能。作者最后在本文也进行了试验,不过我们就不继续详细讨论了,作者的结论是:

测试时计算与预训练计算并非一对一“可互换”。对于模型能力范围内的简单和中等难度问题,或者在推理(实时性)要求较低的情况下,测试时计算可以轻松弥补额外的预训练。然而,对于超出基础模型能力范围的具有挑战性的问题,或者在推理(实时性)要求较高的情况下,预训练可能更有效于提升性能。

笔者读后感

无论是学术界还是工业界,测试时尺度扩展都是当前的研究热点,这篇论文的信息量很大,作者做了很多有价值的试验,去验证扩展不同测试策略的计算量带来的性能提升,笔者将其理解为LLM测试时的scaling law,同时也探索了预训练阶段和测试阶段的scaling law,并且说明了预训练在困难问题下是具有不可替代性的。不过本文的试验都是在数学类的问题上进行试验的,结论是否可以泛化到其他问题(比如问答类问题、代码型问题等等),是一个值得继续探索的开放研究问题。同时,作者本文的试验没有考虑交织训练和测试,也就是复杂推理策略输出的答案,可以回馈LLM进行进一步的训练从而提升模型效果。这些都是可以进一步探索的工作。

Reference

[1]. Snell, Charlie, Jaehoon Lee, Kelvin Xu, and Aviral Kumar. “Scaling llm test-time compute optimally can be more effective than scaling model parameters.” arXiv preprint arXiv:2408.03314 (2024).

[2]. Kaplan, Jared, Sam McCandlish, Tom Henighan, Tom B. Brown, Benjamin Chess, Rewon Child, Scott Gray, Alec Radford, Jeffrey Wu, and Dario Amodei. “Scaling laws for neural language models.” arXiv preprint arXiv:2001.08361 (2020).

[3]. Hendrycks, Dan, Collin Burns, Saurav Kadavath, Akul Arora, Steven Basart, Eric Tang, Dawn Song, and Jacob Steinhardt. “Measuring mathematical problem solving with the math dataset.” arXiv preprint arXiv:2103.03874 (2021). aka MATH

[4]. Lightman, Hunter, Vineet Kosaraju, Yura Burda, Harri Edwards, Bowen Baker, Teddy Lee, Jan Leike, John Schulman, Ilya Sutskever, and Karl Cobbe. “Let’s verify step by step.” arXiv preprint arXiv:2305.20050 (2023).


http://www.ppmy.cn/news/1576349.html

相关文章

《Effective Objective-C》阅读笔记(下)

目录 内存管理 理解引用计数 引用计数工作原理 自动释放池 保留环 以ARC简化引用计数 使用ARC时必须遵循的方法命名规则 变量的内存管理语义 ARC如何清理实例变量 在dealloc方法中只释放引用并解除监听 编写“异常安全代码”时留意内存管理问题 以弱引用避免保留环 …

本地部署大语言模型-DeepSeek

DeepSeek 是国内顶尖 AI 团队「深度求索」开发的多模态大模型,具备数学推理、代码生成等深度能力,堪称"AI界的六边形战士"。 Hostease AMD 9950X/96G/3.84T NVMe/1G/5IP/RTX4090 GPU服务器提供多种计费模式。 DeepSeek-R1-32B配置 配置项 规…

.gitignore 设置后不见效的解决方法中,方案一就可以了

遇到的问题:你的 .gitignore 文件中包含了 unpackage/ 目录,但它不起作用的原因可能有以下几个: 1. 文件或目录已经被 Git 跟踪 .gitignore 只能忽略 未被 Git 追踪 的文件或目录。如果 unpackage/ 目录已经被提交到 Git 版本库中&#xff…

flutter AnimationController 动画使用总结

1、AnimationController AnimationController 是 Flutter 动画系统中的一个核心类,它负责控制动画的时间进度,并通过与 Tween 结合实现动画效果。AnimationController 通常配合 Animation 来使用,后者代表动画的状态(比如动画的当前值)。 主要功能: 控制动画的开始、停…

Android 布局系列(五):GridLayout 网格布局的使用

引言 在 Android 开发中,布局管理是 UI 设计中的重要环节。随着应用界面的复杂性增加,开发者需要掌握各种布局方式来应对不同的需求。除了常见的 LinearLayout、RelativeLayout和ConstraintLayout,Android还提供了一个非常使用的布局 -- Gri…

jenv 使用指南

jenv 是一个用于管理多个 Java 版本的工具,类似于 pyenv 用于 Python。它可以帮助你在不同的 Java 版本之间轻松切换。 安装 jenv macOS 使用 Homebrew 安装: brew install jenv添加 jenv 到你的 shell 配置文件(如 .bashrc、.zshrc 或 .ba…

各种类型网络安全竞赛有哪些 网络安全大赛的简称

本文是对入门学习的一些概念了解和一些常规场景记录 1.CTF(capture the flag)是夺旗赛的意思。 是网络安全技术人员之间进行攻防的比赛。 起源1996年DEFCON全球黑客大会,替代之前真实攻击的技术比拼。 (DEFCON极客大会诞生1993,…

基于单片机的智能宿舍管理系统(论文+源码)

2.1总体方案设计 本课题为智能宿舍的设计,整个系统架构如图2.1所示,整个系统在器件上包括了主控制器STM32单片机,LD3320语音识别模块,按键模块,串口通信模块,照明模块,窗帘控制模块家电控制模块…