Mercury: A Code Efficiency Benchmark for Code Large Language Models

📄 arXiv: 2402.07844v4 📥 PDF

作者: Mingzhe Du, Anh Tuan Luu, Bin Ji, Qian Liu, See-Kiong Ng

分类: cs.SE, cs.CL

发布日期: 2024-02-12 (更新: 2024-06-11)

🔗 代码/项目: GITHUB


💡 一句话要点

提出Mercury基准以评估代码大语言模型的代码效率

🎯 匹配领域: 支柱二:RL算法与架构 (RL & Architecture) 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码效率 大语言模型 基准评估 功能正确性 直接偏好优化 Python任务 机器学习 代码生成

📋 核心要点

  1. 现有的代码大语言模型评估方法主要关注功能正确性,忽视了代码的计算效率,导致评估结果不全面。
  2. 论文提出了Mercury基准,包含1889个Python任务及其解决方案,能够同时评估功能正确性和代码效率。
  3. 实验证明,领先的代码LLMs在效率评估上存在显著差距,DPO方法在提升代码效率方面表现优于传统的SFT方法。

📝 摘要(中文)

在最近对代码大语言模型(Code LLMs)评估的进展中,现有基准主要关注生成代码的功能正确性,忽视了其计算效率的重要性。为填补这一空白,我们提出了Mercury,这是第一个针对代码LLMs的代码效率基准。它包含1889个Python任务,每个任务都有相应的解决方案作为现实世界的效率基准,从而实现对运行时分布的全面分析。基于此分布,我们引入了一种新指标Beyond,计算运行时百分位加权的通过分数,以同时反映功能正确性和代码效率。在Mercury上,领先的代码LLMs在Pass上可以达到65%,而在Beyond上则不足50%。理想的Beyond分数应与Pass分数一致,这表明尽管代码LLMs在生成功能正确的代码方面表现出色,但在效率上仍存在显著差距。最后,我们的实验证明,直接偏好优化(DPO)在提升代码效率方面优于监督微调(SFT),为未来高效代码生成的探索开辟了有希望的途径。

🔬 方法详解

问题定义:本论文旨在解决现有代码大语言模型评估中对计算效率缺乏关注的问题。现有方法主要集中在功能正确性上,导致对模型性能的评估不够全面。

核心思路:我们提出Mercury基准,结合功能正确性与代码效率的评估,使用新指标Beyond来综合反映这两方面的表现。通过提供真实世界的效率基准,增强了评估的实用性。

技术框架:Mercury基准由1889个Python任务组成,每个任务都有相应的解决方案。评估流程包括任务执行、运行时数据收集及Beyond指标计算,形成全面的性能分析。

关键创新:引入了Beyond指标,通过运行时百分位加权的方式,首次将功能正确性与代码效率结合在一起进行评估,填补了现有评估方法的空白。

关键设计:在评估过程中,设置了合理的基准任务和解决方案,确保了数据的真实性和有效性。同时,采用了DPO作为优化策略,相较于传统的SFT方法,DPO在提升代码效率方面表现更佳。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

在Mercury基准上,领先的代码大语言模型在功能正确性评估中达到了65%的通过率,但在效率评估的Beyond指标上却不足50%。这表明当前模型在生成功能正确代码方面表现良好,但在效率上仍有显著提升空间。实验证明,DPO方法在提升代码效率方面优于SFT,显示出更强的潜力。

🎯 应用场景

该研究的潜在应用领域包括软件开发、自动化代码生成和智能编程助手等。通过提供更全面的评估标准,Mercury基准能够帮助开发者选择更高效的代码生成模型,提升软件开发的效率和质量。未来,该基准可能推动更多关于代码效率的研究,促进代码生成技术的进步。

📄 摘要(原文)

Amidst the recent strides in evaluating Large Language Models for Code (Code LLMs), existing benchmarks have mainly focused on the functional correctness of generated code, neglecting the importance of their computational efficiency. To fill the gap, we present Mercury, the first code efficiency benchmark for Code LLMs. It comprises 1,889 Python tasks, each accompanied by adequate solutions that serve as real-world efficiency baselines, enabling a comprehensive analysis of the runtime distribution. Based on the distribution, we introduce a new metric Beyond, which computes a runtime-percentile-weighted Pass score to reflect functional correctness and code efficiency simultaneously. On Mercury, leading Code LLMs can achieve 65% on Pass, while less than 50% on Beyond. Given that an ideal Beyond score would be aligned with the Pass score, it indicates that while Code LLMs exhibit impressive capabilities in generating functionally correct code, there remains a notable gap in their efficiency. Finally, our empirical experiments reveal that Direct Preference Optimization (DPO) serves as a robust baseline for enhancing code efficiency compared with Supervised Fine Tuning (SFT), which paves a promising avenue for future exploration of efficient code generation. Our code and data are available on GitHub: https://github.com/Elfsong/Mercury.