跳到正文
原文
通义千问 Qwen:Blog·· 2024-11-12精选AI 评分65

通义千问开源 Qwen2.5-Coder 系列代码模型,32B 版编码能力对标 GPT-4o

Qwen2.5-Coder Series: Powerful, Diverse, Practical.

文章要点
  • 1通义千问开源 Qwen2.5-Coder 系列,官方称 32B-Instruct 为开源代码模型 SOTA,编码对标 GPT-4o
  • 2本次新增 0.5B/3B/14B/32B 四档尺寸,合计覆盖六个规格,除 3B 外均采用 Apache 2.0 许可
  • 3官方口径下 32B 在 Aider 代码修复得 73.7 分与 GPT-4o 相当,MdEval 多语言修复 75.2 分居开源第一
  • 4官方演示其接入 Cursor 代码助手与 Open WebUI 的 Artifacts 场景,Base 与 Instruct 版本同步开源
决策要点

开源代码模型在编码基准上追平 GPT-4o,企业搭建代码助手多了自托管选项,对闭源 API 的依赖可以降低。

  • 影响:研发团队可把代码补全和修复的部分负载转到自托管模型,代码数据留在内部;六个尺寸便于按算力预算选型;官方分数为自报口径,落地效果要结合自家代码库评估。
  • 参考:可考虑选一个内部代码补全或修复场景做小规模对比,记录与现用闭源服务的质量和成本差异;值得先盘点 GPU 资源能否承载 7B 到 32B 档位的部署。
  • 依据:Aider 73.7 分、MdEval 75.2 分等数字来自通义千问官方博客,官方口径,暂无独立验证。
正文 · AI 翻译

GITHUB HUGGING FACE MODELSCOPE KAGGLE DEMO DISCORD

简介

今天,我们很高兴地开源“强大”、“多样”和“实用”的 Qwen2.5-Coder 系列,致力于持续推动开放代码大语言模型(Open CodeLLMs)的发展。

  • 强大:Qwen2.5-Coder-32B-Instruct 已成为当前 SOTA 的开源代码模型,编程能力媲美 GPT-4o。在展现出强大而全面的代码能力的同时,它还具备良好的通用能力和数学能力;
  • 多样:在此前开源的 1.5B / 7B 两个尺寸的基础上,本次发布带来了四个模型尺寸,包括 0.5B / 3B / 14B / 32B。截至目前,Qwen2.5-Coder 已覆盖六个主流模型尺寸,以满足不同开发者的需求;
  • 实用:我们在代码助手和 Artifacts 两个场景中探索了 Qwen2.5-Coder 的实用性,并通过一些示例展示了 Qwen2.5-Coder 在实际场景中的潜在应用;

强大:代码能力达到开源模型中的 SOTA 水平

  • 代码生成:Qwen2.5-Coder-32B-Instruct 作为本次开源发布的旗舰模型,在多个流行的代码生成基准(EvalPlus、LiveCodeBench、BigCodeBench)上取得了开源模型中的最佳性能,并与 GPT-4o 具有相当的竞争力。

  • 代码修复:代码修复是一项重要的编程技能。Qwen2.5-Coder-32B-Instruct 可以帮助用户修复代码中的错误,让编程更加高效。Aider 是一个流行的代码修复基准,Qwen2.5-Coder-32B-Instruct 在其上获得了 73.7 分,表现与 GPT-4o 相当。

  • 代码推理:代码推理是指模型学习代码执行过程并准确预测模型输入和输出的能力。最近发布的 Qwen2.5-Coder-7B-Instruct 已经在代码推理方面展现出令人印象深刻的表现,而这个 32B 模型则更进一步。

  • 多种编程语言:一个智能编程助手应该熟悉所有编程语言。Qwen2.5-Coder-32B-Instruct 在 40 多种编程语言上表现出色,在 McEval 上获得 65.9 分,并在 Haskell、Racket 等语言中有令人印象深刻的表现,这得益于我们在预训练阶段独特的数据清洗和均衡处理。

此外,Qwen2.5-Coder-32B-Instruct 的多语言代码修复能力同样令人印象深刻,帮助用户理解并修改他们熟悉的编程语言,显著降低了学习不熟悉语言的成本。与 McEval 类似,MdEval 是一个多语言代码修复基准,Qwen2.5-Coder-32B-Instruct 在其上获得 75.2 分,在所有开源模型中排名第一。

  • 人类偏好对齐:为了评估 Qwen2.5-Coder-32B-Instruct 与人类偏好的对齐性能,我们构建了一个内部标注的代码偏好评估基准,称为 Code Arena(类似于 Arena Hard)。我们使用 GPT-4o 作为偏好对齐的评估模型,采用“A vs. B 胜出”的评估方法,即衡量测试集中模型 A 的得分超过模型 B 的实例百分比。以下结果显示了 Qwen2.5-Coder-32B-Instruct 在偏好对齐方面的优势。

多样:丰富的模型尺寸

此次,Qwen2.5-Coder 开源了丰富多样的模型尺寸,包括 0.5B/1.5B/3B/7B/14B/32B,不仅满足了开发者在不同资源场景下的需求,也为研究社区提供了一个良好的实验平台。下表提供了详细的模型信息:

