从 DeepSeek LLM 到 DeepSeek R1 – DeepSeek LLM
最近,我看到了DeepSeek发表的一组论文,记录了DeepSeek的LLM从第一版到最新R1的演变过程。从今天的角度来看,我们知道 DeepSeek R1 已经达到了接近业界领先模型的水平。然而,更让我感兴趣的是,它是如何从一家最初被忽视的中国量子公司发展到今天的。
在本系列博文中,我将尝试从论文阅读的角度,沿着DeepSeek LLM -> DeepSeek MoE -> DeepSeek V2 -> DeepSeek V3 -> DeepSeek R1的轨迹,追溯其探索的轨迹。在整理论文时,我发现 DeepSeek 公开发表的第一篇论文是在 2024 年 1 月,当时他们刚刚发布了第一版模型。即使在人工智能行业,他们当时也不被视为主要竞争对手。然而,就在一年后的 2025 年 1 月,他们已经发展到了 R1 的领先水平。人们常说,在人工智能领域,一天就像人类世界的一年。但当你真正看到一年内取得的进步时,DeepSeek 的发展速度确实令人惊叹。
背景
DeepSeek LLM是DeepSeek开源的第一个LLM。当时,最流行的开源 LLM 是 LLaMA-2,许多模型都基于它的架构和基础。现在回过头来看,我们知道 DeepSeek 最终选择了不同于 LLaMA Dense 架构的 MoE 架构。然而,在第一个版本中,他们基本上照搬了 LLaMA-2 的架构,并做了一些局部调整。可以推断,当时团队对模型架构仍处于探索阶段。
虽然架构与 LLaMA-2 基本相同,都是在 2T 标记上进行训练,但 DeepSeek LLM 在性能评估中全面超越了 LLaMA-2,如下图所示。该论文介绍了一些关于数据、训练和微调方法的有趣发现。
值得注意的是,DeepSeek 在训练过程中本可以使用更多的数据和更大的模型,这无疑会提高模型性能。不过,本文的目的主要是与 LLaMA-2 进行比较,因此他们有意保持了尽可能相似的数据规模和参数大小,以关注其他方面的改进。
数据
LLaMA-2 和 DeepSeek LLM 在数据选择上有显著差异。虽然两者都使用了 2T 标记,但 LLaMA-2 的语料库中有近 90% 是英语,而 DeepSeek LLM 没有明确说明语言比例,但暗示语料库中英文比例更加均衡。从逻辑上讲,DeepSeek LLM 在中文测评中的表现明显优于其他公司并不奇怪。出乎意料的是,在英文评估指标中,尽管训练数据少得多,DeepSeek LLM 仍然取得了不相上下的性能。
我推测这一现象有两个原因。首先,DeepSeek LLM 的语料库质量更高,弥补了数量上的劣势。LLaMA-2 提到它没有对数据集进行敏感信息过滤,而 DeepSeek LLM 则引入了一个评估数据质量的模型,特别是增加了小众领域数据的比例,以提高数据的多样性。因此,可以推断 DeepSeek LLM 的英文语料质量更高。作为参考,LLaMA-3 也在数据准备过程中引入了重复数据删除和质量过滤功能,以提高语料质量。
我猜测的另一个原因是,中文语料的引入也提高了模型的英文性能。OpenAI 的 GPT 3.5 主要是在英文语料库中训练的,但在中文语料库中表现良好。一个可能的原因是,从英文语料库中学到的知识被移植到了中文语料库中。同样,从中文语料库中学到的知识也可以迁移到英文中。此外,由于中文和英文在语法和表达上有显著差异,这些不同的数据可能会增强模型的能力。此外,不同语言有不同的文化背景和内容倾向,这进一步增加了数据的多样性。如果这一推测成立,那么在准备语料库时就应该有意识地增加不同语言的比例,以便让模型学习到更丰富的语言表达。
模型架构
在模型架构方面,DeepSeek LLM 与 LLaMA-2 几乎完全相同,使用了相同的技术,如预规范、FFN 激活函数和位置编码器。最大的不同是使用了 GQA(群体查询注意)。与最初的 MHA(多头注意)相比,GQA 可以理解为一种节省训练和推理内存使用的方法,它允许多个查询头共享一组关键参数矩阵和值参数矩阵,从而大大减少了内存消耗。然而,这样做的代价是减少了 “键 ”和 “值 ”潜在空间的数量,从而削弱了模型的表达能力。为了解决这个问题,LLaMA-2 增加了 FFN 网络的宽度,以提供更多的非线性表达能力,而 DeepSeek LLM 则选择增加注意力层的数量。粗略地说,虽然模型参数相同,但 LLaMA-2 是一个更宽的模型,而 DeepSeek LLM 则是一个更深的模型。回过头来看,DeepSeek 在 V2 中引入的后续工作重点对注意力层进行了彻底更新,直接将推理所需的 KV 缓存减少了一个数量级。
另一个不同之处在于,LLaMA-2 使用的是余弦学习调度器,而 DeepSeek LLM 使用的是多步学习调度器。给出的理由是,当数据量增加时,Multi-Step 可以更好地利用前一阶段的结果,从而实现更快的持续训练。
论文还用大量篇幅解释了如何在不同数据规模、数据质量和模型大小的情况下选择合适的超参数,以及如何绘制缩放规律曲线。这被作为论文的最大亮点,但我感觉就像炼金术,让我头疼不已。有兴趣的读者可以自己去看看。
后期训练
在论文发表时,后期训练主要涉及对齐,使用 SFT 和 RLHF 对齐人类偏好并提高模型安全性。使用的数据大多是带标签的对话文本,没有对数据分布进行特殊处理。DeepSeek LLM 在数据选择上与 LLaMA-2 有很大不同。
如果查看顶部的模型性能评估对比图,就会发现 DeepSeek LLM 在 MATH、HumanEval 和 MBPP 等非中文指标上的表现要好得多。这是因为 DeepSeek 训练后 SFT 阶段有近 70% 的样本与数学和代码有关。可见,他们在后训练中并没有优先考虑对齐,而是侧重于增强模型能力,这更像是一种偷偷摸摸的排名优化。
当时的主流方法是在基础模型训练完成后,对代码和数学模型进行 SFT,如 Code LLaMA 和 OpenAI Codex,它们分别是由 LLaMA-2 和 OpenAI GPT3 SFT 而来。Meta 甚至还从 Code LLaMA SFT 了一个 Python 专用 LLM。
现在我们知道,在后训练阶段对数学和代码样本执行 RL 可以激发模型的 CoT 推理能力,R1 的想法可能就是在这个时候产生的。
此外,DeepSeek LLM 当时并没有使用流行的 RLHF,而是选择了 DPO(直接偏好优化)来与人类偏好保持一致。这种方法直接优化两个不同生成结果之间的概率差异作为训练目标,与 RL 相比更直观,也更容易设计。在 LLaMA-3 的后训练过程中也使用了 DPO。显然,DeepSeek 团队对现有的 RL 算法并不满意,仍在不断探索。这促成了后来在 DeepSeek Math 中公布的 GRPO。
Future Work
上学的时候,老师告诉我,真正的 Future Work 不应该写在论文里,而应该偷偷地做,下一篇论文再发表。从今天的角度来看,DeepSeek LLM论文中的 “未来工作 ”部分过于真诚,几乎是在为R1指明道路。
DeepSeek LLM 将是一个长期项目,重点是推动开源模型的进步。
这还很难说,因为才过了一年多。
很快,我们将发布代码智能和专家混合物(MoE)方面的技术报告,
。它们将展示我们如何创建高质量的代码数据进行预训练,以及如何设计
稀疏模型以实现密集模型的性能。
这个 “很快 ”意味着一周内发布 MoE,半个月内发布 DeepSeek Code。现在我们知道,MoE 成为了 V2、V3 和 R1 的基础架构,参数上升到了 671B。
目前,我们正在为即将推出的
DeepSeek LLM 版本构建更大、更完善的数据集。我们希望在下一个版本中,推理、中文知识、数学和代码能力
将得到显著提高
数据量在半年内从 2T 增加到 8T,尽管 LLaMA-3 也在同一时间增加到 15T。DeepSeek V2 的指标在英语方面略微落后于 LLaMA-3,到了 V2,他们的重点已经转移到疯狂降低成本上,并在中国引发了一场疯狂的价格战。
我们的对标团队致力于研究如何提供一个对公众有帮助、
、诚实和安全的模型。我们的初步实验证明,强化学习
可以提升模型的复杂推理能力。
从今天回过头来看,这正是 R1 最重要的方法。
结论
从今天的角度来看,DeepSeek 可能还处于探索阶段,与业界的开源模型保持一致,并进行理论研究。不过,从论文中的细节来看,一年后划时代的 R1 诞生的条件已基本具备。
本文文字及图片出自 From DeepSeek LLM to DeepSeek R1 — DeepSeek LLM
你也许感兴趣的:
- OpenAI 研究人员发现,即使是最好的人工智能也 “无法解决 ”大部分编码问题
- 【程序员搞笑图片】手工编程对比 AI 编程
- 【程序员搞笑图片】踩中狗屎
- 我受够了维护 AI 生成的代码
- 【外评】作为全栈开发人员如何跟上 AI/ML 的发展?
- 大模型集体失智!9.11和9.9哪个大,几乎全翻车了
- 【外评】为什么似乎没有人在意人工智能给出了错误的答案?
- 【程序员搞笑图片】AI 编程
- 【外评】黑客工具可提取 Windows 全新人工智能 Recall 功能收集到的所有数据
- 【外评】如果人工智能能胜任你的工作,也许它还能取代你的首席执行官
你对本文的反应是: