CRUXEval: A Benchmark for Code Reasoning, Understanding and Execution
作者: Alex Gu, Baptiste Rozière, Hugh Leather, Armando Solar-Lezama, Gabriel Synnaeve, Sida I. Wang
分类: cs.SE, cs.AI, cs.LG
发布日期: 2024-01-05
备注: 71 pages, 29 figures
💡 一句话要点
提出CRUXEval基准以评估代码推理与执行能力
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码推理 基准评估 模型评测 链式思维 Python函数
📋 核心要点
- 现有代码推理模型在特定基准上表现良好,但在CRUXEval基准上却未能展现出相同的性能提升,显示出其局限性。
- 论文提出了一种通用的基准生成方法,并通过评估多种代码模型,揭示了当前模型在代码推理任务中的不足。
- 实验结果表明,虽然简单的链式思维和微调方法能提升性能,但仍未能完全解决基准中的挑战,GPT-4表现最佳。
📝 摘要(中文)
我们提出了CRUXEval(代码推理、理解与执行评估),这是一个包含800个Python函数的基准(每个函数3-13行)。每个函数都有输入-输出对,形成了两个自然任务:输入预测和输出预测。首先,我们提出了一种通用的生成执行基准的方案,可用于创建未来的基准变体。其次,我们在基准上评估了20个代码模型,发现许多在HumanEval上表现良好的模型在我们的基准上并未显示出相同的改进。最后,我们展示了简单的链式思维(CoT)和微调方案可以提高基准上的性能,但仍远未解决该问题。最佳设置为GPT-4与链式思维组合,在输入和输出预测上分别达到了75%和81%的通过率。相比之下,Code Llama 34B在输入和输出预测上仅达到了50%和46%,突显了开源与闭源模型之间的差距。由于没有模型接近完全解决CRUXEval,我们提供了GPT-4在简单程序上失败的示例,以此作为其代码推理能力及改进领域的透视。
🔬 方法详解
问题定义:本论文旨在解决代码推理和执行能力评估的不足,现有方法在不同基准上的表现差异显著,尤其是在CRUXEval基准上。
核心思路:提出CRUXEval基准,通过800个Python函数的输入-输出对,构建了输入预测和输出预测两个任务,提供了一个更具挑战性的评估标准。
技术框架:整体架构包括基准生成、模型评估和性能分析三个主要模块。基准生成模块负责创建函数及其对应的输入输出对,模型评估模块则对20个代码模型进行性能测试,最后通过分析模块总结模型的优缺点。
关键创新:最重要的创新在于提出了一种通用的基准生成方法,使得未来可以轻松扩展和变更基准,同时揭示了当前模型在新基准下的表现差异。
关键设计:在模型评估中,采用了链式思维(CoT)和微调策略来提升模型性能,GPT-4在此设置下表现最佳,且通过率分别为75%和81%。
🖼️ 关键图片
📊 实验亮点
实验结果显示,GPT-4在CRUXEval基准上的输入和输出预测通过率分别为75%和81%,而Code Llama 34B的通过率仅为50%和46%。这一结果突显了开源与闭源模型在代码推理能力上的显著差距,且无模型能够完全解决该基准。
🎯 应用场景
该研究的潜在应用领域包括自动代码生成、代码审查和教育工具等。通过提供一个标准化的评估基准,开发者和研究人员可以更好地理解和改进代码推理模型,从而推动相关技术的进步与应用。
📄 摘要(原文)
We present CRUXEval (Code Reasoning, Understanding, and eXecution Evaluation), a benchmark consisting of 800 Python functions (3-13 lines). Each function comes with an input-output pair, leading to two natural tasks: input prediction and output prediction. First, we propose a generic recipe for generating our execution benchmark which can be used to create future variation of the benchmark. Second, we evaluate twenty code models on our benchmark and discover that many recent high-scoring models on HumanEval do not show the same improvements on our benchmark. Third, we show that simple CoT and fine-tuning schemes can improve performance on our benchmark but remain far from solving it. The best setup, GPT-4 with chain of thought (CoT), achieves a pass@1 of 75% and 81% on input and output prediction, respectively. In contrast, Code Llama 34B achieves a pass@1 of 50% and 46% on input and output prediction, highlighting the gap between open and closed source models. As no model is close to acing CRUXEval, we provide examples of consistent GPT-4 failures on simple programs as a lens into its code reasoning capabilities and areas for improvement.