【深度分析】Qwen2.5 Coder:训练过程与数据分布全解析

我读了一些Qwen2.5 Coder的论文以及训练数据,做一些总结。

论文地址:

https://arxiv.org/pdf/2409.12186

一、简介

Qwen2.5-Coder系列是对其前身CodeQwen1.5的重大升级,旨在在各种模型规模下实现顶尖的代码任务性能。该系列包括六种模型:

  • Qwen2.5-Coder-0.5B

  • Qwen2.5-Coder-1.5B

  • Qwen2.5-Coder-3B

  • Qwen2.5-Coder-7B

  • Qwen2.5-Coder-14B

  • Qwen2.5-Coder-32B

Qwen2.5-Coder的架构直接继承自Qwen2.5。不同模型规模在隐藏层大小、层数、头数等方面进行了调整,以适应不同的性能和资源需求。例如,较小的模型使用了嵌入共享技术,而较大的模型则没有。此外,这些模型都支持最长128K的上下文长度,使其能够处理超长的代码序列。

二、预训练数据

为了构建强大的基础模型,Qwen2.5-Coder在大量多样且高质量的数据上进行了预训练:

  1. 源代码数据:收集了截至2024年2月前在GitHub上创建的公共代码仓库,涵盖92种编程语言。经过一系列规则过滤,确保数据质量。

  2. 文本代码混合数据:从Common Crawl中提取与代码相关的文档、教程、博客等。采用粗到细的层级过滤策略,使用小型模型进行精炼,保障了数据的相关性和质量。

  3. 合成数据:利用前一代模型CodeQwen1.5生成大规模合成代码数据,并通过执行器验证代码的可执行性,以减少幻觉(hallucination)的风险。

  4. 数学数据:引入了Qwen2.5-Math的预训练语料,增强了模型的数学推理能力。

  5. 通用文本数据:包括高质量的通用自然语言数据,确保模型在保留代码能力的同时,具备良好的通用语言理解和生成能力。

三、训练策略

Qwen2.5-Coder采用了三阶段的训练策略:

  1. 文件级预训练:聚焦于单个代码文件的学习,序列长度为8,192个标记,主要目标是下一标记预测和填充中间(FIM)。

    示例:

  2. 仓库级预训练:扩展上下文长度至32,768个标记,并调整RoPE的位置编码参数。通过YARN机制,模型可以处理最长达131,072个标记的序列。

  3. 指令微调:构建了高质量的代码指令数据集,包括多语言的代码生成、修复和理解任务。通过混合微调和直接偏好优化(DPO),模型被调整为强大的代码助手。

四、实践应用

Qwen2.5-Coder系列模型在实际应用中展现了巨大的潜力:

  • 代码助手和编辑:模型能够理解自然语言指令,进行代码生成、修复和优化,帮助开发者提高效率。

  • 跨语言代码生成:支持多种编程语言的代码生成和理解,适应不同的开发需求。

  • 长上下文处理:支持超长序列,使其能够处理大型代码库和复杂项目,为代码分析和理解提供了新的可能。

五、训练素材集参考

https://github.com/QwenLM/Qwen2.5-Coder

  1. 评估数据和结果文件

    这些文件位于 qwencoder-eval 下的 base 目录,大多是已有的评估基准数据集,如 HumanEval、CruxEval、BigCodeBench 等。这些数据集通常用于评估模型的性能,而不是用于预训练。outptus 目录下的文件可能是模型在这些评估数据集上的输出结果评估指标

  • ./qwencoder-eval/base/eval_cache/evalplus/HumanEvalPlus-v0.1.9.jsonl

  • ./qwencoder-eval/base/benchmarks/cruxeval/data/cruxeval.jsonl

  • ./qwencoder-eval/base/benchmarks/bigcodebench/data/bigcodebench_full.json

  • ./qwencoder-eval/base/outptus/qwen2.5-coder/*/bigcodebench/*/*.jsonl

  • ./qwencoder-eval/base/outptus/qwen2.5-coder/*/evalplus/*/*.jsonl

  • ./qwencoder-eval/base/outptus/qwen2.5-coder/*/cruxeval/*/*.json

  1. 多语言评估数据

    这些文件是多种编程语言的 HumanEval 数据集,用于评估模型在不同语言下的代码生成能力

  • ./qwencoder-eval/base/benchmarks/multiple-eval/data/humaneval-*.jsonl

  • ./qwencoder-eval/instruct/multipl_e/chat/data/humaneval/humaneval-*.jsonl

  1. 填充中间(FIM)评估数据

    这些文件用于评估模型的**填充中间(Fill-in-the-Middle)**能力。

  • ./qwencoder-eval/base/benchmarks/fim-bench/hm_fim/data/fim_singleline.jsonl
  1. 模型输出和评估结果

    这些文件是模型在评估数据集上的生成结果评估结果,用于评估模型在各种任务上的性能。

  • ./qwencoder-eval/base/outptus/qwen2.5-coder/*

  • ./qwencoder-eval/instruct/multipl_e/chat/results/*/*.jsonl

  • ./qwencoder-eval/instruct/livecode_bench/*/*.jsonl

  • ./qwencoder-eval/instruct/eval_plus/data/*.jsonl

  1. 微调和 DPO 阶段的配置文件
  • ./finetuning/dpo/configs/*.json

  • ./finetuning/sft/configs/*.json

AI大模型学习路线

如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!

扫描下方csdn官方合作二维码获取哦!

在这里插入图片描述

这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!

请添加图片描述
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

100套AI大模型商业化落地方案

请添加图片描述

大模型全套视频教程

请添加图片描述

200本大模型PDF书籍

请添加图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

LLM面试题合集

请添加图片描述

大模型产品经理资源合集

请添加图片描述

大模型项目实战合集

请添加图片描述

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

### 性能对比分析 为了面评估 Qwen2.5-Coder:7B 和 DeepSeek R1 之间的性能差异,可以从多个维度进行考量。 #### 计算资源需求 Qwen2.5-Coder:7B 是一款参数量较大的模型,在计算资源方面的需求相对较高。相比之下,DeepSeek R1 的设计更注重效率优化,能够在较低配置的硬件上实现较好的运行效果[^1]。 #### 基准测试表现 根据已有的基准测试数据,DeepSeek R1 展现出了卓越的表现特性(见图 1)。然而,关于 Qwen2.5-Coder:7B 的具体数值尚未提供直接可比的数据集。通常情况下,大型语言模型在特定任务上的精度会更高,但在通用场景下的响应速度可能不如经过专门调优的小型化模型。 #### 实际应用场景适配度 对于实际应用而言,除了纯粹的技术指标外,还需要考虑模型部署难易程度、维护成本等因素。小型高效模型往往更适合边缘设备或实时处理要求较高的场合;而大体量的语言模型则适用于对准确性有极高要求的任务环境。 ```python import matplotlib.pyplot as plt # 假设数据用于展示目的 performance_data = { 'Model': ['Qwen2.5-Coder:7B', 'DeepSeek R1'], 'Accuracy (%)': [90, 88], 'Inference Speed (ms)': [300, 150], } fig, ax1 = plt.subplots() ax2 = ax1.twinx() ax1.bar(performance_data['Model'], performance_data['Accuracy (%)'], color='g') ax2.plot(performance_data['Model'], performance_data['Inference Speed (ms)'], 'b-') ax1.set_xlabel('Models') ax1.set_ylabel('Accuracy (%)', color='g') ax2.set_ylabel('Inference Speed (ms)', color='b') plt.title("Performance Comparison between Models") plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值