M2rc-Eval: Massively Multilingual Repository-level Code Completion Evaluation
作者: Jiaheng Liu, Ken Deng, Congnan Liu, Jian Yang, Shukai Liu, He Zhu, Peng Zhao, Linzheng Chai, Yanan Wu, Ke Jin, Ge Zhang, Zekun Wang, Guoan Zhang, Bangyu Xiang, Wenbo Su, Bo Zheng
分类: cs.CL, cs.SE
发布日期: 2024-10-28
备注: 19 pages
💡 一句话要点
提出M2RC-EVAL:大规模多语言仓库级代码补全评估基准
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码补全 大语言模型 多语言 评估基准 仓库级代码 抽象语法树 指令数据集
📋 核心要点
- 现有仓库级代码补全基准语言覆盖不足,难以评估代码大语言模型在多语言环境下的泛化能力。
- 论文构建了包含18种编程语言的M2RC-EVAL基准,并提供细粒度的标注,以评估模型在不同场景下的补全能力。
- 论文还构建了M2RC-INSTRUCT指令数据集,用于提升代码大语言模型的仓库级代码补全能力,实验验证了其有效性。
📝 摘要(中文)
本文提出了一项大规模多语言仓库级代码补全评估基准,名为M2RC-EVAL,旨在解决现有基准在语言覆盖范围上的局限性。现有仓库级代码补全基准通常只关注少数几种语言(<5),无法全面评估现有代码大语言模型(LLMs)在不同语言上的通用代码智能能力。此外,现有基准通常报告不同语言的总体平均分数,忽略了不同补全场景下的细粒度能力。因此,为了促进代码LLMs在多语言场景下的研究,我们构建了包含18种编程语言的M2RC-EVAL,并提供了两种细粒度的标注(即bucket-level和semantic-level),这些标注基于解析的抽象语法树获得。此外,我们还整理了一个大规模多语言指令语料库M2RC-INSTRUCT数据集,以提高现有代码LLMs的仓库级代码补全能力。全面的实验结果证明了我们的M2RC-EVAL和M2RC-INSTRUCT的有效性。
🔬 方法详解
问题定义:现有仓库级代码补全基准数据集通常只支持少数几种编程语言,无法充分评估代码大语言模型在多种编程语言环境下的代码补全能力。此外,现有基准通常只提供整体的平均性能指标,缺乏对不同补全场景下模型性能的细粒度评估,难以深入分析模型的优缺点。
核心思路:论文的核心思路是构建一个大规模、多语言、细粒度的仓库级代码补全评估基准,从而更全面、深入地评估代码大语言模型的代码补全能力。通过增加语言种类,可以考察模型的跨语言泛化能力;通过细粒度标注,可以分析模型在不同场景下的表现。
技术框架:该研究主要包含两个部分:M2RC-EVAL评估基准和M2RC-INSTRUCT指令数据集。M2RC-EVAL包含18种编程语言的代码仓库,并提供了bucket-level和semantic-level两种细粒度的标注。这些标注基于代码的抽象语法树(AST)进行解析和构建。M2RC-INSTRUCT是一个大规模的多语言指令数据集,用于训练和微调代码大语言模型,以提升其仓库级代码补全能力。
关键创新:该论文的关键创新在于构建了一个大规模、多语言的仓库级代码补全评估基准M2RC-EVAL,该基准覆盖了18种编程语言,并提供了细粒度的标注信息,可以更全面地评估代码大语言模型的代码补全能力。与现有基准相比,M2RC-EVAL在语言覆盖范围和评估粒度上都有显著提升。
关键设计:M2RC-EVAL的细粒度标注包括bucket-level和semantic-level两种。Bucket-level标注将代码补全场景划分为不同的桶(bucket),例如函数调用、变量赋值等。Semantic-level标注则关注代码的语义信息,例如数据类型、控制流等。这些标注信息可以帮助研究人员更深入地分析模型的补全能力。M2RC-INSTRUCT数据集的构建采用了数据增强等技术,以提高数据的多样性和质量。
🖼️ 关键图片
📊 实验亮点
实验结果表明,在M2RC-EVAL基准上,现有代码大语言模型在不同语言和场景下的性能差异显著。使用M2RC-INSTRUCT数据集进行微调后,模型的代码补全能力得到显著提升。具体性能数据未知,但论文强调了M2RC-EVAL和M2RC-INSTRUCT的有效性。
🎯 应用场景
该研究成果可应用于代码大语言模型的评估和改进,促进智能代码补全技术的发展。M2RC-EVAL基准可以帮助研究人员更全面地了解模型的优缺点,从而有针对性地进行改进。M2RC-INSTRUCT数据集可以用于训练和微调代码大语言模型,提升其代码补全能力。该技术有望提高软件开发效率,降低开发成本。
📄 摘要(原文)
Repository-level code completion has drawn great attention in software engineering, and several benchmark datasets have been introduced. However, existing repository-level code completion benchmarks usually focus on a limited number of languages (<5), which cannot evaluate the general code intelligence abilities across different languages for existing code Large Language Models (LLMs). Besides, the existing benchmarks usually report overall average scores of different languages, where the fine-grained abilities in different completion scenarios are ignored. Therefore, to facilitate the research of code LLMs in multilingual scenarios, we propose a massively multilingual repository-level code completion benchmark covering 18 programming languages (called M2RC-EVAL), and two types of fine-grained annotations (i.e., bucket-level and semantic-level) on different completion scenarios are provided, where we obtain these annotations based on the parsed abstract syntax tree. Moreover, we also curate a massively multilingual instruction corpora M2RC- INSTRUCT dataset to improve the repository-level code completion abilities of existing code LLMs. Comprehensive experimental results demonstrate the effectiveness of our M2RC-EVAL and M2RC-INSTRUCT.