本文作者 | 通义千问团队
今天,我们很高兴开源“强大”、“多样”、“实用”的Qwen2.5-Coder全系列模型,致力于持续推动Open CodeLLMs的发展。
- 强大:Qwen2.5-Coder-32B-Instruct成为目前SOTA的开源代码模型,代码能力追平GPT-4o,展现出强大且全面的代码能力,同时具备良好的通用和数学能力。
- 多样:上个月我们开源了1.5B、7B两个尺寸,本次开源又带来0.5B、3B、14B、32B四个尺寸,截至目前,Qwen2.5-Coder已经覆盖了主流的六个模型尺寸,以满足不同开发者的需要。
- 实用:我们探索了Qwen2.5-Coder在代码助手和Artifacts两种场景下的实用性,并用一些样例来展示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分,在Aider上的表现与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在MdEval上取得了75.2分,在所有开源模型中排名第一。
- 人类偏好对齐:为了检验Qwen2.5-Coder-32B-Instruct在人类偏好上的对齐表现,我们构建了一个来自内部标注的代码偏好评估基准Code Arena(类似Arena Hard)。我们采用GPT-4o作为偏好对齐的评测模型,采用 “A vs. B win”的评测方式——即在测试集实例中,模型A的分数超过模型B的百分比。下图结果展现出Qwen2.5-Coder-32B-Instruct在偏好对齐方面的优势。
多样:
丰富的模型尺寸
Qwen2.5-Coder开源模型家族包含0.5B、1.5B、3B、7B、14B、32B六个尺寸,不仅能够满足开发者在不同资源场景下的需求,还能给研究社区提供良好的实验场。下表是详细的模型信息:
我们一直相信Scaling Law哲学。我们评估了不同尺寸的Qwen2.5-Coder模型在所有数据集上的表现,以验证Scaling在Code LLMs上的有效性。
对于每一个尺寸,我们都开源了Base和Instruct模型,其中,Base模型可作为开发者微调模型的基座,Instruct模型是可以直接聊天的官方对齐模型。
下面是不同尺寸Base模型的表现:
下面是不同尺寸Instruct模型的表现:
为了更加直观,我们展示了不同尺寸Qwen2.5-Coder模型和其他开源模型在核心数据集上的对比。
- 针对Base模型,我们选择MBPP-3shot作为评估指标,我们大量的实验表明,MBPP-3shot更适合评估基础模型,且能够和模型的真实效果有较好的相关性。
- 针对Instruct模型,我们选择LiveCodeBench最近4个月(2024.07-2024.11)的题目作为评估,这些最新公布的、不可能泄露到训练集的题目能够反映模型的OOD能力。
模型尺寸和模型效果之间存在预期中的正相关关系,并且,Qwen2.5-Coder在所有尺寸下都取得了SOTA表现,这鼓励我们继续探索更大尺寸的Coder模型。
实用:
遇见Cursor和Airfacts
实用的Coder一直是我们的愿景。为此,我们探索了Qwen2.5-Coder模型在代码助手和Artifacts场景下的实际应用。
当Qwen2.5-Coder遇见Cursor:
智能代码助手已经得到广泛应用,但目前大多依赖闭源模型,我们希望Qwen2.5-Coder的出现能够为开发者提供一个友好且强大的选择。
下面是Qwen2.5-Coder在Cursor场景下的一个例子:
另外,Qwen2.5-Coder-32B在预训练模型上就展现出强大的代码补全能力,在Humaneval-Infilling、CrossCodeEval、CrossCodeLongEval、RepoEval、SAFIM等5个评测集上都取得了SOTA表现。
为了保持公平对比,我们将最大序列长度控制在8k,采用Fill-in-the-Middle模式进行测试。在CrossCodeEval、CrossCodeLongEval、RepoEval、Humaneval-Infilling4个评测集中,我们评估了生成内容与真实标签是否绝对相等(Exact Match);在SAFIM中,我们采用1次执行成功率(Pass@1)进行评价。
当Qwen2.5-Coder遇见Artifacts:
Artifacts是代码生成的重要应用之一,能够帮助用户创作一些适合可视化的作品。我们选择Open WebUI探索Qwen2.5-Coder在Artifacts场景下的潜力,下面是一些具体的例子:
我们即将在通义官网(tongyi.aliyun.com)上线代码模式,支持一句话生成网站、小游戏和数据图表等各类可视化应用。欢迎大家体验!
模型许可
Qwen2.5-Coder-0.5B、1.5B、7B、14B、32B模型均采用Apache 2.0许可证,3B模型使用“Research Only”许可。
What's Next for Qwen-Coder
相信我们这次的发布能够真正帮助到开发者,和社区一起探索更多有趣的应用场景。另外,我们正在深入探索以代码为中心的强大推理模型,相信很快能和大家见面!
- Qwen2.5-Coder模型开源地址:
- 魔搭社区ModelScope:https://modelscope.cn/collections/Qwen25-Coder-9d375446e8f5814a
- HuggingFace:https://huggingface.co/collections/Qwen/qwen25-coder-66eaa22e6f99801bf65b0c2f
- GitHub:https://github.com/QwenLM/Qwen2.5-Coder
- Qwen2.5-Coder-Artifacts体验链接:https://modelscope.cn/studios/Qwen/Qwen2.5-Coder-Artifacts
- Qwen/Qwen2.5-Coder-demo:https://modelscope.cn/studios/Qwen/Qwen2.5-Coder-demo