模型参数量非嵌入参数量层数注意力头数(KV)共享嵌入上下文长度许可证
Qwen2.5-Coder-0.5B0.49B0.36B2414 / 2是32KApache 2.0
Qwen2.5-Coder-1.5B1.54B1.31B2812 / 2是32KApache 2.0
Qwen2.5-Coder-3B3.09B2.77B3616 / 2是32KQwen Research
Qwen2.5-Coder-7B7.61B6.53B2828 / 4否128KApache 2.0
Qwen2.5-Coder-14B14.7B13.1B4840 / 8否128KApache 2.0
Qwen2.5-Coder-32B32.5B31.0B6440 / 8否128KApache 2.0

我们始终坚信 Scaling Law 的理念。我们在所有数据集上评估了不同尺寸 Qwen2.5-Coder 的性能,以验证 Scaling 在代码大模型中的有效性。针对每个尺寸,我们同时开源了 Base 和 Instruct 模型,其中 Instruct 模型作为官方对齐模型,可以直接对话;Base 模型则作为开发者微调自己模型的基础。

以下是不同尺寸 Base 模型的性能表现:

以下是不同尺寸 Instruct 模型的性能表现:

我们展示了不同尺寸的 Qwen2.5-Coder 与其他开源模型在核心数据集上的对比。

  • 对于 Base 模型,我们选择 MBPP-3shot 作为评估指标。我们的大量实验表明,MBPP-3shot 更适合评估基础模型,并且与模型的实际性能具有良好的相关性。
  • 对于 Instruct 模型,我们选取了 LiveCodeBench 最近 4 个月(2024.07 - 2024.11)的题目作为评估,这些是最新发布的题目,不可能泄漏到训练集中,能够反映模型的 OOD 能力。

模型尺寸与模型性能之间存在正相关关系,Qwen2.5-Coder 在所有尺寸上都取得了 SOTA 性能,这激励我们继续探索更大尺寸的 Coder。

实用:邂逅 Cursor 与 Artifacts

一个实用的 Coder 一直是我们的愿景,为此,我们探索了 Qwen2.5-Coder 在代码助手和 Artifacts 场景中的实际表现。

Qwen2.5-Coder 🤝 Cursor

代码助手已经得到广泛使用,但大多数目前依赖于闭源模型。我们希望 Qwen2.5-Coder 的出现能为开发者提供一个友好而强大的选择。以下是 Qwen2.5-Coder 在 Cursor 中的一个示例。

示例:Qwen2.5-Coder 🤝 Cursor

此外,Qwen2.5-Coder-32B 在预训练模型上展现了强大的代码补全能力,在共计 5 个基准测试中取得了 SOTA 性能:Humaneval-Infilling、CrossCodeEval、CrossCodeLongEval、RepoEval 和 SAFIM。为保证公平比较,我们将最大序列长度控制在 8k,并使用 Fill-in-the-Middle 模式进行测试。在 CrossCodeEval、CrossCodeLongEval、RepoEval 和 Humaneval-Infilling 这四个评测集中,我们评估生成内容是否与真实标签完全一致(Exact Match)。在 SAFIM 中,我们采用一次性执行成功率(Pass@1)进行评估。

Qwen2.5-Coder 🤝 Artifacts

Artifacts 是代码生成的一项重要应用,可以帮助用户创作可视化作品。我们选择了 Open WebUI 来探索 Qwen2.5-Coder 在 Artifacts 场景中的潜力,以下是一些具体示例。

示例:三体问题模拟 下一个

我们即将在通义官网 https://tongyi.aliyun.com 上线代码模式,支持一键生成网站、小游戏、数据图表等多种可视化应用,欢迎大家前来体验!

模型许可证

Qwen2.5-Coder 0.5B / 1.5B / 7B / 14B / 32B 采用 Apache 2.0 许可证,而 3B 采用 Qwen-Research 许可证;

Qwen-Coder 的下一步计划是什么?

我们相信本次发布能够切实帮助开发者,并与社区一起探索更多有趣的应用场景。此外,我们正在深入研究以代码为核心的强大推理模型,相信很快就能与大家见面!

引用

@article{hui2024qwen2,
  title={Qwen2. 5-Coder Technical Report},
  author={Hui, Binyuan and Yang, Jian and Cui, Zeyu and Yang, Jiaxi and Liu, Dayiheng and Zhang, Lei and Liu, Tianyu and Zhang, Jiajun and Yu, Bowen and Dang, Kai and others},
  journal={arXiv preprint arXiv:2409.12186},
  year={2024}
}
@article{yang2024qwen2,
  title={Qwen2 technical report},
  author={Yang, An and Yang, Baosong and Hui, Binyuan and Zheng, Bo and Yu, Bowen and Zhou, Chang and Li, Chengpeng and Li, Chengyuan and Liu, Dayiheng and Huang, Fei and others},
  journal={arXiv preprint arXiv:2407.10671},
  year={2024}
}

来源:通义千问 Qwen:Blog · qwenlm.github.io