DeepSeek V3&R1 相关学习资源

写在前面

最近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的伪代码: