DOMAINEVAL: An Auto-Constructed Benchmark for Multi-Domain Code Generation
作者: Qiming Zhu, Jialun Cao, Yaojie Lu, Hongyu Lin, Xianpei Han, Le Sun, Shing-Chi Cheung
分类: cs.AI, cs.SE
发布日期: 2024-08-23
🔗 代码/项目: PROJECT_PAGE
💡 一句话要点
DOMAINEVAL:一个自动构建的多领域代码生成基准评测,用于评估LLM的代码能力。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码生成 大型语言模型 多领域评测 自动化构建 代码基准
📋 核心要点
- 现有代码评测benchmark主要关注通用编程任务,缺乏对特定领域(如密码学、系统编程)代码生成能力的评估。
- DOMAINEVAL通过全自动化的流程,从代码仓库中提取并构建多领域代码生成评测用例,实现push-bottom的构建方式。
- 实验表明,LLM在不同领域代码生成能力上存在显著差异,尤其在密码学和系统编程领域表现较弱,领域偏差明显。
📝 摘要(中文)
本文提出了一个多领域代码基准评测DOMAINEVAL,旨在全面评估大型语言模型(LLMs)的代码能力。现有代码评测主要集中在常见编码任务上,而忽略了领域特定的编码任务。DOMAINEVAL通过全自动化的流程,从代码仓库构建格式化的评测用例。通过对12个代表性LLM的评估,发现LLM在计算任务上表现良好,但在密码学和系统编码任务上存在不足,性能差距高达68.94%。增加生成样本数量可以提高LLM的整体性能,但领域偏差可能会加剧。本研究贡献包括:一个包含六个领域的代码生成基准数据集DOMAINEVAL,一个用于构建代码基准的全自动流程,以及基于LLM在DOMAINEVAL上的性能对LLM代码生成任务局限性的识别,为未来的研究改进提供了方向。
🔬 方法详解
问题定义:现有代码生成benchmark主要集中在通用编程任务,缺乏对特定领域(如密码学、系统编程)代码生成能力的评估。这使得我们难以全面了解LLM在不同领域代码生成方面的优势和不足。现有方法无法自动化地从代码仓库中构建多领域评测用例,构建过程耗时且难以扩展。
核心思路:DOMAINEVAL的核心思路是构建一个全自动化的流程,能够从代码仓库中提取并构建多领域代码生成评测用例。通过这种push-bottom的方式,可以高效地构建包含多个领域、大量测试用例的benchmark,从而更全面地评估LLM的代码生成能力。
技术框架:DOMAINEVAL的整体框架包含以下几个主要阶段:1) 从代码仓库中收集代码片段;2) 对代码片段进行清洗和预处理,例如去除注释、格式化代码等;3) 根据预定义的规则,将代码片段转换为评测用例,包括问题描述、输入输出示例等;4) 对生成的评测用例进行验证,确保其正确性和有效性。整个流程是全自动化的,无需人工干预。
关键创新:DOMAINEVAL的关键创新在于其全自动化的构建流程。与以往手动构建benchmark的方法相比,DOMAINEVAL可以高效地从大量代码仓库中提取并构建评测用例,从而大大降低了构建benchmark的成本和时间。此外,DOMAINEVAL还支持自定义规则,可以根据不同的领域和需求构建不同的评测用例。
关键设计:DOMAINEVAL的关键设计包括:1) 使用正则表达式和语法分析等技术,从代码片段中提取关键信息;2) 使用模板和规则引擎,将提取的信息转换为评测用例;3) 使用单元测试和模糊测试等方法,对生成的评测用例进行验证。具体的参数设置和规则定义需要根据不同的领域和代码仓库进行调整。
🖼️ 关键图片
📊 实验亮点
通过对12个代表性LLM在DOMAINEVAL上的评估,发现LLM在计算任务上表现良好,但在密码学和系统编码任务上存在显著不足,性能差距高达68.94% (80.94% - 12.0%)。实验还表明,增加生成样本数量可以提高LLM的整体性能,但领域偏差可能会加剧。
🎯 应用场景
DOMAINEVAL可用于评估和比较不同LLM在多领域代码生成方面的能力,帮助研究人员了解LLM的优势和不足,并指导LLM的改进方向。此外,DOMAINEVAL还可以用于开发针对特定领域的代码生成工具,例如密码学代码生成器、系统编程代码生成器等,提高软件开发的效率和质量。
📄 摘要(原文)
Code benchmarks such as HumanEval are widely adopted to evaluate the capabilities of Large Language Models (LLMs), providing insights into their strengths and weaknesses. However, current benchmarks primarily exercise LLMs' capability on common coding tasks (e.g., bubble sort, greatest common divisor), leaving domain-specific coding tasks (e.g., computation, system, cryptography) unexplored. To fill this gap, we propose a multi-domain code benchmark, DOMAINEVAL, designed to evaluate LLMs' coding capabilities thoroughly. Our pipeline works in a fully automated manner, enabling a push-bottom construction from code repositories into formatted subjects under study. Interesting findings are observed by evaluating 12 representative LLMs against DOMAINEVAL. We notice that LLMs are generally good at computation tasks while falling short on cryptography and system coding tasks. The performance gap can be as much as 68.94% (80.94% - 12.0%) in some LLMs. We also observe that generating more samples can increase the overall performance of LLMs, while the domain bias may even increase. The contributions of this study include a code generation benchmark dataset DOMAINEVAL, encompassing six popular domains, a fully automated pipeline for constructing code benchmarks, and an identification of the limitations of LLMs in code generation tasks based on their performance on DOMAINEVAL, providing directions for future research improvements. The leaderboard is available at https://domaineval.github.io/.