DeepSeekCoder:当大型语言模型遇到编程时_23页_2mb
报告摘要
DeepSeek-Coder:当大型语言模型遇到编程时 - 代码智能的兴起
核心内容概述
DeepSeek-Coder是一系列开源代码模型,旨在提升代码生成、代码补全和数学推理等任务的性能。该系列模型涵盖13亿到330亿参数量的多个版本,包括基版本和指令版本。DeepSeek-Coder在多个基准测试中表现出色,不仅超越了其他开源模型,还接近甚至超过了一些闭源模型如GPT-3.5 Turbo和GPT-4的性能。此外,其宽松的许可协议使得研究和商业应用更加灵活。
主要观点
- DeepSeek-Coder模型通过在2万亿个标记的代码语料库上训练,实现了对87种编程语言的全面理解。
- 采用Fill-In-the-Middle(FIM)方法,通过打乱文本顺序并预测中间部分,以增强代码生成和补全能力。
- 在训练过程中,使用仓库级别的数据组织方式,提升模型对跨文件依赖关系的理解。
- 通过引入哨兵标记和优化分词器,提高了模型的训练效率和代码生成质量。
- 模型的架构基于DeepSeek LLM框架,使用旋转位置嵌入(RoPE)和分组查询注意力(GQA)技术,以提升计算效率。
- DeepSeek-Coder-Base 6.7B和33B模型在多语言HumanEval和MBPP基准测试中表现优异,特别是在Python和Java等语言上。
- 指令微调显著提升了模型的性能,尤其在需要逻辑推理的复杂任务中。
- 在跨文件代码完成任务中,DeepSeek-Coder表现出优于其他开源模型的能力,这得益于其仓库级别的预训练策略。
- DeepSeek-Coder在程序辅助数学推理任务(如GSM8K和MATH)中表现突出,特别是在33B版本中。
- 模型还进行了额外的预训练,以提升其在自然语言理解和数学推理方面的表现。
关键信息
数据收集
- 数据集由87%的源代码、10%的英语代码相关自然语言语料库和3%的中文代码无关自然语言组成。
- 数据来源包括GitHub和StackExchange,且进行了多轮过滤、依赖解析和质量筛选。
- 通过n-gram过滤,确保训练数据不包含测试集信息。
训练策略
- 采用Next Token Prediction和Fill-In-the-Middle(FIM)作为训练目标。
- FIM训练策略中,PSM模式被选为最佳策略,其FIM率为50%。
- 使用HuggingFace Tokenizer库训练字-piece编码器,最终词汇量为32,000。
模型架构
- DeepSeek-Coder模型基于DeepSeek LLM框架,包括1.3B、6.7B和33B三个版本。
- 使用旋转位置嵌入(RoPE)和分组查询注意力(GQA)技术提升模型性能。
- FlashAttention v2用于加速注意力机制。
优化方法
- 使用AdamW优化器,初始学习率为0.9,最终学习率为0.95。
- 采用三阶段训练策略,包括2000个预热步长和逐步调整学习率。
实验结果
- 在HumanEval和MBPP基准测试中,DeepSeek-Coder-Base 33B的平均准确率为66.0%,优于其他开源模型。
- 在DS-1000基准测试中,DeepSeek-Coder-Base 33B在所有库中表现优异,特别是在Matplotlib和Scikit-Learn中。
- 在LeetCode Contest基准测试中,DeepSeek-Coder-Instruct 33B的Pass@1得分为27.8%,显著优于其他开源模型。
- 在FIM任务中,DeepSeek-Coder-Base 6.7B和33B模型在多种编程语言上表现优异,尤其是Java和JavaScript。
- 在跨文件代码完成任务中,DeepSeek-Coder模型表现优于其他开源模型,证明了仓库级别预训练的有效性。
- 在数学推理任务中,DeepSeek-Coder-Base 33B在所有基准测试中均表现优异,特别是MATH和GSM8K。
指令微调
- DeepSeek-Coder-Instruct模型通过指令数据进行微调,提升其在代码生成和补全任务中的表现。
- 在LeetCode Contest任务中,指令微调模型的Pass@1得分显著提高,特别是在中等和困难问题上。
长上下文处理
- 通过调整RoPE参数,将上下文长度扩展至16K,以支持更复杂的编码任务。
- 尽管理论上支持64K标记,但实际表现最佳在16K范围内。
模型性能对比
- DeepSeek-Coder-Base 33B在代码生成、FIM任务和数学推理任务中均优于其他开源模型。
- DeepSeek-Coder-Instruct 33B在指令微调后,性能显著提升,接近GPT-4。
- 在跨文件代码完成任务中,DeepSeek-Coder模型表现突出,表明其对复杂项目结构的理解能力。
总结
DeepSeek-Coder系列模型代表了代码智能领域的重大进展,通过高质量的训练数据、创新的FIM训练策略和优化的模型架构,实现了在代码生成、补全和数学推理任务中的卓越性能。该系列模型不仅在开源模型中领先,还接近甚至超越了闭源模型。其仓库级别的预训练方法和指令微调技术为代码智能研究和应用提供了强有力的支持。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载