CodeBenchGen: Creating Scalable Execution-based Code Generation Benchmarks

📄 arXiv: 2404.00566v4 📥 PDF

作者: Yiqing Xie, Alex Xie, Divyanshu Sheth, Pengfei Liu, Daniel Fried, Carolyn Rose

分类: cs.SE, cs.CL

发布日期: 2024-03-31 (更新: 2024-10-02)

🔗 代码/项目: GITHUB


💡 一句话要点

提出CodeBenchGen以解决代码生成基准测试的可扩展性问题

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码生成 基准测试 大型语言模型 自动化测试 软件评估

📋 核心要点

  1. 现有的代码生成基准测试方法在执行和测试代码方面存在局限性,难以适应多样化的应用场景。
  2. 本文提出的CodeBenchGen框架利用大型语言模型生成可执行的代码基准,支持多种代码测试场景。
  3. 通过创建Exec-CSN数据集,实验结果显示81.3%的示例可被人类解决,验证了框架的有效性。

📝 摘要(中文)

为了充分测试现代代码生成系统,评估基准必须执行和测试系统生成的代码。然而,这些执行和测试要求在很大程度上限制了基准的设置,使其只能在代码易于执行或有人工编写测试的情况下进行。为促进在多样化场景中对代码生成系统的评估,本文提出了CodeBenchGen,一个从自然代码源创建可扩展执行基准的框架。具体而言,我们利用大型语言模型(LLM)将任意代码片段沙盒化为评估示例,包括执行评估的测试用例。我们通过创建一个包含1,931个示例的数据集Exec-CSN来展示框架的实用性,该数据集涉及293个库,转换自367个GitHub仓库中的代码。人类研究表明,81.3%的示例可以被人类解决,61%被评为“需要努力解决”。我们对开源和专有模型进行了代码生成实验,并分析了人类和模型的性能。

🔬 方法详解

问题定义:本文旨在解决现有代码生成基准测试在执行和测试代码时的局限性,尤其是在多样化场景下的适用性不足。现有方法往往依赖于易于执行的代码或人工编写的测试用例,限制了评估的广泛性。

核心思路:论文提出的CodeBenchGen框架通过利用大型语言模型(LLM)将任意代码片段沙盒化,生成可执行的评估示例和测试用例,从而扩展了基准测试的适用范围。

技术框架:整体架构包括数据收集、代码沙盒化、测试用例生成和评估四个主要模块。首先,从自然代码源(如GitHub)收集代码,然后使用LLM对代码进行处理,生成可执行的测试示例。

关键创新:最重要的技术创新在于利用LLM自动生成执行基准和测试用例,这一方法与传统依赖人工编写测试的方式有本质区别,显著提高了基准的可扩展性和多样性。

关键设计:在框架中,关键参数包括LLM的选择和配置,损失函数的设计用于优化生成的代码质量,网络结构则采用了适合代码生成的深度学习模型。

🖼️ 关键图片

img_0

📊 实验亮点

实验结果显示,创建的Exec-CSN数据集中81.3%的示例可以被人类解决,且61%被评为“需要努力解决”。这些结果表明,CodeBenchGen框架在生成可执行代码基准方面的有效性,能够为后续的代码生成研究提供重要参考。

🎯 应用场景

该研究的潜在应用领域包括自动化代码生成、软件测试和智能编程助手等。通过提供可扩展的基准测试,CodeBenchGen能够帮助研究人员和开发者更好地评估和优化代码生成系统,推动相关技术的进步与应用。

📄 摘要(原文)

To adequately test modern code generation systems, evaluation benchmarks must execute and test the code generated by the system. However, these execution and testing requirements have largely limited benchmarks to settings where code is easily executable or has human-written tests. To facilitate evaluation of code generation systems across diverse scenarios, we present CodeBenchGen, a framework to create scalable execution-based benchmarks from naturally occurring code sources. Specifically, we leverage a large language model (LLM) to sandbox arbitrary pieces of code into evaluation examples, including test cases for execution-based evaluation. We illustrate the usefulness of our framework by creating a dataset, Exec-CSN, which includes 1,931 examples involving 293 libraries converted from code in 367 GitHub repositories taken from the Code- SearchNet dataset. To demonstrate the solvability of examples in Exec-CSN, we present a human study demonstrating that 81.3% of the examples can be solved by humans and 61% are rated as "requires effort to solve". We conduct code generation experiments on open-source and proprietary models and analyze the performance of both humans and models. We provide code and data at: https://github.com/yiqingxyq/CodeBenchGen.