我读了一些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在大量多样且高质量的数据上进行了预训练:
-
源代码数据:收集了截至2024年2月前在GitHub上创建的公共代码仓库,涵盖92种编程语言。经过一系列规则过滤,确保数据质量。
-
文本代码混合数据:从Common Crawl中提取与代码相关的文档、教程、博客等。采用粗到细的层级过滤策略,使用小型模型进行精炼,保障了数据的相关性和质量。
-
合成数据:利用前一代模型CodeQwen1.5生成大规模合成代码数据,并通过执行器验证代码的可执行性,以减少幻觉(hallucination)的风险。
-
数学数据:引入了Qwen2.5-Math的预训练语料,增强了模型的数学推理能力。
-
通用文本数据:包括高质量的通用自然语言数据,确保模型在保留代码能力的同时,具备良好的通用语言理解和生成能力。
三、训练策略
Qwen2.5-Coder采用了三阶段的训练策略:
-
文件级预训练:聚焦于单个代码文件的学习,序列长度为8,192个标记,主要目标是下一标记预测和填充中间(FIM)。
示例:
-
仓库级预训练:扩展上下文长度至32,768个标记,并调整RoPE的位置编码参数。通过YARN机制,模型可以处理最长达131,072个标记的序列。
-
指令微调:构建了高质量的代码指令数据集,包括多语言的代码生成、修复和理解任务。通过混合微调和直接偏好优化(DPO),模型被调整为强大的代码助手。
四、实践应用
Qwen2.5-Coder系列模型在实际应用中展现了巨大的潜力:
-
代码助手和编辑:模型能够理解自然语言指令,进行代码生成、修复和优化,帮助开发者提高效率。
-
跨语言代码生成:支持多种编程语言的代码生成和理解,适应不同的开发需求。
-
长上下文处理:支持超长序列,使其能够处理大型代码库和复杂项目,为代码分析和理解提供了新的可能。
五、训练素材集参考
https://github.com/QwenLM/Qwen2.5-Coder
-
评估数据和结果文件:
这些文件位于
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
-
多语言评估数据:
这些文件是多种编程语言的 HumanEval 数据集,用于评估模型在不同语言下的代码生成能力。
-
./qwencoder-eval/base/benchmarks/multiple-eval/data/humaneval-*.jsonl
-
./qwencoder-eval/instruct/multipl_e/chat/data/humaneval/humaneval-*.jsonl
-
填充中间(FIM)评估数据:
这些文件用于评估模型的**填充中间(Fill-in-the-Middle)**能力。
./qwencoder-eval/base/benchmarks/fim-bench/hm_fim/data/fim_singleline.jsonl
-
模型输出和评估结果:
这些文件是模型在评估数据集上的生成结果和评估结果,用于评估模型在各种任务上的性能。
-
./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
- 微调和 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%免费】🆓
