少思考,多成就:在不牺牲准确性的前提下,推理成本降低 50%
我们很高兴推出 Sky-T1-32B-Flash,我们更新的推理语言模型,它显著减少了过度思考,在具有挑战性的问题上将推理成本降低高达 57%。 此增强在数学、编码、科学和常识等领域降低了生成长度,同时保持了准确性,并且根据 Lambda Cloud 定价,使用 8xH100 仅需 275 美元即可完成完整的训练方案。 为了促进透明度和协作,我们开源了完整的 pipeline——从数据生成和预处理到偏好优化和评估脚本——并公开提供模型权重和数据。
- Github: 用于数据生成、响应重写、偏好优化和评估的代码。
- Dataset: 1 万个偏好对
- HuggingFace: Sky-T1-32B-Flash 模型权重
图 1: 我们的新模型在具有挑战性的 benchmarks 上保持强大性能的同时,显著减少了生成的 token 长度。
什么是过度思考?
过度思考指的是推理模型倾向于产生不必要的长响应,其中通常包含冗余或过度的推理步骤。 与 最近的研究工作 的发现一致,我们观察到推理模型,包括 NovaSky 最近发布的 Sky-T1-32B-Preview、QwQ 和 R1,经常产生包含多个提议解决方案的推理序列,每个解决方案后都跟着双重检查的过渡,例如“或者”,“但是等等”或“让我重新考虑”。 虽然双重检查可以检测错误并改进解决方案,但它通常会导致对简单或已验证步骤的重复验证,从而造成效率低下。 例如,在回答问题“1+1 是多少?”时,Sky-T1-32B-Preview 生成了超过 1000 个 token 和 10 多个此类双重检查过渡。
减少过度思考的好处
减少过度思考通过减少冗余或不必要的 token 生成来提高效率和可扩展性。 这种改进不仅大大降低了推理模型的推理成本,还带来了多重下游好处。 首先,加速的响应交付提供了更高质量的用户体验。 此外,通过更高效的推理,测试时生成方法(如 Best-of-N、Majority Vote 或 Monte Carlo Tree Search)可以在固定的计算预算内产生更高的准确性。 它还简化了自训练 pipeline 中的数据生成,而自训练 pipeline 通常会因大规模数据生成运行而成为瓶颈。
如何减少过度思考?
我们减少过度思考的方法建立在 最近的研究工作 中提出的自训练方案之上,并进行了重要的改进,以提高多个领域中具有挑战性的 benchmarks 的准确性。 减少过度思考的一个挑战是防止模型思考不足,即模型在没有充分验证的情况下提出最终解决方案。 在最具有挑战性的 benchmarks 中,需要大量的双重检查和回溯,这个问题尤为突出。 理想情况下,模型应学会根据问题的复杂性调整其推理的深度。
我们的训练过程包括三个主要阶段:数据生成、响应重写和偏好优化。
阶段 1) 数据生成
我们使用 Sky-T1-32B-Preview 生成了 PRM800K 数据集中 1.2 万个问题的响应。 对于每个问题,我们使用 1.0 的 temperature 并生成了 8 个响应,以创建响应长度的多样性。 然后,我们形成了偏好对,以对比“冗长”与“简洁”的解决方案。 具体而言,从生成的响应中,我们选择最短的正确响应作为正面示例,最长的正确响应作为负面示例。 我们丢弃了其余生成的响应,并丢弃了任何未产生至少两个正确响应的问题。 我们假设,对此类偏好对进行偏好优化可以鼓励模型减少过度思考。
使用这些偏好对进行偏好优化降低了生成长度,并在多个 benchmarks (MATH500, GPQA, MMLU) 上基本保持了准确性,但是,我们观察到在编码 (LiveCodeBench-Medium 和 -Hard) 和最具挑战性的数学套件 AIME24 和 MATH500 Level 5 中的难题上准确性有所下降。 这些结果表明,模型在需要更复杂推理的情况下思考不足。 为了解决这个问题,我们使用了每个问题 8 个响应的初始数据集,在我们的训练数据中添加了 1 千个偏好对,其中负面示例是最短的不正确响应,正面示例是比负面示例长的最短正确响应,从而确保模型在必要时保留进行更深层推理的能力。 这种新的数据组合使模型在最具挑战性的数学 benchmarks 上恢复到与 Sky-T1-32B-Preview 相同的水平。
方案增强 #1: 将 {短的不正确响应,长的正确最短响应} 纳入偏好对数据集,以鼓励对难题进行复杂思考。
有趣的是,仅使用此数学数据集进行偏好优化,在 编码 领域中就减少了 >25% 的生成长度,同时在 LCB-Easy 上保持了准确性。 但是,我们观察到在更具挑战性的 benchmarks LCB-Medium 和 -Hard 中准确性有所下降,因此我们在 TACO 数据集上添加了由 Sky-T1-32B-Preview 生成的 500 个额外的偏好对。 我们再次使用 1.0 的 temperature 生成了 8 个响应,并使用最短和最长的正确响应创建了偏好对,这使编码性能恢复到 Sky-T1-32B-Preview 的水平。
方案增强 #2: 纳入少量的编码偏好对,既可以提高编码准确性,又可以进一步缩短编码生成长度。
阶段 1 在 8xH100-80GB 上需要约 8 小时,根据 Lambda Cloud 定价,总计约 190 美元。
阶段 2) 响应重写
我们通过删除不必要的子解决方案来改进正面示例。 模型的推理序列通常包括多个提议的解决方案,每个解决方案后都跟着双重检查的过渡,例如“或者...”,“但是等等...”或“让我重新考虑...”。 对于较简单的问题,这些过渡很少会导致答案改变,但会显著延长响应长度。 使用受 最近的研究工作 启发的技术,我们使用 Llama3.3-70B 来分离响应中的解决方案,然后重写响应,使其仅包含第一个正确的子解决方案 (FCS) 和一个额外的子解决方案 (+1)。 这种剪枝方法删除了大部分不必要的子解决方案,减少了正面示例的序列长度,但包含了一个额外的子解决方案,以保持模型的长链式思考推理结构。
继 先前的工作 之后,我们还探索了重写响应以包含最多第一个正确解决方案 (FCS) 或最多第二个正确解决方案 (FCS+Reflection),但发现我们的 FCS+1 方法可以在保持准确性的同时实现最低的生成长度。 对于编码示例,我们没有执行响应重写。 我们无法将 FCS+1 方法应用于编码,因为响应几乎从不提出多个完整的代码块作为解决方案,尽管我们认为有机会消除编码响应中的大量冗余。 我们已经开源了响应重写 pipeline,使研究人员能够轻松探索替代方法。
方案增强 #3: 重写正面偏好数学示例以仅保留第一个正确解决方案和一个额外的解决方案 (FCS+1) 可以在保持准确性(不像 FCS)的同时产生更短的生成长度(相对于 FCS+R)。
阶段 2 在 8xH100-80GB 上需要约 1 小时,根据 Lambda Cloud 定价,总计约 25 美元。
阶段 3) 偏好优化
我们采用 SimPO 进行偏好优化。 SimPO 与 DPO 密切相关,但将长度归一化的隐式奖励纳入优化方法中,这导致相对于 DPO 更短的序列长度。 此外,SimPO 消除了 DPO 所需的参考模型的需求,从而使偏好优化计算量更少,因此也更便宜。 作为偏好优化的替代方案,我们还探索了仅将 SFT 与最短响应一起使用,但发现序列长度仅略有减少 (<5%)。 在 消融研究结果 中,我们包括了使用与阶段 (2) 中描述的相同偏好对的 DPO 以及使用最短响应的 SFT 的消融研究。
我们以 Sky-T1-32B-Preview 作为我们的基础模型,并使用 SimPO 进行 1 个 epoch 和 batch size 为 96 的训练。 我们发现 SimPO 的结果对超参数设置很敏感,并在以下范围内进行了有限的探索:学习率 = {1e-7, 5e-7, 1e-6},gamma = {0.3, 0.5, 1.0},beta = {2.0, 2.5}。 我们在使用 5e-7 的学习率、0.3 的 gamma 和 2.0 的 beta 时获得了最佳性能。 我们使用 Llama-Factory 执行训练。
阶段 3 在 8xH100-80GB 上需要约 2.5 小时,根据 Lambda Cloud 定价,总计约 60 美元。
结果
Sky-T1-32B-Flash 在一系列具有挑战性的 benchmarks 中保持了 Sky-T1-32B-Preview 的准确性,并持续将生成长度缩减了 30% 以上。 即使在最具挑战性的问题上,从 AIME24 和 LCB-Hard 来看,Sky-T1-32B 也分别将序列长度缩减了 37% 和 57%。
消融研究
我们报告了我们探索的替代方法和方案的消融研究结果。 LS 指的是使用 {负例:最长的正确示例,正例:最短的正确示例} 偏好对。 SILC 指的是使用 {负例:短的 不正确示例,正例:长的 正确示例}。
致谢
这项工作是在 Berkeley Sky Computing Lab 完成的,并获得了 Anyscale 和 Lambda Labs 的慷慨计算资源支持。