# 2402.16694_HumanEval-XL: A Multilingual Code Generation Benchmark for Cross-lingual Natural Language Generalization * [https://arxiv.org/abs/2402.16694](https://arxiv.org/abs/2402.16694) * GitHub: [https://github.com/FloatAI/humaneval-xl](https://github.com/FloatAI/humaneval-xl) * 组织: ♡University of Copenhagen; ♠Baidu Inc. * 引用:43(2025-07-08) * 说明: * 语言:23种自然语言 * 编程:12种编程语言 * 基于英文的 HumanEval 基准构建的,包含了 31 种语言版本的自然语言描述。 * 共包含 22,080个提示,平均每个问题有 8.33个测试用例 ## A Multilingual Code Generation Benchmark for Cross-lingual Natural Language Generalization 该论文介绍了 **HumanEval-XL**,这是一个用于评估跨语言自然语言泛化能力的多语言代码生成基准。论文的主要目的是测试代码生成模型在面对不同语言的自然语言指令时,是否能够生成正确的代码。以下是章节内容的总结: 1. **背景与动机**:当前的代码生成模型大多基于英文数据训练和评估,缺乏对多语言支持的系统性研究。为了推动跨语言泛化能力的研究,作者提出了 HumanEval-XL 基准。 2. **数据构建**:HumanEval-XL 是基于英文的 HumanEval 基准构建的,包含了 31 种语言版本的自然语言描述。每种语言的描述都对应相同的功能性 Python 代码任务,确保任务的统一性。 3. **评估设置**:论文提出了两种主要的评估设置: - **Monolingual Setting(单语设置)**:模型在源语言上训练,并在源语言上测试。 - **Cross-lingual Setting(跨语言设置)**:模型在一种语言上训练,在另一种语言上测试,以评估其跨语言泛化能力。 4. **实验与结果**: - 作者在多个主流代码生成模型(如 Codex、InCoder、StarCoder)上进行了实验。 - 结果显示,大多数模型在源语言上表现较好,但在跨语言设置中性能显著下降。 - 某些语言的泛化能力优于其他语言,这可能与语言的相似性、数据资源丰富程度等因素有关。 5. **挑战与分析**: - 作者分析了跨语言泛化失败的原因,包括语言结构差异、语义歧义和任务复杂度等。 - 提出了一些可能的方向,如增加多语言训练数据、改进模型的跨语言理解能力等。 6. **结论与展望**: - HumanEval-XL 为评估和提升代码生成模型的跨语言泛化能力提供了一个可靠、统一的基准。 - 作者希望该基准能促进多语言代码生成和跨语言模型研究的发展。 总结:**HumanEval-XL** 是一个用于评估模型在多种语言描述下生成代码能力的基准,填补了当前研究在跨语言泛化方面的空白,为模型的多语言支持能力研究提供了有力工具。 ## Abstract 该章节提出了一项名为 **HumanEval-XL** 的多语言代码生成基准测试,旨在填补当前多语言大型语言模型(LLMs)评估中的空白。现有基准主要集中在将英文提示翻译为多种编程语言代码,或局限于有限的自然语言(NL)范围,未能全面覆盖“大规模多语言NL到多语言代码”的生成能力。为解决这一问题,HumanEval-XL 构建了一个包含 **23种自然语言** 和 **12种编程语言** 之间映射关系的测试集合,共包含 **22,080个提示**,平均每个问题有 **8.33个测试用例**。通过提供多语言并行数据,该基准为评估多语言LLMs的自然语言理解能力提供了一个全面的平台。这项工作填补了多语言代码生成中自然语言泛化能力评估的空白,并提供了公开的代码和数据资源。关键词包括:代码生成基准、程序合成、代码LLM、多语言NLP。 ## 1.   Introduction 本章节主要介绍了当前大规模语言模型(LLMs)在代码生成领域的研究现状,并提出了一项新的多语言评估基准 HumanEval-XL。 首先,文章指出,尽管LLMs在代码生成方面已取得显著进展,但大多数研究仍集中在英文环境下生成Python代码。近年来,研究逐渐扩展到多语言编程语言(PLs)以及不同自然语言(NLs)的代码生成,例如西班牙语和俄语,但覆盖的语言种类仍较为有限,评估体系也不够全面,难以有效衡量模型在跨语言自然语言到代码生成任务中的表现。 为弥补这一不足,作者提出了一项名为 HumanEval-XL 的大规模多语言基准,涵盖了23种自然语言和12种编程语言,实现了跨语言数据集的平行对齐,从而更全面地评估LLMs在多语言代码生成中的跨语言泛化能力。 文章进一步通过广泛的实验,评估了三类LLM(CodeT5+、CodeGen2、GPT-3.5、GPT-4)在不同参数规模下的多语言代码生成能力。研究结果表明,模型规模的显著增加有助于提升多语言代码生成的性能,同时专门针对代码的预训练在代码生成中起着关键作用。然而,在涉及23种自然语言的评估中,当前LLMs仍然面临挑战,特别是在不同语言中准确理解并生成等义代码方面表现不佳。 ## 2.   Related work 本节综述了与多语言代码生成相关的现有研究工作,主要从两个方面进行总结: ### 1. 代码生成基准测试(Code Generation Benchmarks) 现有大多数研究集中于**以英语为中心的Python代码生成**,代表性基准包括: - HumanEval - MBPP - APPS - DSP - MTPB - DS-1000 这些基准主要用于评估模型在英语指令下生成Python代码的能力。尽管有研究尝试将HumanEval扩展至多种编程语言(如Athiwaratkun和Zheng等人),但多语言自然语言(NL)与多语言编程语言(PL)的结合仍较为有限。例如,ODex覆盖了4种自然语言和Python,但测试用例数量较少(平均1.8个)。相比之下,本文提出了一项**全新的多语言代码生成基准**,连接了**23种自然语言**与**12种编程语言**,并提供了**22,080个提示**,平均每个提示包含**8.33个测试用例**,显著提升了评估的全面性。 ### 2. 多语言代码大模型(Multilingual Code LLMs) 当前的大语言模型(LLMs)在预训练阶段通常会使用**多语言的自然语言和编程语言数据**,以提升其跨语言能力。研究者对多语言编程语言(如Fried、Wang、Nijkamp等人)和多语言自然语言与编程语言的结合进行了深入探讨。例如: - **ERNIE-Code**:在116种自然语言和6种编程语言上进行预训练。 - **BLOOM**:覆盖46种自然语言和13种编程语言,但其在Python代码生成上的表现一般。 - **GPT-3.5和GPT-4**:也支持多种语言,但尚未在多语言代码生成方面进行全面评估。 当前的不足在于,**缺乏一个真正支持多语言输入与多语言输出的代码生成基准**,无法系统评估模型在跨语言自然语言理解与代码生成中的能力。本文提出的基准正是为填补这一空白而设计,旨在全面评估大模型在多语言代码生成任务中的表现。 ## 3.   HumanEval-XL ### 本章节总结:HumanEval-XL 的设计与构建 #### 一、设计原则(Design Principles) HumanEval-XL 的设计旨在评估大语言模型(LLMs)在跨语言自然语言(NL)到编程语言(PL)生成任务中的泛化能力。其核心设计原则包括: 1. **任务复杂性** 选择代码生成任务作为主要测试任务,因其具有较高难度,能够有效评估模型的能力。使用 pass@k 指标衡量模型生成代码的通过率,从而评估其在编程任务中的表现。 2. **语言多样性** 为了构建全面的评估基准,HumanEval-XL 包含多种自然语言和编程语言的组合。所有语言的测试案例保持平行结构,以确保公平比较。 3. **可访问性** 所有数据均来自可自由使用和再分发的开源数据,便于研究和扩展。 #### 二、数据集构建(Dataset Construction) HumanEval-XL 的构建过程分为四个主要阶段: 1. **自然语言提示的提取与封装** 从原始英文问题中提取自然语言部分,并将其格式化以便后续翻译。 2. **翻译与回译** 使用 GPT-4 将英文提示翻译成23种语言,并回译为英文,用于后续质量评估。 3. **BERTScore 质量评估** 通过计算回译文本与原英文的 BERTScore 相似度(阈值 > 0.95),筛选高质量翻译。若未达标,则重新翻译,最多进行3次迭代。 4. **质量控制** 对通过 BERTScore 筛选的翻译进行启发式检查与人工抽查,确保翻译质量。最终筛选出高质量的多语言编程问题。 #### 三、语言与编程语言覆盖(PLs and NLs) - **自然语言(NLs)**:覆盖 23 种语言,分布于 11 个语系(如印欧语系、乌拉尔语系、藏缅语系等),体现广泛的语言多样性。 - **编程语言(PLs)**:涵盖 12 种主流编程语言(如 Python、Java、JavaScript 等),与 Multilingual HumanEval 一致。 #### 四、数据集对比(Comparison with Existing Datasets) HumanEval-XL 在多个方面优于现有代码生成基准数据集: | 指标 | HumanEval-XL | 其他数据集 | |------|---------------|------------| | 样本数量 | 22,080 | 远低于其他数据集(如 HumanEval 仅 164,MBPP 仅 974) | | 支持的 PL 数量 | 12 | 多数仅支持 1 种 | | 支持的 NL 数量 | 23 | 多数仅支持 1 种或少量 | | 平行支持 | ✔ | 多数为 ✗ | | 平均测试用例数 | 8.3 | 介于 1.6 到 13.2 之间 | | 数据来源 | 基于 Multilingual HumanEval,人工编写 | 多样,包括竞赛题、GitHub、Stack Overflow 等 | #### 五、总结 HumanEval-XL 是一个专门用于评估跨语言自然语言代码生成能力的多语言基准测试集。其在任务复杂性、语言多样性、数据可访问性以及数据质量方面都有显著优势,为研究 LLM 跨语言泛化能力提供了重要工具。 ## 4.   Experiments 本章主要围绕实验部分展开,研究不同大语言模型(LLMs)在多语言代码生成任务中的表现。作者提出了一个多语言代码生成基准(HumanEval-XL),并评估了多个模型在12种编程语言和23种自然语言组合下的性能,重点分析了模型在跨语言通用性上的能力差异。 ### 核心内容总结如下: 1. **实验设置:** - 评估了四类模型:CodeT5+(220M、770M、2B)、CodeGen2(1B、3.7B、7B、16B)、GPT-3.5 和 GPT-4。 - CodeT5+ 和 CodeGen2 是专门用于代码生成的模型,而 GPT 系列是通用语言模型。 - 由于资源限制,所有实验仅报告 pass@1 指标。 - 图表展示了各大模型在不同编程语言上的性能表现。 2. **实验结果:** - GPT-4 在绝大多数语言对中表现最优,明显优于其他模型,显示其强大的跨语言代码生成能力。 - CodeGen2 表现优于 CodeT5+,尤其在参数规模增大时,性能提升明显。CodeT5+ 的性能受限于其 encoder-decoder 架构。 - Python 是所有模型中最容易处理的编程语言,而 Scala 和 Go 的表现较差,表明模型在复杂语言上的泛化能力仍有待提升。 - GPT-3.5 的性能虽参数规模较大,但不如 CodeGen2-16B,强调了代码训练数据的重要作用。 3. **分析与讨论:** - 将23种自然语言按照资源丰富度分为三类(Class 3、4、5),发现模型在资源较少的语言上表现普遍较差。 - 同一模型家族中,不同参数规模的模型在性能上呈现高度相关性,支持“模型规模越大性能越好”的扩展规律。 - 不同家族的模型之间缺乏相关性,说明模型架构和训练数据对性能有显著影响。 - 将语言按语系分类后,发现 Afro-Asiatic、Indo-European(希腊语支)、Iranian、Turkic 等语系的语言表现较弱,说明当前 LLM 在语义理解上仍存在跨语系的挑战。 - 总体来看,当前 LLM 在面对不同语言的相同语义描述时,仍难以准确理解并生成正确的代码,暴露出跨语言泛化能力的不足。 ### 总结: 本章通过实验和分析揭示了当前大语言模型在多语言代码生成任务中的表现差异。GPT-4 表现最优,CodeT5+ 因架构限制表现不佳,而 CodeGen2 在参数增加时提升显著。实验还表明,语言资源丰富度和语系对模型性能有显著影响,揭示了当前模型在跨语言语义理解方面仍然存在挑战。 ## 5.   Conclusion 本章节总结如下: 作者提出了 **HumanEval-XL**,这是一个大规模的多语言代码生成基准测试,用于评估大语言模型(LLMs)在跨语言自然语言(NL)泛化方面的能力。受“回译”方法的启发,作者设计了一个迭代过程,成功构建了一个涵盖12种编程语言(PLs)和23种自然语言(NLs)的坚固基准。研究结果表明,实现有效的跨语言自然语言泛化仍然是一个重大挑战,也为未来的研究指明了一个重要的研究方向。 ## Acknowledgments 本章节为致谢部分,主要内容如下: 作者感谢所有匿名审稿人提出的深刻意见和反馈,认为他们的专业知识和细致批评对完善本研究起到了重要作用。同时,作者指出本研究部分得到了欧盟“地平线欧洲”计划资助的项目DisAI的支持,该项目旨在通过人工智能和语言技术提升科学卓越性和创造力,以应对虚假信息问题,项目编号为101079164。 ## Appendix A Experiment Settings 本附录介绍了实验中的设置和评估模型情况。在推理过程中,所有模型统一采用 top-p 采样方法,其中 top-p 值设为 0.95,温度设为 0.2,以确保跨模型结果的可比性。评估的模型涵盖了不同规模的模型,包括: - CodeGen2 系列(参数规模为 1B、3.7B、7B 和 16B); - CodeT5+ 系列(参数规模为 220M、770M 和 2B); - OpenAI 的 GPT-3.5 和 GPT-4 模型。 通过这一多样化的模型集合,能够全面评估模型规模对程序合成任务性能的影响。同时,遵循 Athiwaratkun 等人的方法,仅保留第一个生成的函数作为停止条件。 ## Appendix B Comprehensive Experiment Results 本论文附录B总结了多种模型在不同编程语言上的全面实验结果。这些模型包括不同规模的 CodeGen2(1B, 3.7B, 7B, 16B)、CodeT5+(220M, 770M, 2B)和 GPT(3.5, 4)。实验结果通过多个表格详细展示,涵盖 Python、Java、JavaScript、C#、Go、Kotlin、Perl、PHP、Ruby、Scala、Swift 和 TypeScript 等编程语言,且每种语言均测试了23种自然语言的性能。 主要结论如下: 1. **模型性能差异显著**: - GPT-4 在绝大多数任务和语言中表现最好,远超 GPT-3.5、CodeGen2 和 CodeT5+。 - CodeGen2 一般比 CodeT5+ 模型表现更好,尤其是在大模型(如 7B 和 16B)时。 - 模型规模的增加通常带来性能的提升,但提升幅度随模型大小而逐渐减小。 2. **语言相关性**: - 对于各种编程语言,模型在英文输入上普遍表现最佳。 - 表现较差的语言包括阿拉伯语、土耳其语和越南语等非主流语言。 3. **模型表现趋势**: - GPT-4 在不同编程语言和自然语言中表现非常稳定,通常在70%以上。 - CodeGen2 的 16B 模型在多数任务中优于较小的 CodeGen2 模型。 - CodeT5+ 的 2B 模型在某些语言中表现优于 770M 和 220M 模型,但整体性能仍低于 CodeGen2 和 GPT 系列。 4. **语言难度**: - 结果表明,不同编程语言的难度不同。例如,Scala 和 Ruby 的任务对所有模型来说都较难,而 JavaScript 和 Python 表现相对较好。 - 某些语言在某些模型中表现极差(例如 Scala 的 CodeT5+ 和 CodeGen2 模型几乎为 0%)。 5. **非主流语言挑战**: - 对于非主流语言(如 Afrikaans、Tagalog、Estonian),所有模型的性能都较低,尤其是 CodeT5+ 和 CodeGen2 模型。 - GPT-4 在这些语言上表现较好,但仍然远低于英文任务。 6. **模型规模与性能的正相关**: - 模型参数的增加通常带来性能的提升,但提升幅度随着规模的增大而逐渐减小(边际递减)。 综上所述,GPT-4 在所有任务中表现最佳,尤其在多种自然语言和编程语言的组合中具有卓越的适应性。而 CodeGen2 和 CodeT5+ 模型的性能则随着模型规模的增加而提升。