20250207-杭州深度求索人工智能基础技术研究-Coder_当大型语言模型遇到编程时-代码智能的兴起_23页_2mb
报告摘要
DeepSeek-Coder:当大型语言模型遇到编程时 - 代码智能的兴起
核心内容
DeepSeek-Coder 是一系列开源代码模型,旨在提升代码智能,支持多种编程语言。该模型系列从13亿到330亿参数不等,并且基于2万亿标记的代码语料库进行训练。DeepSeek-Coder 在多个代码相关任务中表现出卓越的性能,包括代码生成、代码补全、跨文件代码理解和程序辅助数学推理,并且其性能超越了现有的闭源模型如 Codex 和 GPT-3.5。同时,DeepSeek-Coder 模型处于宽松的许可下,允许研究和商业使用。
主要观点
- DeepSeek-Coder 通过引入 Fill-In-The-Middle (FIM) 训练方法,增强了代码生成和补全能力。
- 模型使用了仓库级别的数据处理方式,包括依赖解析、重复数据删除和质量筛选,以提高其在项目级代码场景中的适用性。
- DeepSeek-Coder-Base 6.7B 在多个基准测试中表现出色,甚至在某些任务中超越了闭源模型 GPT-3.5 Turbo。
- 通过指令微调,DeepSeek-Coder-Instruct 在复杂任务中展现出更强的性能,尤其在结合 Chain-of-Thought (CoT) 提示时表现更佳。
- 模型使用了旋转位置嵌入 (RoPE) 和 FlashAttention v2 来提升计算效率和性能。
- DeepSeek-Coder 在处理长上下文时,通过扩展上下文窗口和调整训练策略实现了更广泛的应用能力。
关键信息
1. 模型规模与训练数据
- 模型规模:1.3B、6.7B 和 33B 参数。
- 训练数据来源:87% 源代码、10% 英语代码相关自然语言、3% 中文代码无关自然语言。
- 数据量:总计798GB,包含6亿个文件。
- 数据处理:包括数据爬取、基于规则的过滤、依赖解析、仓库级去重和质量筛选。
2. 训练策略
- Next Token Prediction:模型通过连接文件生成固定长度的训练条目,以预测后续标记。
- Fill-In-The-Middle (FIM):采用 FIM 方法,将文本随机分为三部分并打乱顺序,以增强模型对代码中上下文的理解。实验表明,FIM 率设为 50% 时,模型在代码补全任务中表现最佳。
- Tokenizer:使用 HuggingFace Tokenizer 库训练 BPE 分词器,最终词汇量为32,000。
- 模型架构:基于 DeepSeek-AI 的 LLM 框架,采用旋转位置嵌入 (RoPE) 和 FlashAttention v2,其中 33B 模型引入了分组查询注意力 (GQA)。
3. 优化策略
- 使用 AdamW 优化器,初始学习率为 0.9,权重衰减为 0.95。
- 采用三阶段训练策略,包含 2000 个预热步,最终学习率设置为 10% 的初始学习率的平方根。
- 利用 HAI-LLM 框架进行训练,采用张量并行、ZeRO 数据并行和 PipeDream 管道并行以提升计算效率。
4. 实验结果
- HumanEval 和 MBPP:DeepSeek-Coder-Base 33B 在 HumanEval 上达到 66.0% 的平均准确率,在 MBPP 上达到 60.6%。
- DS-1000:在七种库的代码生成任务中,DeepSeek-Coder-Base 33B 表现突出,平均准确率为 40.2%。
- LeetCode Contest:DeepSeek-Coder-Instruct 6.7B 和 33B 在该基准测试中分别达到 19.4% 和 27.8% 的 Pass@1 得分。
- FIM 任务:DeepSeek-Coder-Base 33B 在 FIM 任务中达到 81.2% 的平均准确率。
- 跨文件代码完成:DeepSeek-Coder 在 CrossCodeEval 数据集上表现优于其他开源模型,特别是在 Java、JavaScript 和 C# 中,其性能显著提升。
- 程序辅助数学推理 (PAL):DeepSeek-Coder-Base 33B 在 GSM8K、MATH、GSM-Hard 等任务中表现优异,平均准确率为 65.8%。
5. 指令微调与 CoT 提示
- DeepSeek-Coder-Instruct 通过指令微调提升性能,尤其是在复杂任务中。
- CoT 提示(Chain-of-Thought)显著提升了模型在 LeetCode Contest 上的表现,使得模型更擅长理解并解决复杂的编程问题。
6. 模型版本与改进
- DeepSeek-Coder-v1.5 7B 是通过额外的预训练从通用语言模型 DeepSeek-LLM-7B Base 获得的,其训练数据包括 70% 源代码、10% Markdown 和 StackExchange、7% 与代码相关的自然语言、7% 与数学相关的自然语言、6% 双语自然语言。
- 该版本在数学推理和自然语言任务上表现出显著提升,但在代码生成任务上略有下降。
模型应用场景
- 代码生成:适用于多语言环境下的代码编写任务。
- 代码补全:在开发过程中提供高效的代码建议。
- 跨文件代码理解:处理复杂项目结构,提升代码上下文理解能力。
- 程序辅助数学推理:解决需要编程处理的数学问题,如数学建模和计算任务。
总结
DeepSeek-Coder 是一款强大的开源代码模型,其在代码生成、代码补全、跨文件代码理解和数学推理等任务中表现卓越。通过仓库级别的数据处理和 FIM 训练方法,DeepSeek-Coder 不仅提升了代码理解能力,还增强了其在复杂场景中的适用性。该模型的灵活性和性能使其成为代码智能领域的重要工具,同时也为研究和商业应用提供了开放和可扩展的解决方案。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载