1.概述
论文地址:https://arxiv.org/pdf/2409.12186
源码地址:https://github.com/qwenlm/qwen2.5-coder
Qwen2.5-Coder 是其前身 CodeQwen1.5 的重大演进,专门设计用于执行代码生成和代码修改等编程相关任务。该系列包括两个型号,参数分别为 15 亿(15 亿)和 70 亿(70 亿)。
2.算法架构
Qwen2.5-Coder 是一个专门用于代码生成的大型语言模型,它基于 "Qwen2.5 "架构,并在超过 5.5 万亿个词库的大型数据集上进行了预训练。该模型的一个核心特点是能够处理各种与编程相关的任务,如代码生成、推理和编辑。例如,HumanEval 和 MBPP 等基准测试表明,该模型的性能优于其他大规模模型,尤其是在包括 Python 在内的多种编程语言中具有很强的通用性。此外,通过引入一种名为 “**中间填充”(FIM)**的技术,该系统还能在代码部分缺失的情况下生成补语。这样就可以预测和编辑缺失的代码部分。
Qwen2.5-Coder 在逐个文件和逐个版本库的基础上进行了预训练,在处理长代码或整个版本库时工作效率很高。特别是,标记的最大处理长度扩展到 32,768 个标记,以处理整个版本库,从而可以比以前的模型处理更大的上下文。数学数据也被纳入训练中,以处理数学问题,使其在代码生成之外,也能出色地进行数学推理。
3.测试实验
实验旨在验证 Qwen2.5-Coder 的性能,并通过多个基准进行了验证。特别是使用几个关键数据集对其进行了评估,以评估代码生成、代码推理和编辑任务的准确性。
首先,代码生成的性能由 "HumanEval "和 "MBPP "等基准进行评估。HumanEval以Python编程任务为基础,提供了164个问题,每个问题都有函数签名和描述;MBPP则更加多样化,提供了974个问题和多个测试案例,以检查模型的性能。**在这些基准测试中,Qwen2.5-Coder 的准确率高于其他模型,尤其是在 7B 模型上。**例如,Qwen2.5-Coder 在 HumanEval 中的得分率达到了 61.6%,与其他类似规模的模型相比,Qwen2.5-Coder 的表现非常出色。
其次,还考察了代码补全能力。这里使用了一种称为 “中间补全”(FIM)的技术,该技术评估模型在代码缺失时补全缺失代码的能力。在这项评估中,Qwen2.5-Coder 在几种编程语言(Python、Java 和 JavaScript)中都能高精度地预测缺失部分,与其他大型模型相比也毫不逊色。
此外,还对代码推理进行了评估。在这里,"CRUXEval "基准用于测试模型能否准确预测给定代码的输出和输入。特别是在预测代码执行结果的 "输入-CoT "任务和根据输出预测代码输入的 "输出-CoT "任务中,Qwen2.5-Coder 的表现优于其他同等规模的模型。
最后,还对数学推理能力进行了评估。在此,我们使用了包含数学问题(如 MATH 和 GSM8K)的数据集来证实Qwen2.5-Coder 不仅在代码生成方面**功能强大,在解决数学问题方面也是如此:**7B 模型在 GSM8K 方面显示出了非常高的准确率,达到 83.9%,比 7B 模型有了显著提高。
这些结果表明,Qwen2.5-Coder 不仅在代码生成、补全和推理方面具有出色的能力,而且在数学问题求解方面也具有出色的能力,在各种任务中都有很高的表现。
4.图表说明
该图显示了 Qwen2.5-Coder 模型在不同评估基准上的性能。Qwen2.5-Coder 位于图表中央,周围是以圆圈排列的不同测试结果。每个测试将 Qwen2.5-Coder 的性能与其他型号进行比较。
具体而言,Qwen2.5-Coder 7B-Instruct 显示为蓝紫色,其他评估包括 DeepSeek-Coder 和 CodeStral 等不同模型。测量的基准包括 HumanEval、MBPP、CRUXEval、MultiPL-E 和 LiveCodeBench,每个基准都测量编程任务的各种能力。
这些数字显示了每个模型在每个基准测试中取得的分数,证明 Qwen2.5-Coder 7B-Instruct 在许多测试中都表现出色。例如,它在 HumanEval 中获得了 84.1 的高分,这表明它的整体能力出众。