衡宇 发自 凹非寺
量子位 | 公众号 QbitAI
IOI 2024金牌,OpenAI o3轻松高分拿下!
刚刚,OpenAI发布了关于推理模型在竞技编程中应用的研究论文报告,论文中放出了OpenAI家推理模型三兄弟在IOI和CodeForce上的具体成绩。
三兄弟分别是OpenAI o1、o1-ioi(以o1为基础微调等改进而来)、o3,三者成绩如下。
IOI 2024,国际信息学奥林匹克竞赛:
- o1-ioi在严格规则下拿到213分(49th percentile),放宽提交限制后飙升至362.14分;
- o3在严格规则下就拿到了395.64分,达成金牌成就。
CodeForeces,模拟真实竞赛环境评估模型。
其中,o1-ioi和o3的评分显著高于o1,尤其是o3,已经接近顶级人类选手:
- o1:1673(89th percentile)
- o1-ioi:2214(98th percentile)
- o3:2724(99.8th percentile)
论文迅速在全网扩散开来,网友竞相传阅并激烈讨论。
有网友注意到,o1-ioi在IOI 2024上表现出色,是因为它为每个问题生成了10000个候选解决方案,还用上了复杂的test-time策略;而o3在严格限制下达到顶级选手水平,仅用了50次提交,且无人工策略干预。
这就引出了OpenAI在论文中的一个高亮结论——
o3的表现,证明了通过大规模端到端RL(强化学习),无需依赖人工设计的测试时推理策略,就能自己学会先写暴力求解代码提高效率,再用其他方法交叉验证的策略。
网友满嘴喊着“impressive”:
下一个里程碑,是出现「单次提交就能搞定每个问题」的模型。
或许OpenAI o4会带来这个时刻。
目前,这篇名为《Competitive Programming with Large Reasoning Models》的报告论文已经挂在了arXiv上,文末可见直通车。
o系三兄弟,竞赛编程各显神通
竞技编程,是评估大模型推理和编码能力的理想测试场景。
OpenAI表示,这篇论文的研究目的,是探究在复杂编码和推理任务中,RL对大模型所起到的作用。
研究过程还对比了通用推理模型与领域特定系统的性能,探索提升AI推理能力的有效路径。
参与研究的推理模型共3个,均出自OpenAI自家家门,分别是:
- OpenAI o1
- OpenAI o1-ioi
- OpenAI o3
通用推理模型o1
o1是一个经过RL训练的大模型,用于处理复杂的推理任务。
通过RL训练,o1能生成CoT(chain-of-thought,思维链),其作用是思考和解决复杂问题,帮助模型识别和纠正错误,将复杂任务分解为可管理的部分,并在方法失败时探索替代解决方案路径。
除此之外,o1还可调用外部工具验证代码。
在CodeForce基准测试中,o1拿下了1673分(89th percentile)。
相比非推理模型(如GPT-4o),和早期推理模型(如o1-preview),o1成绩均有显著提升。
此外,研究人员在对o1进行开发和评估的过程中,发现增加「RL计算量」以及「test-time推理计算量」两方面的工作,都能持续提升模型性能。
如下图所示,扩展RL训练和扩展test-time推理均带来了显著的收益。
针对性训练推理模型o1-ioi
在发现增加「RL计算量」以及「test-time推理计算量」的重要性后,OpenAI团队在o1基础上进行针对性训练,得到o1-ioi,目标直指IOI 2024。
除了针对编码任务的持续RL训练外,o1-ioi还结合了专为竞赛编程而设计的专用test-time推理策略(类似AlphaCode的人工设计的test-time推理策略)。
此过程第一步是扩展o1的RL阶段,专注于编码任务。
通过将额外的训练计算专用于编程问题,团队增强了模型规划、实施和调试更多涉及的解决方案的能力。
具体如下:
- 从o1的checkpoint恢复了RL训练。
- 特别强调了具有挑战性的编程问题,帮助模型改进C++生成和运行时检查。
- 指导模型以IOI提交格式生成输出。
这种对编码的额外关注,使o1-ioi能在推理期间编写和执行C++程序。
该模型通过迭代运行和优化解决方案来改进其推理能力,从而增强了其编码和解决问题的能力。
o1-ioi参与了人类选手相同条件的IOI 2024。
它有10个小时的时间,来解决6个具有挑战性的算法问题,每个问题最多允许提交50次。
参赛期间,系统为每个问题生成了10000个候选解决方案,并使用test-time推理策略选了50个方案来提交——这里的test-time推理策略是,根据IOI公共测试用例、模型生成测试用例和学习的评分函数上的表现,来确定每个提交内容的优先级。
最终,o1-ioi在IOI 2024获213分,排名前49%。
在CodeForces基准测试上,o1-ioi的评分达到1807,超过了93%的竞争对手。
论文中写道,“这表明,在编码任务上的额外RL训练有了明显的改进。”
然后,团队用一个简单的筛选条件来拒绝任何未通过公开测试的解决方案时,评分上升到2092。
最终,在完整的test-time推理策略推动下,o1-ioi的评分飙升到2214。
这些结果证实,特定领域的RL微调与高级选择启发式相结合,可以显著提高有竞争力的编程结果。
研究人员表示,o1-ioi的表现,证明特定领域的RL微调与先进选择策略,是可以提升竞技编程成绩的。
通用推理模型o3
第三个参战的是OpenAI最新推理模型o3。
基于o1和o1-ioi的表现,OpenAI团队探索了纯RL训练、不依赖人工设计的test-time策略的局限性。
甚至试图探索用RL进一步训练,该模型是否能够自主开发和执行自己的test-time推理策略
为此,团队取得了o3的早期checkpoint的访问权限,来评估竞赛编程。
参与IOI 2024竞赛时,o3与o1-ioi一样严格遵守官方规则,每个问题最多允许提交50次。
与o1-ioi为每个子任务单独采样解决方案不同,团队在评估o3时,采用了不同的方法:
从包含原始问题的单个提示中采样。
△o3测试自己的解决方案
多提一句,参加IOI 2024的o3版本比参加CodeForce的o3版本更新,包含了额外的更新的训练数据。
不过团队确认了IOI 2024的测试集不包含在新的训练测试里。
在单个问题只能提交50次的限制下,o3在IOI 2024的最终得分是395.64,超过了IOI 2024金牌门槛。
(IOI 2024共产生34名金牌选手,金牌线为≥ 359.71)
而在CodeForce基准测试上,仅仅依靠进一步的RL,o3就获得了2724分的成绩,力压99.8%的选手。
这个成绩直逼人类顶尖选手的水准!
值得注意的是,从得分2214的o1-ioi(超越98%选手),到得分2724的o3(超越99.8%选手),反映了推理模型在竞赛编程中的显著提升。
这表明o3能够以更高的可靠性,解决更广泛的复杂算法问题,使其能力更接近CodeForces的顶级人类竞争对手。
更有意思的是,o3在CodeForce参赛期间展现出了更深思熟虑的思维链。
它不仅能写代码、执行并验证,还会根据反馈不断完善解法。
面对验证复杂的难题,o3在端到端RL期间,竟然学会了先写出暴力解法,再用最优算法的结果来交叉验证。
这种自主学习的验证机制,有效提高了方案的可靠性。
综上,团队表明,o3的性能优于o1-ioi的原因,不依赖于针对IOI的特定人工设计的test-time策略。
相反,o3训练期间出现的复杂test-time技术——如用暴力解法来验证输出——成为了人工设计策略的替代品,让o3不需要o1-ioi所需的手动设计聚类、选择pipeline等需求。
且比人工设计策略的性能高出不少。
软件工程任务表现如何?
除了竞赛编程,论文还在真实的软件工程任务上测试了OpenAI推理模型三兄弟的表现。
团队主要是在2个数据集上测试了仨模型:
- HackerRank Astra:用于评估大模型在跨域多文件项目问题上正确性和一致性的测试集
- SWE-bench:用于评估和预测软件工程的基准测试和模型评估集,由普林斯顿大学NLP团队开发
令人惊喜的是,推理能力的增强对软件工程任务也有显著提升。
三兄弟不仅能在竞赛编程中直逼人类顶尖选手,在真实的软件工程任务上也有亮眼表现。
具体如下:
HackerRank Astra
HackerRank Astra由65个面向项目的编码挑战组成,每个挑战都是为了模拟真实的软件开发任务而精心设计的。
这些挑战涵盖了一系列框架,包括 React.js、Django 和 Node.js,允许获得构建功能和应用程序的实践经验。
该数据集的与众不同之处在于,它专注于评估反映实际开发环境的复杂、多文件、长上下文场景中的问题解决技能。
与典型的竞争性编程数据集不同,HackerRank Astra不提供公开的测试用例,这使OpenAI团队无法依赖人工制作的测试时策略。
使用此数据集评估性能可以揭示推理能力是单独提高算法问题解决的成功率,还是扩展到更实际的、与行业相关的编码任务。
上图中的pass@1,表示首次尝试成功完成任务的概率;平均分数,代表了通过的测试用例的平均比例。
结果显示,与GPT-4o相比,o1-preview的pass@1提高了 9.98%,平均分提高了6.03分。
而RL进一步微调可以提升o1的性能,其pass@1为63.92%,比o1-preview提高了3.03%;平均得分为 75.80。
这些指标证明了o1增强的推理和适应性,使其能够有效地处理复杂的、与行业相关的软件开发任务。
SWE-bench
SWE-bench由普林斯顿大学NLP团队开发,而SWE-bench Verified是OpenAI的preparedness团队经过人工验证的SWE-bench的子集。
它可以更可靠地评估AI模型解决实际软件问题的能力。
这组经过验证的500个任务,修复了SWE-bench的某些问题,如正确解决方案的不正确评分、未指定的问题陈述以及过于具体的单元测试——这有助于确保基准测试准确地对模型功能进行分级。
所有模型都尝试5次来生成候选patch。
如上图所示,与GPT-4o相比,o1-preview在SWE-bench上的性能提高了 8.1%,展示了推理能力的显着进步。
通过在训练期间应用额外的RL计算,o1进一步改进了8.6%。
值得注意的是,训练计算资源比o1多得多的o3,比o1改进了22.8%,“非常impressive”。
这些结果表示,推理模型对软件工程等实际任务,也有很大适用性和使用价值。
One More Thing
OpenAI员工表示,一张梗图可以很好地总结这篇论文。
略显遗憾的是,OpenAI这篇新作虽然挂在了arXiv上,但更像是报告而非论文——因为整篇论文没怎么透露方法细节,光晒成绩单了。
但其中所写还是引起了网友的感慨:
任何可以测量的东西,都将得到改善。
论文直通车:
https://arxiv.org/pdf/2502.06807
参考链接:
[1https://x.com/arankomatsuzaki/status/1889522974467957033
[2]https://x.com/iScienceLuvr/status/1889517116816244995
[3]https://x.com/jennywxiao/status/1889517249033281631