o3并非独门秘技,谷歌已发背后关键机制,方法更简单、成本更低
声明:本文来自微信公众号“量子位”,作者:小交,授权站长之家转载发布。
o1/o3带火的推理计算Scaling,原来谷歌早在今年8月就曾探讨过。
当时,来自斯坦福、牛津以及谷歌DeepMind的团队提出通过重复采样来扩展推理计算量——
结果在编码任务中将性能最多提高40%。
他们发现小模型通过生成多种答案/样本,其任务表现可能比一些大型模型单次尝试还要好。
比如,DeepSeek-Coder通过重复采集5个样本,性能优于GPT-4o,而成本却仅为后者的三分之一。
这篇论文讲了什么?
这篇论文取名Monkey,灵感来自于无限猴子定理。
一只猴子在打字机键盘上随机敲击键盘无限长的时间,几乎肯定会打出任何给定的文本。
而在大模型的语境下,只要采的样够多,那么大模型总能找到正确解。
本文遵循的重复采样程序,首先通过大模型中采样,为给定的问题生成许多候选解。
其次再选择特定领域的验证器Verifier(比如代码的unittests),从生成的样本中选择最终答案。
重复采样的有效性取决于两个关键特性。
覆盖率,随着样本数量的增加,我们可以利用生成的任何样本解决多少问题。
精确度,在从生成的样本集合中选择最终答案的情况下,我们能否识别出正确的样本?
他们关注的是yes or no的任务,在这些任务中,答案可以直接被打分为对或者错,主要指标是成功率——即能够解决问题的比例。
通过重复采样,考虑这样一种设置,即模型在尝试解决问题时可以生成许多候选解。
因此,成功率既受到为许多问题生成正确样本的能力(即覆盖率)的影响,也受到识别这些正确样本的能力(即精确度)的影响。
基于此,确定了五种数学和编程任务:GSM8K、MATH、MiniF2F-MATH、CodeContests、SWE-benchLite。
结果显示,在多个任务和模型中,覆盖率随样本数量增加而提升,在某些情况下,重复采样可使较弱模型超越单样本性能更好的强模型,且成本效益更高
比如在使用Gemma-2B解决CodeContests编程问题时。随着样本数量的增加,覆盖率提高了300倍以上,从一次尝试的0.02%提高到10000次尝试的7.1%。解决来自GSM8K和MATH的数学单词问题时,Llama-3模型的覆盖率在10,000个样本的情况下增长到95%以上。
有趣的是,log(覆盖率)与样本数之间的关系往往遵循近似的幂律。
在Llama-3和Gemma模型中,可以观察到覆盖率与样本数呈近似对数线性增长,超过几个数量级。
在不同参数量、不同模型以及后训练水平(基础模型和微调模型)下,都显示通过重复采样Scaling推理时间计算,覆盖率都有一致的提升。
此外,他们还证明了这种Scaling还能降本增效,以FLOPs作为成本指标,以LIama-3为例。
计算公式如下:
比较 Llama-3-8B-Instruct 和 Llama3-70B-Instruct 的成本(以推理 FLOPs 数量衡量)和覆盖率。当FLOPs预算固定时,在 MiniF2F、GSM8K和 MATH 上,Llama-3-8B-Instruct的覆盖率总是高于更大(更贵)的70B 模型。然而,在 CodeContests 中,70B 模型几乎总是更具成本效益。
对比API成本,当采样较多时,开源 DeepSeek-Coder-V2-Instruct 模型可以达到与闭源模型GPT-4o相同的问题解决率,而价格仅为后者的三分之一。
有趣的是,他们发现对于大多数任务和模型,覆盖率与样本数之间的关系可以用指数幂律来模拟。
因此总结,这篇文章以重复采样为轴心,在推理时扩展计算量,从而提高模型性能。
在一系列模型和任务中,重复采样可以显著提高使用任何生成样本解决问题的比例(即覆盖率)。当可以识别出正确的解决方案时(通过自动验证工具或其他验证算法),重复采样可以在推理过程中放大模型的能力。
与使用较强、较昂贵的模型进行较少的尝试相比,这种放大作用可使较弱的模型与大量样本的组合更具性能和成本效益。
来自斯坦福牛津谷歌
这篇论文是来自斯坦福、牛津大学以及谷歌DeepMind团队。TogetherAI提供计算支持。
其中可以看到有谷歌杰出科学家Quoc V. Le。
有网友表示,这有点像更简单的静态版o3。
o3在评价器的指导下,通过回溯动态搜索程序空间,而这种方法则依赖于静态采样和事后评价(投票、奖励模型等)。两者都能扩展推理计算,但O3的适应性更强。
o3会反复探索解决方案,不断完善路径,而重复采样会并行生成输出,没有反馈回路。如何取舍?o3的计算密集度更高,但在需要结构化推理的任务中表现出色。这种方法在编码/数学方面更具成本效益。
不过也有网友指出了背后的局限性。
我们不能一味地增加采样数量来提高性能。在某些时候,模型会出现停滞,生成的样本也会开始重复。
无论成本如何,都有一个极限,一个模型无法超越的最大思维水平。