如果给小模型更长的思考时间,它们性能可以超越更大规模的模型。
最近一段时间,业内对小模型的研究热情空前地高涨,通过一些「实用技巧」让它们在性能上超越更大规模的模型。
可以说,将目光放到提升较小模型的性能上来有其必然性。对于大语言模型而言,训练时计算(train-time compute)的扩展主导了它们的发展。尽管这种模式已被证明非常有效,但越来越大模型的预训练所需的资源却变得异常昂贵,数十亿美元的集群已经出现。
因此,这一趋势引发了人们对另外一种互补方法的极大兴趣,即测试时计算扩展(test-time compute scaling)。测试时方法不依赖于越来越大的预训练预算,而是使用动态推理策略,让模型在更难的问题上「思考更长时间」。一个突出的例子是 OpenAI 的 o1 模型,随着测试时计算量的增加,它在困难数学问题上表现出持续的进步。
虽然我们不清楚 o1 是如何训练的,但 DeepMind 最近的研究表明,可以通过迭代自我改进或使用奖励模型在解决方案空间上进行搜索等策略来实现测试时计算的最佳扩展。通过自适应地按 prompt 分配测试时计算,较小的模型可以与较大、资源密集型模型相媲美,有时甚至超越它们。当内存受限且可用硬件不足以运行较大模型时,扩展时间时计算尤其有利。然而这种有前途的方法是用闭源模型演示的,没有发布任何实现细节或代码。
DeepMind 论文:https://arxiv.org/pdf/2408.03314
在过去几个月里,HuggingFace 一直在深入研究,试图对这些结果进行逆向工程并复现。他们在这篇博文将介绍:
那么,计算最优扩展在实践中效果如何呢?在下图中,如果你给它们足够的「思考时间」,规模很小的 1B 和 3B Llama Instruct 模型在具有挑战性的 MATH-500 基准上,超越了比它们大得多的 8B、70B 模型。
HuggingFace 联合创始人兼 CEO Clem Delangue 表示,在 OpenAI o1 公开亮相仅 10 天后,我们很高兴地揭晓了其成功背后的突破性技术的开源版本:扩展测试时计算。通过给模型更长的「思考时间」,1B 模型可以击败 8B、3B 模型可以击败 70B。当然,完整的技术配方是开源的。
各路网友看到这些结果也不淡定了,直呼不可思议,并认为这是小模型的胜利。
接下来,HuggingFace 深入探讨了产生上述结果背后的原因,并帮助读者了解实现测试时计算扩展的实用策略。
扩展测试时计算主要有以下两种主要策略:
HuggingFace 专注于基于搜索的方法,它们是测试时计算优化的实用且可扩展的解决方案。下面是三种策略:
实验设置包括以下步骤:
为了比较各种搜索策略,本文使用了以下开源模型和数据集:
本文将从一个简单的基线开始,然后逐步结合其他技术来提高性能。
多数投票是聚合 LLM 输出的最直接方法。对于给定的数学问题,会生成 N 个候选解,然后选择出现频率最高的答案。在所有的实验中,本文采样了多达 N=256 个候选解,温度参数 T=0.8,并为每个问题生成了最多 2048 个 token。
以下是多数投票应用于 Llama 3.2 1B Instruct 时的表现:
结果表明,多数投票比贪婪解码基线有显著的改进,但其收益在大约 N=64 generation 后开始趋于平稳。这种限制的出现是因为多数投票难以解决需要细致推理的问题。
基于多数投票的局限性,让我们看看如何结合奖励模型来提高性能。
Best-of-N 是多数投票算法的简单且有效的扩展,它使用奖励模型来确定最合理的答案。该方法有两种主要变体:
普通的 Best-of-N:生成 N 个独立响应,选择 RM 奖励最高的一个作为最终回答。这确保了选择置信度最高的响应,但它并没有考虑到回答之间的一致性。
加权 Best-of-N:汇总所有相同响应的得分,并选择总奖励最高的回答。这种方法通过重复出现来提高分数,从而优先考虑高质量的回答。从数学上讲,回答的权重 a_i:
其中,RM (p,s_i) 是对于问题 p 的第 i 个解决方案 s_i 的奖励模型分数。
通常,人们使用结果奖励模型 (ORM) 来获得单个解决方案级别的分数。但为了与其他搜索策略进行公平比较,使用相同的 PRM 对 Best-of-N 的解决方案进行评分。如下图所示,PRM 为每个解决方案生成一个累积的步骤级分数序列,因此需要对步骤进行规约(reduction)以获得单个解决方案级分数:
最常见的规约如下:
以下是应用 Best-of-N 的两种变体得到的结果:
结果揭示了一个明显的优势:加权的 Best-of-N 始终优于普通的 Best-of-N,特别是在发电预算较大的情况下。它能够汇总相同答案的分数,确保即使频率较低但质量较高的答案也能得到有效的优先处理。
然而,尽管有这些改进,仍然达不到 Llama 8B 模型所达到的性能,并且在 N=256 时 Best-of-N 方法开始趋于稳定。
可以通过逐步监督搜索过程来进一步突破界限吗?
作为一种结构化搜索方法,集束搜索可以系统地探索解决方案空间,使其成为在测试时改进模型输出的强大工具。与 PRM 结合使用时,集束搜索可以优化问题解决中中间步骤的生成和评估。集束搜索的工作方式如下:
通过允许 PRM 评估中间步骤的正确性,集束搜索可以在流程早期识别并优先考虑有希望的路径。这种逐步评估策略对于数学等复杂的推理任务特别有用,这是因为验证部分解决方案可以显著改善最终结果。
在实验中,HuggingFace 遵循 DeepMind 的超参数选择,并按照以下方式运行集束搜索:
如下图所示,结果令人震惊:在 N=4 的测试时预算下,集束搜索实现了与 N=16 时 Best-of-N 相同的准确率,即计算效率提高了 4 倍!此外,集束搜索的性能与 Llama 3.1 8B 相当,每个问题仅需 N=32 解决方案。计算机科学博士生在数学方面的平均表现约为 40%,因此对于 1B 模型来说,接近 55% 已经很不错了!
虽然总体上很明显,集束搜索是一种比 Best-of-N 或多数投票更好的搜索策略,但 DeepMind 的论文表明,每种策略都有权衡,这取决于问题的难度和测试时计算预算。
为了了解哪些问题最适合哪种策略,DeepMind 计算了估计问题难度的分布,并将结果分成五等分。换句话说,每个问题被分配到 5 个级别之一,其中级别 1 表示较容易的问题,级别 5 表示最难的问题。为了估计问题难度,DeepMind 为每个问题生成了 2048 个候选解决方案,并进行了标准采样,然后提出了以下启发式方法:
下图是根据 pass@1 分数和四个测试时计算预算 N=[4,16,64,256] 对各种方法的细分:
可以看到,每个条形表示测试时计算预算,并且在每个条形内显示每种方法的相对准确度。例如在难度等级 2 的四个条形中:
多数投票是所有计算预算中表现最差的方法,除了 N=256(集束搜索表现最差)。
集束搜索最适合 N=[4,16,64],但 Best-of-N 最适合 N=256。
应该说,集束搜索在中等难度和困难难度问题(3-5 级)中取得了持续的进展,但在较简单问题上,尤其是在计算预算较大的情况下,它的表现往往比 Best-of-N(甚至多数投票)更差。
通过观察集束搜索生成的结果树,HuggingFace 意识到,如果单个步骤被分配了高奖励,那么整棵树就在该轨迹上崩溃,从而影响多样性。这促使他们探索一种最大化多样性的集束搜索扩展。
正如上面所看到的,集束搜索比 Best-of-N 具有更好的性能,但在处理简单问题和测试时计算预算较大时往往表现不佳。
为了解决这个问题,HuggingFace 开发了一个扩展,称之为「多样性验证器树搜索」(DVTS),旨在最大限度地提高 N 较大时的多样性。
DVTS 的工作方式与集束搜索类似,但有以下修改:
下图是将 DVTS 应用于 Llama 1B 的结果:
可以看到,DVTS 为集束搜索提供了一种补充策略:在 N 较小时,集束搜索更有效地找到正确的解决方案;但在 N 较大时,DVTS 候选的多样性开始发挥作用,可以获得更好的性能。
此外在问题难度细分中,DVTS 在 N 较大时提高了简单 / 中等问题的性能,而集束搜索在 N 较小时表现最佳。
有了各种各样的搜索策略,一个自然的问题是哪一个是最好的?在 DeepMind 的论文中(可参考《Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters 》),他们提出了一种计算 - 最优扩展策略,该策略可以选择搜索方法和超参数 θ,以便在给定的计算预算 N 下达到最佳性能:
例如,对于较简单的问题和较低的计算预算,最好使用 Best-of-N 等策略,而对于较难的问题,集 shu 搜索是更好的选择。下图为计算 - 最优曲线!
本文还探索了将计算 - 最优(compute-optimal)的方法扩展到 Llama 3.2 3B Instruct 模型,以观察 PRM 在与策略自身容量相比时在哪个点开始减弱。结果显示,计算 - 最优的扩展效果非常好,3B 模型的性能超过了 Llama 3.1 70B Instruct(后者是前者大小的 22 倍!)。
对测试时计算扩展的探索揭示了利用基于搜索的方法的潜力和挑战。展望未来,本文提出了几个令人兴奋的方向:
原文链接:https://huggingface.co/spaces/HuggingFaceH4/blogpost-scaling-test-time-compute
文章来自于“机器之心”,作者“机器之心编辑部”。
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0