NaturalCodeBench: Examining Coding Performance Mismatch on HumanEval and Natural User Prompts
作者: Shudan Zhang, Hanlin Zhao, Xiao Liu, Qinkai Zheng, Zehan Qi, Xiaotao Gu, Xiaohan Zhang, Yuxiao Dong, Jie Tang
分类: cs.CL, cs.LG, cs.SE
发布日期: 2024-05-07
🔗 代码/项目: GITHUB
💡 一句话要点
提出NaturalCodeBench,评估LLM在真实用户场景下的代码生成能力
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码生成 大型语言模型 benchmark 自然语言处理 软件工程
📋 核心要点
- 现有代码生成benchmark主要集中于算法和数据科学入门任务,无法充分评估LLM在真实场景下的编码能力。
- NaturalCodeBench (NCB) 旨在模拟真实编码场景的复杂性和多样性,包含来自在线编码服务的自然用户查询。
- NCB引入半自动化测试用例构建流程,效率提升超过4倍,实验表明现有模型在NCB上表现与HumanEval存在显著差距。
📝 摘要(中文)
大型语言模型(LLM)在代码生成方面表现出强大的能力。然而,现有的代码合成基准,如HumanEval、MBPP和DS-1000,主要面向算法和数据科学的入门级任务,不足以满足真实编码中普遍存在的具有挑战性的需求。为了填补这一空白,我们提出了NaturalCodeBench(NCB),这是一个具有挑战性的代码基准,旨在反映真实编码任务中场景的复杂性和多样性。NCB包含402个Python和Java的高质量问题,这些问题是从在线编码服务的自然用户查询中精心挑选的,涵盖6个不同的领域。考虑到为真实世界查询创建测试用例的非凡难度,我们还引入了一个半自动化流程,以提高测试用例构建的效率。与手动解决方案相比,它实现了超过4倍的效率提升。我们对39个LLM进行的系统实验发现,HumanEval分数相近的模型在NCB上的性能差距仍然很大,这表明缺乏对实际代码合成场景的关注或对HumanEval的过度优化。另一方面,即使是性能最佳的GPT-4在NCB上仍然远不能令人满意。评估工具包和开发集可在https://github.com/THUDM/NaturalCodeBench获得。
🔬 方法详解
问题定义:论文旨在解决现有代码生成benchmark无法充分评估LLM在真实用户场景下代码生成能力的问题。现有benchmark主要集中于算法和数据科学的入门级任务,与实际工业界需求存在较大差距,导致模型在真实场景下的泛化能力不足。
核心思路:论文的核心思路是构建一个更贴近真实用户需求的benchmark,即NaturalCodeBench (NCB)。NCB通过收集在线编码服务的自然用户查询,涵盖更广泛的领域和更复杂的任务,从而更全面地评估LLM的代码生成能力。
技术框架:NCB的构建流程主要包括以下几个阶段:1) 数据收集:从在线编码服务收集自然用户查询,涵盖Python和Java两种编程语言。2) 问题筛选:人工筛选高质量的问题,确保问题的难度和多样性。3) 测试用例生成:采用半自动化流程生成测试用例,提高测试用例构建的效率。4) 模型评估:使用NCB评估多个LLM的代码生成能力,并分析模型在不同领域和难度下的表现。
关键创新:NCB的关键创新在于其benchmark的设计理念,即更贴近真实用户需求。与现有benchmark相比,NCB的问题更复杂、更具多样性,更能反映真实编码场景的挑战。此外,半自动化测试用例生成流程也提高了benchmark构建的效率。
关键设计:NCB包含402个高质量问题,涵盖6个不同的领域。半自动化测试用例生成流程利用人工解决方案作为参考,自动生成更多的测试用例。具体的技术细节(如损失函数、网络结构等)取决于被评估的LLM,NCB本身不涉及特定的模型设计。
🖼️ 关键图片
📊 实验亮点
实验结果表明,即使在HumanEval上表现相近的模型,在NCB上的性能差距也很大,表明现有模型对实际代码合成场景的关注不足或过度优化了HumanEval。即使是性能最佳的GPT-4,在NCB上的表现也远未达到令人满意的水平,突显了真实世界代码生成任务的挑战性。
🎯 应用场景
该研究成果可应用于评估和提升LLM在真实世界软件开发场景中的代码生成能力。通过使用NaturalCodeBench,可以更准确地了解LLM在实际应用中的性能瓶颈,并指导模型优化,最终提高软件开发的效率和质量。未来,该benchmark可以扩展到更多编程语言和领域,进一步推动代码生成技术的发展。
📄 摘要(原文)
Large language models (LLMs) have manifested strong ability to generate codes for productive activities. However, current benchmarks for code synthesis, such as HumanEval, MBPP, and DS-1000, are predominantly oriented towards introductory tasks on algorithm and data science, insufficiently satisfying challenging requirements prevalent in real-world coding. To fill this gap, we propose NaturalCodeBench (NCB), a challenging code benchmark designed to mirror the complexity and variety of scenarios in real coding tasks. NCB comprises 402 high-quality problems in Python and Java, meticulously selected from natural user queries from online coding services, covering 6 different domains. Noting the extraordinary difficulty in creating testing cases for real-world queries, we also introduce a semi-automated pipeline to enhance the efficiency of test case construction. Comparing with manual solutions, it achieves an efficiency increase of more than 4 times. Our systematic experiments on 39 LLMs find that performance gaps on NCB between models with close HumanEval scores could still be significant, indicating a lack of focus on practical code synthesis scenarios or over-specified optimization on HumanEval. On the other hand, even the best-performing GPT-4 is still far from satisfying on NCB. The evaluation toolkit and development set are available at https://github.com/THUDM/NaturalCodeBench.