Qwen2.5-Coder - 阿里Qwen团队开源的全系代码模型,覆盖六个主流模型尺寸
发布于 2024-09-19 · Qwen2.5-Coder 是阿里Qwen 团队推出的全系列代码生成模型,推动开源代码语言模型的发展。在代码生成、代码推理、代码修复等任务上表现出色。系列涵盖了不同规模的模型1.5B/7B/0.5B/3B/14B/32B的六个主流模型尺寸,满足不同开发者的需求。
Qwen2.5-Coder是什么
Qwen2.5-Coder 是阿里 Qwen 团队推出的代码生成模型系列,覆盖了多个尺寸。在代码生成、代码推理、代码修复等任务上表现不错。系列覆盖 1.5B/7B/0.5B/3B/14B/32B 六个主流尺寸,不同规模的开发者都能找到合适的。
Qwen2.5-Coder 的旗舰是 Qwen2.5-Coder-32B-Instruct,在多个主流代码生成基准上拿到了开源模型里的最好成绩,代码能力与 GPT-4o 相当。它在生成、修复、推理三方面都很能打,支持超过 40 种编程语言,McEval 和 MdEval 上的成绩也不错。
Qwen2.5-Coder 在人类偏好对齐上下了功夫,内部用标注过的 Code Arena 基准做过评估。参数配置和许可信息也有列出:0.5B、1.5B、7B、14B 和 32B 采用 Apache 2.0 许可证,3B 则是研究用途许可证。
Qwen2.5-Coder的主要功能
- 代码生成:Qwen2.5-Coder 按给定的编程提示生成代码片段,支持多种语言。
- 代码推理:能读懂代码逻辑,做推理,再给出相关建议。
- 代码修复:找出代码里的错误并修掉。
- 多语言支持:支持多达 92 种编程语言,Python、Java、C++ 这些常见的和小众语言都算在内。
- 模型尺寸多样性:Qwen2.5-Coder 从 0.5B 到 32B 一共六个主流尺寸,开发者可以按需要选。
- 指令调优:Qwen2.5-Coder-Instruct 经过指令微调,多个任务上的表现又有提升。
- 数学能力:Qwen2.5-Coder-Instruct 在代码和数学任务上都行,编程和数学能力能结合起来用。
Qwen2.5-Coder的技术原理
- 自回归语言模型:Qwen2.5-Coder 是自回归模型,根据已有文本预测下一个最可能的 token,文本生成和补全因此比较稳。
- 模型架构:Qwen2.5-Coder 基于 Qwen2.5 架构,是 Transformer 的一个变种,参数规模有 1.5B、7B、32B 等。不同尺寸在隐藏层大小、层数、查询头数量、键值头数量、头大小、中间层大小和嵌入层绑定上会有差别。
- 预训练数据处理:Qwen2.5-Coder 的预训练数据有源代码、文本-代码混合数据、合成数据、数学数据和文本数据,都经过清洗和格式化。配比是 70% 代码、20% 文本、10% 数学数据。
- 训练策略:
- 文件级预训练:这一阶段让模型处理单个文件,从中学编程语言的基础知识和结构,数据是清洗过的代码文件。
- 仓库级预训练:这一阶段把长上下文能力拉起来,上下文长度扩到 32K tokens,同时调整 Rotary Position Embedding(RoPE)的基础频率,并用 YARN 机制处理更长的序列。
- 后训练与指令调优:
- 指令数据生成:靠特定语言智能体、协作讨论协议、自适应记忆系统这些手段,生成质量较高的指令数据。
- 训练策略:微调走由粗到精的路子:先用大量多样化指令样本打底,再用高质量样本做拒绝采样和监督微调。
- 特殊 Token 引入:训练时还引入了若干特殊标记,帮 Qwen2.5-Coder 理解代码,这些标记在代码处理流水线里各有各的用途。
- 多语言支持:Qwen2.5-Coder 的多语言能力来自预训练阶段的数据清洗和配比,各种编程语言上的表现都比较均衡。
- 长上下文能力:调整 RoPE 基频、加上 YaRN 机制之后,Qwen2.5-Coder 能处理更长的上下文,代码补全和整库理解都靠这个。
- 代码生成能力:在多个主流代码生成基准上,Qwen2.5-Coder 拿到了开源模型里的最好成绩,跟 GPT-4o 也能比一比。
Qwen2.5-Coder的项目地址
- 项目官网:qwenlm.github.io/blog/qwen2.5-coder
- GitHub仓库:https://github.com/QwenLM/Qwen2.5-Coder
- HuggingFace模型库:https://huggingface.co/collections/Qwen/qwen25-coder-66eaa22e6f99801bf65b0c2f
- arXiv技术论文:https://arxiv.org/pdf/2409.12186
Qwen2.5-Coder的应用场景
- 日常编程工作:开发者可以用 Qwen2.5-Coder 辅助写代码,重复性的活能少干一些。
- 代码学习和练习:编程新手可以用 Qwen2.5-Coder 学语法和最佳实践,边练边提升。
- 教育和培训:编程课上 Qwen2.5-Coder 可以当教学辅助,帮学生理解复杂概念,练习时还能即时给反馈。
- 代码审查和质量保证:代码审查时用 Qwen2.5-Coder 找潜在问题、给改进建议。
- 自动化测试:Qwen2.5-Coder 也能生成测试用例,自动化测试的覆盖率和效率都能提上去。






0 条评论
暂无评论,来抢沙发。