📖标题:Qwen2.5-Coder Technical Report
🌐来源:arXiv, 2409.12186
摘要
🔸在本报告中,我们将介绍Qwen2.5-Coder系列,这是其前身CodeQwen1.5的重大升级。该系列包括两种型号:Qwen2.5-Coder-1.5B和Qwen2.5-Coder-7B。作为一种特定于代码的模型,Qwen2.5-Coder基于Qwen2.5架构构建,并在超过5.5万亿个代币的庞大语料库上继续进行预训练。通过细致的数据清理、可扩展的合成数据生成和平衡的数据混合,Qwen2.5-Coder在保持通用性的同时展示了令人印象深刻的代码生成能力。
🔸该模型已在广泛的代码相关任务上进行了评估,在10多个基准测试中实现了最先进的(SOTA)性能,包括代码生成、完成、推理和修复,始终优于相同模型大小的较大模型。我们认为,Qwen2.5-Coder系列的发布不仅将推动代码智能研究的边界,而且通过其宽松的许可,鼓励开发人员在现实世界的应用程序中更广泛地采用。
🛎️文章简介
🔸研究问题:如何构建和优化大规模预训练模型以在编码任务中达到顶尖性能?
🔸主要贡献:论文提出了Qwen2.5-Coder系列模型,通过广泛的预训练和微调,使其在编码任务中表现卓越,同时开源了这些模型以促进相关领域的研究和创新。
📝重点思路
🔺相关工作
🔸特定于代码的语言模型引起了广泛关注,基于预训练的LLM构建的代码LLM,包括StarCoder、CodeLlama等,但扔落后于其他专业模型。
🔸Qwen2.5-Coder在CodeQwen1.5的工作基础上,源自Qwen2.5 LLM,继承了其先进的架构和分词器。
🔺模型架构
🔸整体和Qwen2.5类似,区别在于引入了几个特殊标记帮助模型更好地理解代码。
🔺预训练
🔸语料:包含五种关键数据类型,分别为源代码数据、文本-代码对应数据、合成数据、数学数据和文本数据
🔸配比:70%代码、20%文本和10%数学的最佳混合比例
🔸训练:先在单个代码文件级预训练,再在存储库级预训练。
🔺后训练
🔸数据:包括多语言识别、github合成、多语言指令,并通过评分和验证确保质量
🔸训练:经过从粗到细的微调,采用FIM格式保证短代码训练后的长上下文能力,包括两个阶段 ①合成了数千万个低质量但多样化的指令先训练 ②用数百万个高质量指令样本,拒绝采样后训练
🔎分析总结
🔸基础模型:从代码生成、代码补全、代码推理、数学推理、通用自然语言理解和长上下文建模六个方面进行了评估,超过了其他开源语言模型。
🔸指令模型:从代码生成、代码推理、代码编辑、文本到SQL、数学推理和一般自然语言理解六个方面进行了评估,超过了其他开源语言模型。
💡个人观点
主要工作还是在数据准备上,做好多样性、高质量和配比,训练技术未公开,不如数学的技术报告。
附录