Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters


TL;DR

本文提出了一种“计算最优”扩展策略,即根据问题的难度自适应地分配测试时(test-time)的计算资源,并证明在特定场景下,这种策略比单纯扩展模型参数能更有效地提升大型语言模型(LLM)的性能。

关键定义

本文沿用了领域内的一些关键定义,并提出了一个核心策略概念:

相关工作

当前,利用测试时计算来提升LLM性能的研究结果好坏参半。一方面,自我修正、思维链(Chain-of-Thought)和各类搜索方法在一些任务上取得了成功。但另一方面,在如数学推理等复杂任务上,这些方法的有效性仍然非常有限,性能提升不明显。

领域内缺少一个系统的分析来回答:如何最有效地利用固定的测试时计算预算来提升模型在挑战性问题上的表现?现有方法(如 best-of-N、树搜索)通常是“一刀切”地应用,而没有考虑到不同问题可能需要不同的计算策略。

本文旨在解决的核心问题是:给定一个固定的测试时计算预算,如何为每个具体问题自适应地、最优地分配这些计算资源,以最大化性能提升。

本文方法

本文提出了一个统一框架和一种“计算最优”的元策略,来有效扩展测试时计算。其核心思想是,测试时计算的效率取决于问题难度,因此应根据难度自适应地选择策略。

统一视角:提议者与验证者

本文将测试时计算方法分解为两个独立但可组合的维度:

  1. 优化提议分布 (Refining the Proposal Distribution): 改变生成答案的方式。本文的核心方法是迭代修正 (revisions),即微调模型使其能够根据自己先前生成的错误答案进行迭代改进,从而在测试时通过序列化的修正来优化答案。
  2. 优化验证者 (Optimizing the Verifier): 改进答案的评估和筛选方式。本文的核心方法是使用过程奖励模型 (PRM),并在此基础上执行不同的搜索算法 (search methods),如 \(best-of-N\)、\(beam search\) 和 \(lookahead search\)。

核心思想:基于难度的计算最优策略

本文发现,不同的计算策略在不同难度的问题上表现各异。例如,对于简单问题,模型初始答案可能方向正确但有小错,此时进行“迭代修正”更有效;对于困难问题,模型可能需要探索完全不同的解题思路,此时进行大规模的“并行采样和搜索”可能更佳。

基于此洞察,本文提出计算最优扩展策略

  1. 评估难度:对于一个新问题,首先评估其对当前模型而言的“难度”。这通过一个轻量的评估过程(如用验证者对少量样本打分)来近似实现。
  2. 分配策略:根据评估出的难度等级,从预先在验证集上为每个难度等级选出的“最优”计算策略(如特定的搜索方法,或特定的并行/序列采样比例)中,选择对应的一种来解决当前问题。

在验证者维度上的应用:搜索

本文通过训练一个无需人工标注的PRM,对比了三种基于PRM的搜索方法:

不同PRM搜索方法对比

图注:左:Best-of-N;中:Beam search;右:Lookahead search。

发现

计算最优搜索策略与基线的对比

图注:计算最优策略(橙色/蓝色曲线)在低计算预算下,仅用16个生成样本就能接近或超过Best-of-N基线在64个样本时的性能。

在提议者维度上的应用:修正

本文微调模型,使其具备迭代修正答案的能力。实验对比了两种资源分配方式:

并行采样 vs. 序列修正

图注:并行采样与序列修正的流程图,以及两者结合的策略。

发现

不同并行/序列比例对不同难度问题的影响

图注:右图显示,对于简单问题(bin 1, 2),完全采用序列修正(横轴最左端)性能最好;而对于难题(bin 3, 4, 5),则需要在并行和序列间找到一个平衡点。

创新点

本文的核心创新不在于提出一个全新的算法,而在于提出了一个元策略 (meta-strategy)根据问题难度自适应地分配测试时计算资源。它首次系统性地分析并证明了,没有任何一种单一的测试时计算方法是普适最优的,最优策略是动态变化的。通过将此问题框架化为一个优化问题,并提供了一个基于“问题难度”的实用解法,本文显著提升了测试时计算的效率。

实验结论

主要结果总结

实验在MATH数学推理基准上进行,使用了PaLM 2-S*模型。