核心内容
介绍了一种开源专家混合 (MoE) 代码语言模型——DeepSeek-Coder-V2
特点:
- 基于DeepSeek-V2 的中间检查点进一步预训练的,相比较于 DeepSeek-V2 ,其编码和数学推理能力更强,同时保持了通用语言任务中相当的性能
- 对编程语言的支持种类从 86 扩展到 338,同时上下文长度从 16K 扩展到 128K
- 在标准基准评估中,DeepSeek-Coder-V2 在编码和数学基准测试中与 GPT4-Turbo、Claude 3 Opus 和 Gemini 1.5 Pro 等封闭源模型相比取得了更好的性能
数据准备
-
数据组成
60% 的源代码+10% 的数学语料库+ 30% 的自然语言语料库
-
数据采集
(1)30% 的自然语言语料库
- 从 DeepSeek-V2 的训练数据集中采样
(2)60% 的源代码
-
从 GitHub上采集2023 年 11 月之前创建的公共存储库
应用与 DeepSeek-Coder中使用的相同的过滤规则和接近重复规则来过滤低质量代码和重复的源代码
-
从Common Crawl(一个开放的数据共享平台)收集与代码相关的和与数学相关的网络文本
步骤:
① 选择代码论坛比如StackOverflow,库网站比如PyTorch,数学网站比如StackExchange作为我们初始的初始种子语料
② 用这些初始种子语料训练一个fastText模型,来召回更多与编码相关的和与数学相关的网页
③ 由于中文等语言的标记化不能通过空格完成,作者使用来自 DeepSeek-V2 的字节对编码 (BPE) 分词器,显着提高了 fastText 的召回率
④ 计算第一次迭代相应领域在收集的网页中所占百分比,占比超过 10% 网页被归类为与代码相关或与数学相关
⑤ 为这些已识别的与代码相关或数学内容相关的 URL添加注释,再将与这些 URL 相关联的未收集的网页添加到种子语料库中
⑥ 经过三次数据收集迭代后,作者从网页中收集 70 亿个与代码相关的标记和 221Billion 个与数学相关的标记
⑦ 为了进一步从 GitHub 中收集高质量的源代码,作者在 GitHub 上应用了相同的方法,并进行了两次数据收集迭代,收集 94Billion 源代码
⑧最后,新的代码语料库由来自 GitHub 和 CommonCrawl 的 1,170B 个代码相关标记组成