写在前面
最近DeepSeek开源了两大模型V3和R1,在AI界掀起了一阵不小的风潮,而相关的介绍文章也已遍地开花。
本文旨在以DeepsSeek V3&R1的核心创新为切入点,简单延伸介绍下个人觉得比较好的文章。
DeepSeek在AI infra的创新也十分丰富,但由于个人精力有限,因此这部分没有涉猎过多。
这些教程的选择免不了本人的主观因素影响,不过我会尽可能避免这一点。
正文
首先要推出的是两篇论文《DeepSeek-V3 Technical Report》和《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning》。许多技术细节在论文里介绍得很详细了,但非官方的文章很可能忽略这些关键细节,因此建议时间充裕的朋友(选择性)阅读原文。V3的论文比较长,重点较多;R1的论文较短,读起来不会花太久。
代码方面,主要是V3的开源库DeepSeek-V3,重点关注model.py文件以学习模型类。R1暂未开源,不过实际上R1的核心点是在训练策略上,模型与V3没多大差别,如果想学习训练代码的话,可参考huggingface社区的代码库open-r1。
一味的阅读论文与代码也许能十分全面地学习相关知识,但考虑到可理解性则不如参考网络已有的文章教程。为方便讲述,本文将DeepSeek的核心知识点概括为以下几大类:
- 训练流程
- DeepSeek MoE
- 多头潜在注意力(Multi-Head Latent Attention,MLA)
- 多令牌预测(Multi-Token Prediction,MTP)
- R1 强化学习
训练流程
训练流程这一块,除了推荐的原论文以外,还可以看看DeepSeek V3/R1 训练笔记中的两个流程图。对于R1的训练流程图,万字长文详解DeepSeek核心技术中的图11还包含了R1蒸馏模型的训练流程,会更详细些。后者也综合性地介绍了DeepSeek核心技术,建议细读。
DeepSeek MoE
MoE的数学细节建议看看论文里的公式,以学习数学细节。
DeepSeek MoE的关键创新有:
- 共享专家分离:把激活专家区分为共享专家(Shared Experts)和路由专家(Routed Experts)(如果没有共享专家,那么共享信息可能会在所有路由专家里存储,效率低)
- 细粒度专家:每个专家再进行细分成组,TopK用于选前K个组,以提高组合的多样性
V3的一大创新是对MoE使用了无辅助损失的负载均衡策略,在重要性分数上添加了可学习的偏置项,见无辅助损失的负载均衡策略。作用是负载动态平衡、提高性能、避免干扰梯度。
多头潜在注意力(Multi-Head Latent Attention,MLA)
MLA实际上是DeepSeek V2提出的,主要是用来降低推理的KV Cache大小,由于效果很好因此用在了后续模型中。
数学细节推荐苏剑林老师的从MHA、MQA、GQA到MLA,这篇文章把MLA的数学诠释得极其精妙,挖掘出了原论文所忽略的一些技术细节,并有许多独特角度的思考。
多令牌预测(Multi-Token Prediction,MTP)
MTP首先是由Meta提出的,但DeepSeep的MTP版本与前者还有些不同,后者主要是把MTP用在训练期间以提高性能,推理时默认不用。
数学细节上,不建议与原论文的图死磕,个人觉得论文的图比较有迷惑性,建议可以看看deepseek技术解读,特别是3.1的图解部分,能很好地理解MTP。
DeepSeek的MTP作用主要有:
- 提高训练信号的密集度,因此提高训练效率
- 让模型有能力预规划token表征以预测之后的token
R1 强化学习
如果看了R1的训练流程后,就能了解到R1训练的关键在于奖励函数的设置:一是基于答案准确性、二是基于格式。整个强化学习框架是由GRPO算法驱动的,后者也是之前DeepSeek Math所提出的创新技术。
为了了解GRPO,首先要知道 策略梯度算法->PPO->GRPO 这么一个演进路线。推荐看看“强化学习蘑菇书”的策略梯度算法教程和PPO教程,然后再看看一文详解GRPO算法和LLM强化学习算法演进之路,最后再理解下GRPO的伪代码:
