EvoCodeBench: An Evolving Code Generation Benchmark with Domain-Specific Evaluations
作者: Jia Li, Ge Li, Xuanming Zhang, Yunfei Zhao, Yihong Dong, Zhi Jin, Binhua Li, Fei Huang, Yongbin Li
分类: cs.CL, cs.SE
发布日期: 2024-10-30
备注: Accepted by the 38th Conference on Neural Information Processing Systems (NeurIPS 2024)
💡 一句话要点
EvoCodeBench:一个动态演进的代码生成评测基准,具备领域特定评估能力
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码生成 大型语言模型 评测基准 领域特定评估 数据泄露 动态数据集 编程领域 软件开发
📋 核心要点
- 现有代码生成评测基准存在数据泄露问题,影响评估的公平性,且缺乏领域特定评估,难以指导实际应用。
- EvoCodeBench通过动态更新数据集避免数据泄露,构建领域分类体系并标注数据,提供领域特定评估指标。
- 实验表明,EvoCodeBench能更真实地反映LLM在真实代码仓库中的能力,并揭示其在不同领域的优劣势。
📝 摘要(中文)
本文提出了一种新的代码生成评测基准——EvoCodeBench,旨在解决现有基准测试中存在的数据泄露和缺乏领域特定评估的问题。EvoCodeBench具有以下优势:(1) 动态演进的数据集,定期更新以避免数据泄露。本文发布了第一个版本EvoCodeBench-2403,包含来自25个代码仓库的275个样本。(2) 领域分类体系和领域标签,基于开源社区的统计数据,设计了包含10个热门领域的编程领域分类体系,并为EvoCodeBench中的每个样本标注了领域标签。(3) 领域特定的评估方法,除了Pass@k之外,还计算了领域特定改进(DSI),并定义了LLM的舒适领域和陌生领域。这些评估方法有助于从业者选择特定领域中更优秀的LLM,并发现现有LLM的缺点。我们在EvoCodeBench上评估了8个流行的LLM(例如gpt-4, DeepSeek Coder),并总结了一些见解。EvoCodeBench揭示了这些LLM在真实仓库中的实际能力。例如,gpt-4在EvoCodeBench-2403上的最高Pass@1仅为20.74%。此外,我们评估了LLM在不同领域的表现,并发现了它们的舒适领域和陌生领域。例如,gpt-4在大多数领域表现最佳,但在互联网领域落后于其他模型。StarCoder 2-15B在数据库领域表现出色,甚至优于33B的LLM。EvoCodeBench已发布。
🔬 方法详解
问题定义:现有代码生成评测基准存在两个主要问题。一是数据泄露,即模型在训练过程中可能已经见过测试数据,导致评估结果虚高,无法真实反映模型的泛化能力。二是缺乏领域特定评估,无法帮助用户根据特定编程领域的需求选择合适的模型。现有方法难以区分模型在不同领域的表现,无法提供细粒度的性能分析。
核心思路:EvoCodeBench的核心思路是通过动态更新数据集来避免数据泄露,并引入领域分类体系和领域特定评估指标来提供更全面的评估。通过定期更新数据集,可以确保模型在测试时遇到的是未知的代码样本。通过领域分类和评估,可以了解模型在不同编程领域的优势和劣势,从而更好地指导实际应用。
技术框架:EvoCodeBench的整体框架包括以下几个主要组成部分:(1) 动态演进的数据集:数据集定期更新,避免数据泄露。(2) 领域分类体系:基于开源社区的统计数据,设计包含10个热门领域的编程领域分类体系。(3) 领域标签:为数据集中的每个样本标注领域标签。(4) 领域特定评估指标:除了Pass@k之外,还计算领域特定改进(DSI),并定义LLM的舒适领域和陌生领域。
关键创新:EvoCodeBench最重要的技术创新点在于其动态演进的数据集和领域特定评估方法。动态演进的数据集可以有效避免数据泄露,确保评估的公平性。领域特定评估方法可以提供更细粒度的性能分析,帮助用户选择适合特定领域的模型。与现有方法的本质区别在于,EvoCodeBench更加关注模型的真实泛化能力和领域适应性。
关键设计:EvoCodeBench的关键设计包括:(1) 数据集更新频率:例如,每6个月更新一次数据集。(2) 领域分类体系的设计:基于开源社区的统计数据,选择10个热门领域。(3) 领域标签的标注方法:人工标注或自动标注。(4) 领域特定改进(DSI)的计算方法:DSI衡量模型在特定领域相对于其他领域的性能提升。
🖼️ 关键图片
📊 实验亮点
实验结果表明,gpt-4在EvoCodeBench-2403上的最高Pass@1仅为20.74%,揭示了其在真实代码仓库中的实际能力。此外,实验还发现gpt-4在互联网领域表现相对较弱,而StarCoder 2-15B在数据库领域表现出色,甚至优于33B的LLM。这些结果表明,EvoCodeBench能够有效区分LLM在不同领域的优劣势。
🎯 应用场景
EvoCodeBench可用于评估和比较大型语言模型在代码生成任务中的性能,尤其是在特定编程领域。它可以帮助开发者选择最适合其需求的模型,并促进LLM在软件开发、自动化测试、代码维护等领域的应用。该基准的动态更新机制保证了评估的长期有效性,并能推动LLM代码生成能力的持续提升。
📄 摘要(原文)
How to evaluate Large Language Models (LLMs) in code generation remains an open question. Existing benchmarks have two limitations - data leakage and lack of domain-specific evaluation. The former hurts the fairness of benchmarks, and the latter hinders practitioners from selecting superior LLMs for specific programming domains. To address these two limitations, we propose a new benchmark - EvoCodeBench, which has the following advances: (1) Evolving data. EvoCodeBench will be dynamically updated every period (e.g., 6 months) to avoid data leakage. This paper releases the first version - EvoCodeBench-2403, containing 275 samples from 25 repositories. (2) A domain taxonomy and domain labels. Based on the statistics of open-source communities, we design a programming domain taxonomy consisting of 10 popular domains. Based on the taxonomy, we annotate each sample in EvoCodeBench with a domain label. (3) Domain-specific evaluations. Besides the Pass@k, we compute the Domain-Specific Improvement (DSI) and define LLMs' comfort and strange domains. These evaluations help practitioners select superior LLMs in specific domains and discover the shortcomings of existing LLMs. We evaluate 8 popular LLMs (e.g., gpt-4, DeepSeek Coder) on EvoCodeBench and summarize some insights. EvoCodeBench reveals the actual abilities of these LLMs in real-world repositories. For example, the highest Pass@1 of gpt-4 on EvoCodeBench-2403 is only 20.74%. Besides, we evaluate LLMs in different domains and discover their comfort and strange domains. For example, gpt-4 performs best in most domains but falls behind others in the Internet domain. StarCoder 2-15B unexpectedly performs well in the Database domain and even outperforms 33B LLMs. EvoCodeBench has been released.