Qwen2.5-Coder出炉,较Qwen2.5改进了什么

351 阅读5分钟

论文链接:

arxiv.org/abs/2409.12…

核心看点:

  1. Qwen2.5-Coder = Qwen2.5 + Tokenization
  2. Qwen2.5-Coder 由 Qwen2.5-Coder-1.5B 和 Qwen2.5-Coder-7B 构成
  3. 构建数据集时发现代码:数学:文本数据比例=7:2:1时,训练效果更好,甚至超过了更高比例的代码数据组,表明数学和文本数据在特定阈值下对代码性能有积极贡献
  4. Qwen2.5-Coder训练数据集的总规模为 5.2万亿个 token

Tokenization

Qwen2.5-Coder 继承了 Qwen2.5 的词汇并引入特殊标记以更好理解代码。例如,<|endoftext|>标志文本或序列结束,<|fim_prefix|>、<|fim_middle|>和<|fim_suffix|>用于实现中间填充技术,<|fim_pad|>用于该操作的填充。还有<|repo_name|>用于识别版本库名称,<|file_sep|>用于文件分隔符以更好管理版本库级信息。这些标记对帮助模型从不同代码结构学习、在文件级和版本库级预训练中处理更长更复杂上下文至关重要。

论文概括

  • 研究背景: 随着大型语言模型(LLMs)的快速发展,专门针对代码的语言模型(Code LLMs)逐渐受到关注。这些模型在预训练的基础上,旨在提升编程任务的处理能力。
  • 主要研究内容: 本文介绍了Qwen2.5-Coder系列模型的设计与训练过程,包括文件级预训练、仓库级预训练和指令调优。模型的参数规模有1.5B和7B,旨在提升模型在代码生成和理解上的表现。
  • 研究结果: Qwen2.5-Coder在多个编程基准测试中表现卓越,超越了同规模的其他大型模型,展现了广泛的应用潜力。

论文的创新点

  • 创新思路:

    • 多阶段 训练 流程: 采用文件级和仓库级预训练相结合的方式,增强模型的上下文理解能力。
    • 指令调优: 通过构建精心设计的指令调优数据集,将基础代码LLM转变为强大的编程助手。
  • 创新方法:

    • 扩展上下文长度: 在仓库级预训练阶段,将上下文长度从8192个token扩展至32768个token,进一步提升模型的推理能力。
    • YARN 机制: 采用YARN机制,使模型能够处理长达131072个token的序列,增强了模型的推理和生成能力。

总结

Qwen2.5-Coder系列模型通过创新的训练方法和体系结构设计,显著提升了代码生成和理解的能力。其多阶段的训练流程和长上下文处理能力,使其在编程基准测试中表现突出。未来,研究将继续关注模型规模和数据集的扩展,进一步推动代码智能领域的发展。这一系列的研究成果为开发者在实际应用中提供了有力的工具,推动了代码智能的进步。

全文速览:

一、引言

本报告旨在深入探讨Qwen2.5-Coder系列语言模型的技术细节。该系列模型是Qwen2.5的显著升级,专注于提升代码生成任务的性能,特别是在长上下文处理和指令理解方面。

二、模型架构

  • 包含两个主要版本:1.5B和7B。
  • 两个版本均采用28层架构,但在隐藏层、查询头和键值头数上有所不同。

三、预训练过程

文件级预训练

  • 目标:为基础模型奠定基础,提升模型对代码的理解能力。
  • 数据来源:从多个开源项目中收集代码样本,确保多样性。

仓库级预训练

  • 长上下文能力:在这一阶段,模型的上下文长度从8,192个token扩展至32,768个token,以增强模型对长代码片段的理解能力。
  • RoPE调整:调整RoPE的基频从10,000降低至1,000,000,以提高模型的推理能力。
  • YARN 机制:应用YARN机制,使模型能够处理长达131,072个token的序列,进一步增强模型的外推潜力。

指令调优

  • 粗到细的微调

    • 第一阶段:合成数千万个低质量但多样的指令样本,用于初步微调基础模型。
    • 第二阶段:使用数百万个高质量指令样本,结合拒绝采样和监督微调,提升指令模型的性能。
    • 对于同一查询,生成多个候选项并通过LLM评分,选择最佳候选进行监督微调。

四、模型功能

  • 代码执行引擎

    • 提供安全的环境执行代码片段,支持多个测试案例并行执行。
    • 处理资源分配和超时机制,确保代码执行的稳定性。
  • 结果分析器

    • 比较代码输出与预期结果,生成详细的测试报告。
    • 针对失败的测试案例,提供改进建议,帮助开发者优化代码。

五、性能评估

  • 基准测试

    • 在HumanEval和MBPP等基准测试中,经过4阶段过滤,模型的平均得分从41.6%提升至46.8%。
    • 展示了高质量文本-代码对齐数据在代码生成中的重要性。

六、未来展望

  • 模型扩展:计划扩大数据集和模型规模,以进一步提高代码生成能力。
  • 推理 能力提升:继续增强模型的推理能力,以推动代码智能研究的发展。

七、结论

Qwen2.5-Coder系列模型在代码生成任务中展现出卓越的能力,尤其是在长上下文处理和指令理解方面。通过开放许可,鼓励开发者在实际应用中广泛采用这一模型,推动开源代码模型的发展。