DeepSeek系列模型技术报告的阅读笔记
之前仔细阅读了DeepSeek系列模型的主要技术方面内容与发展脉络,以下是DeepSeek系列模型技术报告的笔记,有错误的地方欢迎指正!
文章目录
- DeepSeek系列模型技术报告的阅读笔记
- GQA
- Deepseek MoE
- Abstract
- Introduction
- Preliminaries: Mixture-of-Experts for Transformers
- DeepSeekMoE Architecture
- Fine-Grained Expert Segementation
- Shared Expert Isolation
- Load Balance Consideration
- Experiments
- Experimental Setup
- Results
- DeepseekMath
- PPO算法
- GRPO算法
- Outcome Supervision RL with GRPO
- Process Supervision RL with GRPO
- Iterative RL with GRPO
- Deepseek V2
- Abstract
- Introduction
- Architecture
- Basic Architecture
- Multi-Head Latent Attention: Boosting Inference Efficiency
- Preliminaries: Standard Multi-Head Attention
- Low-Rank Key-Value Joint Compression
- Decoupled Rotary Position Embedding
- Alignment
- Supervised Fine-Tuning
- Reinforcement Learning
- Deepseek V3
- Astract
- Introduction
- Architecture
- Basic Architecture
- Multi-Head Latent Attention
- DeepSeekMoE with Auxiliary-Loss-Free Load Balancing
- Multi-Token Prediction
- Infrastructures
- DualPipe and Computation-Communication Overlap
- FP8 Mixed Precision Framework
- DeepSeek-R1
- Abstract
- Introduction
- Approach
- DeepSeek-R1-Zero: Reinforcement Learning on the Base Model
- DeepSeek-R1: Reinforcement Learning with Cold Start
- Distillation: Empower Small Models with Reasoning Capability
GQA
论文:GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints
Deepseek LLM中用到的注意力机制
在K部分的尺度变化为:
之后分组注意力:
Deepseek MoE
论文:DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models
单位:DeepSeek-AI
作者:Damai Dai et. al.
Abstract
问题:传统的 MoE 架构,如GShard,激活N个专家模型中的Top K个,面临专家模型专业性缺失的问题,例如:无法做到每个专家都获得了不重叠和集中的知识 (换句话说,专家模型太泛化,不够像不同领域的专家)
方法:DeepSeekMoE,专业化专家模型
两种主要的策略:
- 精细地切分专家模型到 m ⋅ N m\cdot N m⋅N个规模,同时激活 m ⋅ K m\cdot K m⋅K个模型,以允许更灵活地组合已激活的专家
- 将 K s K_s Ks个专家隔离并作为共享的路由专家模型,以捕获通用的知识、减少专家模型冗余
结果:
- 从2B参数的模型规模开始,比GShard 2.9B模型规模、计算开销更小;
- DeepSeekMoE 2B 的性能几乎接近同类2B全连接层结构的模型性能
- 当使用DeepSeekMoE 145B模型时,效果远超GShard,在18.2-28.5%的计算量上表现出同Deepseek 67B相当的效果
Introduction
过去的MoE模型:Gshard, Switch Transformers
传统的MoE模型结构:传统的 MoE 架构用 MoE 层替换 Transformer 中的前馈网络 (FFN);每个 MoE 层由多个专家组成,每个专家在结构上与标准 FFN 相同,每个token都分配给一名或两名专家
因结构缺陷引发的问题:
- 知识混淆: 专家数量有限 -> 分配给特定专家的令牌可能会涵盖不同的知识,造成知识混淆;同时,不同类型的知识混合在一块也无法进行区分与分别利用
- 知识冗余: 分配给专家的token可能依赖常识 -> 不同专家收敛到相同的共享知识,导致模型规模与参数上的冗余
方法:DeepSeek-MoE
包括了两种主要的策略:
- 细粒度的专家细分 (Fine-Grained Expert Segmentation): 在保持参数不变的前提下通过切割FFN的中间隐含维度进一步细分专家,同时在相同计算开销时激活更多的细粒度专家以实现灵活且适应性强的已激活专家组合 -> 不同的细粒度专家更精细地分解、学习到多样化知识,并保持高度的专业性
- 共享专家隔离 (Share):分离出某些专家作为共享专家,这些专家始终处于激活状态,旨在在不同环境中捕获和整合共同知识,将常识压缩到这些共享的专家中以令其他路由专家之间的冗余将得到缓解 -> 确保每个路由的 Expert 通过专注于独特的方面来保持专业化
Preliminaries: Mixture-of-Experts for Transformers
标准的Transformer堆叠L层Transformer块,T为序列长度,第 l l l层Transformer块的表示为:
u 1 : T l = S e l f A t t n ( h 1 : T l − 1 ) + h 1 : T l − 1 \bold{u}^l_{1:T}=SelfAttn(\bold{h}^{l-1}_{1:T})+\bold{h}^{l-1}_{1:T} u1:Tl=SelfAttn(h1:Tl−1)+h1:Tl−1
h t l = F F N ( u t l ) + u t l \bold{h}^l_t=FFN(\bold{u}^l_t)+\bold{u}^l_t htl=FFN(utl)+utl
经典的MoE结构:用MoE层替换FFN,描述为:
h t l = ∑ i = 1 N ( g i , t F F N i ( u t l ) ) + u t l \bold{h}^l_t=\sum^N_{i=1}(g_{i,t}FFN_i(\bold{u}^l_t))+\bold{u}^l_t htl=i=1∑N(gi,tFFNi(utl))+utl
g i , t = { s i , t s i , t ∈ T o p K ( { s j , t ∣ 1 ≤ j ≤ N } , K ) 0 o t h e r w i s e g_{i,t}=\begin{cases}s_{i,t}&s_{i,t}\in TopK(\{s_{j,t}|1\leq j\leq N\},K)\\ 0 & otherwise\end{cases} gi,t={si,t0si,t∈TopK({sj,t∣1≤j≤N},K)otherwise
s i , t = S o f t m a x i ( u t l ⊤ e i l ) s_{i,t}=Softmax_i(\bold{u}^{l\top}_t \bold{e}^l_i) si,t=Softmaxi(utl⊤eil)
N N N为专家数量, g i , t g_{i,t} gi,t表示为第 i i i个专家的阈值并且是稀疏的, s i , t s_{i,t} si,t表示为token到专家的关联性, T o p K ( ⋅ ) TopK(\cdot) TopK(⋅)表示为前 K K K个关联性最高的分数并代表了第 t 个标记和所有 N 个专家计算的分数, e i l \bold{e}^l_i eil表示第 l l l层第 i i i个专家的中心
DeepSeekMoE Architecture
Fine-Grained Expert Segementation
通过减少FFN的中间隐藏层为原来的 1 m \frac{1}{m} m1,切片每个专家FFN到m个更小的专家,因此公式描述为:
h t l = ∑ i = 1 m N ( g i , t F F N i ( u t l ) ) + u t l \bold{h}^l_t=\sum^{mN}_{i=1}(g_{i,t}FFN_i(\bold{u}^l_t))+\bold{u}^l_t htl=i=1∑mN(gi,tFFNi(utl))+utl
g i , t = { s i , t s i , t ∈ T o p K ( { s j , t ∣ 1 ≤ j ≤ m N } , m K ) 0 o t h e r w i s e g_{i,t}=\begin{cases}s_{i,t}&s_{i,t}\in TopK(\{s_{j,t}|1\leq j\leq mN\},mK)\\ 0 & otherwise\end{cases} gi,t={si,t0si,t∈TopK({sj,t∣1≤j≤mN},mK)otherwise
s i , t = S o f t m a x i ( u t l ⊤ e i l ) s_{i,t}=Softmax_i(\bold{u}^{l\top}_t \bold{e}^l_i) si,t=Softmaxi(utl⊤eil)
Shared Expert Isolation
单独利用 K s K_s Ks个专家实现共享专家隔离,公式描述为:
h t l = ∑ i = 1 K s F F N i ( u t l ) + ∑ i = 1 m N ( g i , t F F N i ( u t l ) ) + u t l \bold{h}^l_t=\sum^{K_s}_{i=1}FFN_i(\bold{u}^l_t)+\sum^{mN}_{i=1}(g_{i,t}FFN_i(\bold{u}^l_t))+\bold{u}^l_t htl=i=1∑KsFFNi(utl)+i=1∑mN(gi,tFFNi(utl))+utl
g i , t = { s i , t s i , t ∈ T o p K ( { s j , t ∣ 1 ≤ j ≤ m N } , m K − K s ) 0 o t h e r w i s e g_{i,t}=\begin{cases}s_{i,t}&s_{i,t}\in TopK(\{s_{j,t}|1\leq j\leq mN\},mK - K_s)\\ 0 & otherwise\end{cases} gi,t={si,t0si,t∈TopK({sj,t∣1≤j≤mN},mK−Ks)otherwise
s i , t = S o f t m a x i ( u t l ⊤ e i l ) s_{i,t}=Softmax_i(\bold{u}^{l\top}_t \bold{e}^l_i) si,t=Softmaxi(utl⊤eil)
Load Balance Consideration
Expert-Level Balance Loss: 其中 α 1 \alpha_1 α1为专家级平衡超参数, N ′ N' N′为 ( m N − K s ) (mN-K_s) (mN−Ks) , K ′ K' K′为 ( m K − K s ) (mK-K_s) (mK−Ks), 1 ( ⋅ ) \mathbb{1}(\cdot) 1(⋅)为指示函数
L E x p B a l = α 1 ∑ i = 1 N ′ f i P i L_{ExpBal} = \alpha_1\sum^{N'}_{i=1}f_iP_i LExpBal=α1i=1∑N′fiPi
f i = N ′ K ′ T ∑ t = 1 T 1 ( Token t selects Expert i ) f_i=\frac{N'}{K'T}\sum^T_{t=1}\mathbb{1}(\text{Token} \ t \ \text{selects Expert} \ i) fi=K′TN′t=1∑T1(Token t selects Expert i)
P i = 1 T ∑ t = 1 T s i , t P_i=\frac{1}{T}\sum^T_{t=1}s_{i,t} Pi=T1∑t=1Tsi,t
Device-Level Balance Loss: 其中 α 2 \alpha_2 α2为设备级平衡超参数,将所有路由到的专家分组为 D D D个,表示为 { ϵ 1 , ϵ 2 , ⋯ , ϵ D } \{\epsilon_1,\epsilon_2,\cdots,\epsilon_D\} {ϵ1,ϵ2,⋯,ϵD},则每组在一个设备上,则损失函数为:
L D e v B a l = α 2 ∑ i = 1 D f i ′ P i ′ L_{DevBal}=\alpha_2\sum^D_{i=1}f'_iP'_i LDevBal=α2i=1∑Dfi′Pi′
f i ′ = 1 ∣ ϵ i ∣ ∑ j ∈ ϵ i f j f'_i=\frac{1}{|\epsilon_i|}\sum_{j\in \epsilon_i}f_j fi′=∣ϵi∣1j∈ϵi∑fj
P i ′ = ∑ j ∈ ϵ i P j P'_i=\sum_{j\in \epsilon_i}P_j Pi′=j∈ϵi∑Pj
Experiments
Experimental Setup
采样自Deepseek AI公司自建的多语言语料库, 100B个token,训练BPE
训练工具:HAI-LLM (幻方自家的训练平台),包含了张量并行、ZeRO数据并行、PipeDream管道并行
显卡:H800、A100集群节点 (有NVLink、NVSwitch连接节点)
优化器:AdamW
对齐方式:SFT
下游任务验证:
- 语言建模 (Language Modeling)
- 语言理解与推理 (Language Understanding and Reasoning)
- 阅读理解 (Reading Comprehension)
- 代码生成 (Code Generation)
- 闭卷问答 (Close-Book Question Answering)
Results
- DeepSeekMoE 与 MoE 模型的上限紧密结合
- DeepSeekMoE 在路由专家中表现出较低的冗余
- 共享专家无法被路由专家取代
- DeepSeekMoE 更准确地获取知识
- 在 2T 令牌上训练 DeepSeekMoE 16B,并展示其可与 DeepSeek 7B 和 LLaMA2 7B 相媲美的出色性能,计算量仅为 40% 左右
- 将 DeepSeekMoE 扩展到 145B 参数时,DeepSeekMoE 145B 仍然保持了与 GShard 架构相比的巨大优势,并表现出与 DeepSeek 67B 相当的性能
DeepseekMath
论文:DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models
作者:Zhihong Shao et. al.
单位:Deep Seek AI et. al.
该论文中讲解了GRPO
PPO算法
PPO是一种演员-评论家算法
优化的替代目标:
J P P O ( θ ) = E [ q ∼ P ( Q ) , o ∼ π θ o l d ( O ∣ q ) ] 1 ∣ o ∣ ∑ t = 1 ∣ o ∣ min [ π θ ( o t ∣ q , o < t ) π θ o l d ( o t ∣ q , o < t ) A t , c l i p ( π θ ( o t ∣ q , o < t ) π θ o l d ( o t ∣ q , o < t ) , 1 − ϵ , 1 + ϵ ) A t ] J_{PPO}(\theta)=\mathbb{E}[q\sim P(Q), o\sim \pi_{\theta_{old}}(O|q)]\frac{1}{|o|}\sum^{|o|}_{t=1}\min[\frac{\pi_\theta(o_t|q,o_{<t})}{\pi_{\theta_{old}}(o_t|q,o_{<t})}A_t,clip(\frac{\pi_\theta(o_t|q,o_{<t})}{\pi_{\theta_{old}}(o_t|q,o_{<t})},1-\epsilon, 1+\epsilon)A_t] JPPO(θ)=E[q∼P(Q),o∼πθold(O∣q)]∣o∣1t=1∑∣o∣min[πθold(ot∣q,o<t)πθ(ot∣q,o<t)At,clip(πθold(ot∣q,o<t)πθ(ot∣q,o<t),1−ϵ,1+ϵ)At]
其中 π θ \pi_{\theta} πθ和 π θ o l d \pi_{\theta_{old}} πθold为当前与旧的策略模型, q q q和 o o o分别为从问题数据集与旧策略中采样得到的问题与输出, ϵ \epsilon ϵ为剪枝先骨干的超参数, A t A_t At为优势函数
优势函数由GAE进行计算,基于奖励 { r ≥ t } \{r_{\geq t}\} {r≥t}和可学习的值函数 V ϕ V_{\phi} Vϕ,通过KL散度计算:
r t = r ϕ ( q , o ≤ t ) − β log π θ ( o t ∣ q , o < t ) π r e f ( o t ∣ q , o < t ) r_t=r_{\phi}(q,o_{\leq t}) - \beta\log\frac{\pi_{\theta}(o_t|q, o_{<t})}{\pi_{ref}(o_t|q,o_{<t})} rt=rϕ(q,o≤t)−βlogπref(ot∣q,o<t)πθ(ot∣q,o<t)
其中 r ϕ r_{\phi} rϕ为奖励模型, π r e f \pi_{ref} πref为参考模型,用于初始化SFT模型, β \beta β为KL惩罚系数
问题:由于 PPO 中采用的价值函数通常是另一个与策略模型大小相当的模型,因此它带来了大量的内存和计算负担
GRPO算法
与PPO的区别:
优化目标:
J G R P O ( θ ) = E [ q ∼ P ( Q ) , { o i } i = 1 G ∼ π θ o l d ( O ∣ q ) ] 1 G ∑ i = 1 G 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ { min [ π θ ( o i , t ∣ q , o i , < t ) π θ o l d ( o i , t ∣ q , o i , < t ) A ^ i , t , c l i p ( π θ ( o i , t ∣ q , o i , < t ) π θ o l d ( o i , t ∣ q , o i , < t ) , 1 − ϵ , 1 + ϵ ) A ^ i , t ] − β D K L [ π θ ∣ ∣ π r e f ] } J_{GRPO}(\theta)=\mathbb{E}[q\sim P(Q), \{o_i\}^G_{i=1}\sim \pi_{\theta_{old}}(O|q)]\frac{1}{G}\sum^G_{i=1}\frac{1}{|o_i|}\sum^{|o_i|}_{t=1}\{\min[\frac{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t}|q,o_{i,<t})}\hat{A}_{i,t},clip(\frac{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t}|q,o_{i,<t})},1-\epsilon, 1+\epsilon)\hat{A}_{i,t}]-\beta\mathbb{D}_{KL}[\pi_{\theta}||\pi_{ref}]\} JGRPO(θ)=E[q∼P(Q),{oi}i=1G∼πθold(O∣q)]G1i=1∑G∣oi∣1t=1∑∣oi∣{min[πθold(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t)A^i,t,clip(πθold(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t),1−ϵ,1+ϵ)A^i,t]−βDKL[πθ∣∣πref]}
其中 ϵ \epsilon ϵ和 β \beta β为超参数, A ^ i , t \hat{A}_{i,t} A^i,t为相关输出奖励的优势, D K L [ π θ ∣ ∣ π r e f ] = π r e f ( o i , t ∣ q , o i , < t ) π θ ( o i , t ∣ q , o i , < t ) − log π r e f ( o i , t ∣ q , o i , < t ) π θ ( o i , t ∣ q , o i , < t ) − 1 > 0 \mathbb{D}_{KL}[\pi_\theta||\pi_{ref}]=\frac{\pi_{ref}(o_{i,t}|q,o_{i,<t})}{\pi_\theta(o_{i,t}|q,o_{i,<t})}-\log{\frac{\pi_{ref}(o_{i,t}|q,o_{i,<t})}{\pi_\theta(o_{i,t}|q,o_{i,<t})}}-1 > 0 DKL[πθ∣∣πref]=πθ(oi,t∣q,oi,<t)πref(oi,t∣q,oi,<t)−logπθ(oi,t∣q,oi,<t)πref(oi,t∣q,oi,<t)−1>0
Outcome Supervision RL with GRPO
形式上,对于每个问题 q q q,一组输出 { o 1 , o 2 , ⋯ , o G } \{o_1,o_2,\cdots,o_G\} {o1,o2,⋯,oG}从旧策略模型 π θ o l d \pi_{\theta_{old}} πθold中采样。然后使用奖励模型对输出进行评分,相应地产生 G G G奖励 r = { r 1 , r 2 , ⋯ , r G } \bold{r}=\{r_1,r_2,\cdots,r_G\} r={r1,r2,⋯,rG}。随后,通过减去组平均值并除以组标准差来归一化这些奖励。结果监督在每个输出 o i o_i oi 的末尾提供归一化奖励,并将输出中所有token的优势 A ^ i , t \hat{A}_{i,t} A^i,t设置为归一化奖励,即 A ^ i , t = r ~ i = r i − m e a n ( r ) s t d ( r ) \hat{A}_{i,t}=\widetilde{r}_i=\frac{r_i-mean(\bold{r})}{std(\bold{r})} A^i,t=r i=std(r)ri−mean(r),然后通过GRPO中定义的目标来优化策略
Process Supervision RL with GRPO
过程监督,在每个推理步骤结束时提供奖励。形式上,给定问题 q q q和 G G G采样输出 { o 1 , o 2 , ⋯ , o G } \{o_1,o_2,\cdots,o_G\} {o1,o2,⋯,oG},使用过程奖励模型对输出的每一步进行评分,产生相应的奖励: R = { { r 1 i n d e x ( 1 ) , ⋯ , r 1 i n d e x ( K 1 ) } , ⋯ , { r G i n d e x ( 1 ) , ⋯ , r G i n d e x ( K G ) } } \bold{R}=\{\{r^{index(1)}_1,\cdots,r^{index(K_1)}_1\},\cdots,\{r^{index(1)}_G,\cdots,r^{index(K_G)}_G\}\} R={{r1index(1),⋯,r1index(K1)},⋯,{rGindex(1),⋯,rGindex(KG)}},其中 i n d e x ( j ) index(j) index(j) 是第 j j j步的结束标记索引, Ki 是第 i 个输出中的总步数。用平均值和标准差对这些奖励进行归一化,即 r ^ i i n d e x ( j ) = r i i n d e x ( j ) − m e a n ( R ) s t d ( R ) \hat{r}^{index(j)}_i=\frac{r^{index(j)}_i-mean(\bold{R})}{std(\bold{R})} r^iindex(j)=std(R)riindex(j)−mean(R) 。随后,过程监督将每个token的优势计算为以下步骤的归一化奖励之和,即 A ^ i , t = ∑ i n d e x ( j ) ≥ t r ~ i i n d e x ( j ) \hat{A}_{i,t}=\sum_{index(j)\geq t}\widetilde{r}^{index(j)}_{i} A^i,t=∑index(j)≥tr iindex(j),然后通过GRPO中定义的目标来优化策略。
Iterative RL with GRPO
随着强化学习训练过程的进行,旧的奖励模型可能不足以监督当前的策略模型。因此,进一步探索了 GRPO 的迭代 RL。如下 所示,在迭代 GRPO 中,根据策略模型的采样结果为奖励模型生成新的训练集,并使用包含 10% 历史数据的重放机制持续训练旧的奖励模型。然后,将参考模型设置为策略模型,并使用新的奖励模型不断训练策略模型。
Deepseek V2
论文:DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model
单位:Deepseek AI
Abstract
Deepseek V2,基于MoE架构,总共236B,对于每个token激活21B,支持最大128K的上下文长度
结构的提升:Multi-head Latent Attention (MLA),Key-Value缓存压缩
同Deepseek 67B比较:5.76倍生成速度、42.5%的训练成本节省、93.3%的kv cache节约
预训练语料量:8.7T个token
微调方式:SFT+RL
Introduction
问题:
- 过去的LLM改进是以更大的训练计算资源和推理吞吐量的潜在降低为代价,阻碍 LLM 的广泛适应与使用
- Multi-Head Attention的Key-Value (KV) cache对 LLM 的推理效率构成重大障碍
- 已有的GQA、MQA都是在尝试减少 KV 缓存,这些方法通常会牺牲性能
方法:在Transformer架构上优化了attention机制与FFN,提出了Multi-head Latent Attention (MLA)和DeepSeekMoE
- MLA是一种利用低秩key-value联合压缩 (low rank key-value joint compression) 的注意力机制
- Transformer中的FFN替换为DeepseekMoE,包含fine-grained expert segmentation和shared expert isolation
数据集:8.1T个token的多源预训练语料库,1.5M个对话场景用于SFT
对齐方式:SFT + GRPO进行模型对齐
Architecture
基于Transformer架构,具体模块如下:
Basic Architecture
第 t t t个token的FFN输入为 u t \bold{u}_t ut,计算的输出 h t ′ \bold{h}'_t ht′为:
h t ′ = u t + ∑ i = 1 N s F F N i ( s ) ( u t ) + ∑ i = 1 N r g i , t F F N i ( r ) ( u t ) \bold{h}'_t=\bold{u}_t+\sum^{N_s}_{i=1}FFN^{(s)}_i(\bold{u}_t)+\sum^{N_r}_{i=1}g_{i,t}FFN_i^{(r)}(\bold{u}_t) ht′=ut+i=1∑NsFFNi(s)(ut)+i=1∑Nrgi,tFFNi(r)(ut)
g i , t = { s i , t s i , t ∈ T o p K ( { s j , t ∣ 1 ≤ j ≤ N r } , K r ) 0 o t h e r w i s e g_{i,t}=\begin{cases}s_{i,t} & s_{i,t}\in TopK(\{s_{j,t}|1\leq j \leq N_r\},K_r)\\ 0 & otherwise\end{cases} gi,t={si,t0si,t∈TopK({sj,t∣1≤j≤Nr},Kr)otherwise
s i , t = S o f t m a x i ( u t ⊤ e i ) s_{i,t}=Softmax_i(\bold{u}^{\top}_t\bold{e}_i) si,t=Softmaxi(ut⊤ei)
Multi-Head Latent Attention: Boosting Inference Efficiency
Preliminaries: Standard Multi-Head Attention
embedding维度为 d d d,头数为 n h n_h nh,单头注意力维度为 d h d_h dh,在注意力层中第 t t t个token的注意力输入为 h t ∈ R d \bold{h}_t\in \mathbb{R}^d ht∈Rd,首先分别乘以三个矩阵得到 q t \bold{q}_t qt, k t \bold{k}_t kt, v t ∈ R d n n h \bold{v}_t\in \mathbb{R}^{d_nn_h} vt∈Rdnnh,通过三个矩阵 W Q W^Q WQ, W K W^K WK, W V ∈ R d h n h × d W^V\in\mathbb{R}^{d_hn_h\times d} WV∈Rdhnh×d,有:
q t = W Q h t \bold{q}_t=W^Q\bold{h}_t qt=WQht
k t = W K h t \bold{k}_t=W^K\bold{h}_t kt=WKht
V t = W V h t \bold{V}_t=W^V\bold{h}_t Vt=WVht
对于多头注意力,则为:
[ q t , 1 ; q t , 2 ; ⋯ ; q t , n h ] = q t [\bold{q}_{t,1};\bold{q}_{t,2};\cdots;\bold{q}_{t,n_h}]=\bold{q}_t [qt,1;qt,2;⋯;qt,nh]=qt
[ k t , 1 ; k t , 2 ; ⋯ ; k t , n h ] = k t [\bold{k}_{t,1};\bold{k}_{t,2};\cdots;\bold{k}_{t,n_h}]=\bold{k}_t [kt,1;kt,2;⋯;kt,nh]=kt
[ v t , 1 ; v t , 2 ; ⋯ ; v t , n h ] = v t [\bold{v}_{t,1};\bold{v}_{t,2};\cdots;\bold{v}_{t,n_h}]=\bold{v}_t [vt,1;vt,2;⋯;vt,nh]=vt
o t , i = ∑ j = 1 t S o f t m a x j ( q t , i ⊤ k j , i d h ) v j , i \bold{o}_{t,i}=\sum^t_{j=1}Softmax_j(\frac{\bold{q}^\top_{t,i}\bold{k}_{j,i}}{\sqrt{d_h}})\bold{v}_{j,i} ot,i=j=1∑tSoftmaxj(dhqt,i⊤kj,i)vj,i
u t = W O [ o t , 1 ; o t , 2 ; ⋯ ; o t , n h ] \bold{u}_t=W^O[\bold{o}_{t,1};\bold{o}_{t,2};\cdots;\bold{o}_{t,n_h}] ut=WO[ot,1;ot,2;⋯;ot,nh]
其中 q t , i , k t , i , v t , i ∈ R d n \bold{q}_{t,i},\bold{k}_{t,i},\bold{v}_{t,i}\in \mathbb{R}^{d_n} qt,i,kt,i,vt,i∈Rdn, W O ∈ R d × d h n h W^O\in \mathbb{R}^{d\times d_hn_h} WO∈Rd×dhnh
Low-Rank Key-Value Joint Compression
c t K V = W D K V h t \bold{c}^{KV}_t=W^{DKV}\bold{h}_t ctKV=WDKVht
k t C = W U K c t K V \bold{k}^C_t=W^{UK}\bold{c}^{KV}_t ktC=WUKctKV
v t C = W U V c t K V \bold{v}^C_t=W^{UV}\bold{c}^{KV}_t vtC=WUVctKV
c t K V ∈ R d c \bold{c}^{KV}_t\in\mathbb{R}^{d_c} ctKV∈Rdc, W D K V ∈ R d c × d W^{DKV}\in\mathbb{R}^{d_c\times d} WDKV∈Rdc×d是一个向下投影矩阵, W U K , W U V ∈ R d h n h × d c W^{UK},W^{UV}\in \mathbb{R}^{d_hn_h\times d_c} WUK,WUV∈Rdhnh×dc是向上投影K、V的矩阵, d c ( < < d h n h ) d_c(<<d_hn_h) dc(<<dhnh) 表示KV压缩的维度
在推理过程中,MLA仅使用包含 d c l d_cl dcl个元素的KV Cache c t K V c^{KV}_t ctKV, l l l为层数。
进一步利用低秩压缩分解 q q q,有:
c t Q = W D Q h t \bold{c}^Q_t=W^{DQ}\bold{h}_t ctQ=WDQht
q t C = W U Q c t Q \bold{q}^C_t=W^{UQ}\bold{c}^Q_t qtC=WUQctQ
其中, c t Q ∈ R d c ′ \bold{c}^Q_t\in\mathbb{R}^{d'_c} ctQ∈Rdc′, d c ′ ( < < d h n h ) d'_c (<<d_hn_h) dc′(<<dhnh)为 q q q压缩的维度, W D Q ∈ R d c ′ × d W^{DQ}\in\mathbb{R}^{d'_c\times d} WDQ∈Rdc′×d, W U Q ∈ R d h n h × d c ′ W^{UQ}\in \mathbb{R}^{d_hn_h\times d'_c} WUQ∈Rdhnh×dc′
Decoupled Rotary Position Embedding
RoPE紧耦合将导致 W U K W^{UK} WUK无法被 W Q W^Q WQ吸收,因为与当前生成的标记相关的 RoPE 矩阵将位于 W Q W^Q WQ和 W U K W^{UK} WUK 之间,并且矩阵乘法不遵循交换定律
[ q t , 1 R ; q t , 2 R ; ⋯ ; q t , n h R ] = q t R = R o P E ( W Q R c t Q ) [\bold{q}^R_{t,1};\bold{q}^R_{t,2};\cdots;\bold{q}^R_{t,n_h}]=\bold{q}^R_t=RoPE(W^{QR}\bold{c}^Q_t) [qt,1R;qt,2R;⋯;qt,nhR]=qtR=RoPE(WQRctQ)
k t R = R o P E ( W K R h t ) \bold{k}^R_t=RoPE(W^{KR}\bold{h}_t) ktR=RoPE(WKRht)
q t , i = [ q t , i C ; q t , i R ] \bold{q}_{t,i}=[\bold{q}^C_{t,i};\bold{q}^R_{t,i}] qt,i=[qt,iC;qt,iR]
k t , i = [ k t , i C ; k t R ] \bold{k}_{t,i}=[\bold{k}^C_{t,i};\bold{k}^R_t] kt,i=[kt,iC;ktR]
o t , i = ∑ j = 1 t S o f t m a x j ( q t , i ⊤ d h + d h R ) v j , i C \bold{o}_{t,i}=\sum^t_{j=1}Softmax_j(\frac{\bold{q}^\top_{t,i}}{\sqrt{d_h+d^R_h}})\bold{v}^C_{j,i} ot,i=∑j=1tSoftmaxj(dh+dhRqt,i⊤)vj,iC
u t = W O [ o t , 1 ; o t , 2 ; ⋯ ; o t , n h ] \bold{u}_t=W^O[\bold{o}_{t,1};\bold{o}_{t,2};\cdots;\bold{o}_{t,n_h}] ut=WO[ot,1;ot,2;⋯;ot,nh]
W Q R ∈ R d h R n h × d c ′ W^{QR}\in \mathbb{R}^{d^R_hn_h\times d'_c} WQR∈RdhRnh×dc′, W K R ∈ R d h R × d W^{KR}\in\mathbb{R}^{d^R_h}\times d WKR∈RdhR×d, R o P E ( ⋅ ) RoPE(\cdot) RoPE(⋅)表示应用RoPe矩阵, [ ⋅ ; ⋅ ] [\cdot;\cdot] [⋅;⋅]表示拼接操作
因此,Deepseek-V2只要求 ( d c + d h R ) l (d_c+d^R_h)l (dc+dhR)l个元素的KV cache
Alignment
Supervised Fine-Tuning
数据集:共1.5M个样本作为指令调优数据集,1.2M 个用于有用的实例、0.3M个用于安全目的,并提高了数据质量
训练细节:2个epoch微调,学习率 5 × 1 0 − 6 5\times 10^{-6} 5×10−6
IFEval作为指令遵循评估
Reinforcement Learning
训练算法:GRPO
训练策略:
- 训练一个推理奖励模型 R M r e a s o n i n g RM_{reasoning} RMreasoning用于代码与推理任务,优化策略模型: r i = R M r e a s o n i n g ( o i ) r_i=RM_{reasoning}(o_i) ri=RMreasoning(oi)
- 人类偏好对齐:利用多奖励框架,包有用性奖励模型 R M h e l p f u l RM_{helpful} RMhelpful、安全性奖励模型 R M s a f e t y RM_{safety} RMsafety、规则约束的奖励模型 R M r u l e ( O i ) RM_{rule}(O_i) RMrule(Oi),有: r i = c 1 ⋅ R M h e l p f u l ( o i ) + c 2 ⋅ R M s a f e t y ( o i ) + c 3 ⋅ R M r u l e ( o i ) r_i=c_1 \cdot RM_{helpful(o_i)}+c_2\cdot RM_{safety}(o_i)+c_3\cdot RM_{rule}(o_i) ri=c1⋅RMhelpful(oi)+c2⋅RMsafety(oi)+c3⋅RMrule(oi)
Deepseek V3
论文:DeepSeek-V3 Technical Report
单位:DeepSeek AI
Astract
DeepSeek V3,规模671B,激活模型37B
技术点:
- MLA
- DeepSeek MoE
- 辅助无损策略:auxiliary-loss-free strategy
- 多令牌预测训练目标
- DualPipe算法
- GRPO + SFT对齐
训练时间:2.788M H800 GPU小时
Introduction
模型结构:DeepSeek-MoE + MLA
预训练策略:auxiliary-loss-free策略,FP8混合精度训练框架
并行算法:DualPipe算法
两阶段上下文预训练:
- 第一阶段:32K上下文拓展
- 第二阶段:128K上下文拓展
- 数据量:14.8T 高质量多样化Token
后训练:
- 从DeepSeek-R1系列模型中蒸馏推理能力
- 基本思想:SFT + RL (GRPO)
Architecture
Basic Architecture
沿用V2架构,MLA + DeepSeek MoE
Multi-Head Latent Attention
基本不变。
c t K V = W D K V h t \bold{c}^{KV}_t=W^{DKV}\bold{h}_t ctKV=WDKVht (需要caching)
[ k t , 1 C ; k t , 2 C ; ⋯ ; k t , n h C ] = k t C = W U K c t K V [\bold{k}^C_{t,1};\bold{k}^C_{t,2};\cdots;\bold{k}^C_{t,n_h}]=\bold{k}^C_t=W^{UK}\bold{c}^{KV}_t [kt,1C;kt,2C;⋯;kt,nhC]=ktC=WUKctKV
k t R = R o P E ( W K R h t ) \bold{k}^R_t=RoPE(W^{KR}\bold{h}_t) ktR=RoPE(WKRht) (需要caching)
k t , i = [ k t , i C ; k t R ] \bold{k}_{t,i}=[\bold{k}^C_{t,i};\bold{k}^R_t] kt,i=[kt,iC;ktR]
v t C = W U V c t K V \bold{v}^C_t=W^{UV}\bold{c}^{KV}_t vtC=WUVctKV
对于Attention queries,使用低秩压缩:
c t Q = W D Q h t \bold{c}^Q_t=W^{DQ}\bold{h}_t ctQ=WDQht
[ q t , 1 C ; q t , 2 C ; ⋯ ; q t , n h C ] = q t C = W U Q c t Q [\bold{q}^C_{t,1};\bold{q}^C_{t,2};\cdots;\bold{q}^C_{t,n_h}]=\bold{q}^C_t=W^{UQ}\bold{c}^Q_t [qt,1C;qt,2C;⋯;qt,nhC]=qtC=WUQctQ
[ q t , 1 R ; q t , 2 R ; ⋯ ; q t , n h R ] = q t R = R o P E ( W Q R c t Q ) [\bold{q}^R_{t,1};\bold{q}^R_{t,2};\cdots;\bold{q}^R_{t,n_h}]=\bold{q}^R_t=RoPE(W^{QR}\bold{c}^Q_t) [qt,1R;qt,2R;⋯;qt,nhR]=qtR=RoPE(WQRctQ)
q t , i = [ q t , i C ; q t , i R ] \bold{q}_{t,i}=[\bold{q}^C_{t,i};\bold{q}^R_{t,i}] qt,i=[qt,iC;qt,iR]
o t , i = ∑ j = 1 t S o f t m a x j ( q t , i ⊤ d h + d h R ) v j , i C \bold{o}_{t,i}=\sum^t_{j=1}Softmax_j(\frac{\bold{q}^\top_{t,i}}{\sqrt{d_h+d^R_h}})\bold{v}^C_{j,i} ot,i=∑j=1tSoftmaxj(dh+dhRqt,i⊤)vj,iC
u t = W O [ o t , 1 ; o t , 2 ; ⋯ ; o t , n h ] \bold{u}_t=W^O[\bold{o}_{t,1};\bold{o}_{t,2};\cdots;\bold{o}_{t,n_h}] ut=WO[ot,1;ot,2;⋯;ot,nh]
DeepSeekMoE with Auxiliary-Loss-Free Load Balancing
基本的DeepSeekMoE:跟v2有点区别,先sigmoid之后算分数
h t ′ = u t + ∑ i = 1 N s F F N i ( s ) ( u t ) + ∑ i = 1 N r g i , t F F N i ( r ) ( u t ) \bold{h}'_t=\bold{u}_t+\sum^{N_s}_{i=1}FFN^{(s)}_i(\bold{u}_t)+\sum^{N_r}_{i=1}g_{i,t}FFN_i^{(r)}(\bold{u}_t) ht′=ut+i=1∑NsFFNi(s)(ut)+i=1∑Nrgi,tFFNi(r)(ut)
g i , t = g i , t ′ ∑ j = 1 N r g j , t ′ g_{i,t}=\frac{g'_{i,t}}{\sum^{N_r}_{j=1}g'_{j,t}} gi,t=∑j=1Nrgj,t′gi,t′
g i , t ′ = { s i , t s i , t ∈ T o p K ( { s j , t ∣ 1 ≤ j ≤ N r } , K r ) 0 o t h e r w i s e g'_{i,t}=\begin{cases}s_{i,t} & s_{i,t}\in TopK(\{s_{j,t}|1\leq j \leq N_r\},K_r)\\ 0 & otherwise\end{cases} gi,t′={si,t0si,t∈TopK({sj,t∣1≤j≤Nr},Kr)otherwise
s i , t = S i g m o i d ( u t ⊤ e i ) s_{i,t}=Sigmoid(\bold{u}^{\top}_t\bold{e}_i) si,t=Sigmoid(ut⊤ei)
辅助无损负载均衡 (Auxiliary-Loss-Free Load Balancing)
效果:在负载均衡和模型性能之间实现更好的权衡
为每个专家引入bias b i b_i bi,添加到 s i , t s_{i,t} si,t,以确定前 K K K个路由: g i , t ′ = { s i , t s i , t + b i ∈ T o p K ( { s j , t + b j ∣ 1 ≤ j ≤ N r } , K r ) 0 o t h e r w i s e g^{'}_{i,t}=\begin{cases}s_{i,t} & s_{i,t} + b_i \in TopK(\{s_{j,t}+b_j|1\leq j\leq N_r\},K_r)\\ 0 & otherwise\end{cases} gi,t′={si,t0si,t+bi∈TopK({sj,t+bj∣1≤j≤Nr},Kr)otherwise
其中 b i b_i bi仅用于路由,在每个步骤结束后,如果相应的专家超载了,将偏差衰减 γ \gamma γ,若负载不足,则增加 γ \gamma γ,为 b i b_i bi更新速度的超参数
互补序列辅助损失 (Complementary Sequence-Wise Auxiliary Loss)
基于DeepSeek MoE的平衡损失推导而出。
L B a l = α ∑ i = 1 N r f i P i L_{Bal}=\alpha\sum^{N_r}_{i=1}f_iP_i LBal=αi=1∑NrfiPi
f i = N r K r T ∑ t = 1 T 1 ( s i , t ∈ T o p K ( { s j , t ∣ 1 ≤ j ≤ N r } , K r ) ) f_i=\frac{N_r}{K_rT}\sum^T_{t=1}\mathbb{1}(s_{i,t}\in TopK(\{s_{j,t}|1\leq j \leq N_r\}, K_r)) fi=KrTNrt=1∑T1(si,t∈TopK({sj,t∣1≤j≤Nr},Kr))
s i , t ′ = s i , t ∑ j = 1 N r s j , t s^{'}_{i,t}=\frac{s_{i,t}}{\sum^{N_r}_{j=1}s_{j,t}} si,t′=∑j=1Nrsj,tsi,t (不同于之前的专家级平衡损失之处,亲和力分数做了归一化)
P i = 1 T ∑ t = 1 T s i , t ′ P_i=\frac{1}{T}\sum^T_{t=1}s^{'}_{i,t} Pi=T1∑t=1Tsi,t′
更多的技巧:
- 节点有限路由:使用受限路由机制来限制训练期间的通信成本
- 无token丢失:DeepSeek-V3 在训练期间不会掉落任何标记
Multi-Token Prediction
设定了多token预测 (MTP) 目标,将预测范围扩展到每个位置的多个后续token。
作用:
- 提高数据效率,使训练信号更加稠密
- MTP 可能使模型能够预先规划其表示形式,以便更好地预测后续的token
与传统的MTP不同:按顺序预测额外的 Token,并在每个预测深度保留完整的因果链
MTP模块:使用 D D D个序列模块预测 D D D个额外的token,第 k k k个MTP模块包含了共享的嵌入层 E m b ( ⋅ ) Emb(\cdot) Emb(⋅)、共享的输出头 O u t H e a d ( ⋅ ) OutHead(\cdot) OutHead(⋅),一个Transformer块 T R M k ( ⋅ ) TRM_k(\cdot) TRMk(⋅),一个拼接矩阵 M k ∈ R d × 2 d M_k\in \mathbb{R}^{d\times 2d} Mk∈Rd×2d。
对于第 i i i个输入token为 t i t_i ti,在第 k k k个预测深度时,首先联合第 i i i个token在第 ( k − 1 ) (k-1) (k−1)个深度的表示 h i k − 1 ∈ R d h^{k-1}_i\in \mathbb{R}^d hik−1∈Rd以及第 ( i + k ) (i+k) (i+k)个token的嵌入 E m b ( t i + k ) ∈ R d Emb(t_{i+k})\in \mathbb{R}^d Emb(ti+k)∈Rd,用线性拼接:
h i ′ k = M k [ R M S N o r m ( h i k − 1 ) ; R M S N o r m ( E m b ( t i + k ) ) ] \bold{h}^{'k}_i=M_k[RMSNorm(\bold{h}^{k-1}_i);RMSNorm(Emb(t_{i+k}))] hi′k=Mk[RMSNorm(hik−1);RMSNorm(Emb(ti+k))]
当 k k k为1时,为main model的表示
联合的 h i ′ k \bold{h}^{'k}_i hi′k作为第 k k k深度的Transofmrer块输入,输出当前深度的 h i k \bold{h}^k_i hik: h 1 : T − k k = T R M k ( h 1 : T − k ′ k ) \bold{h}^k_{1:T-k}=TRM_k(h^{'k}_{1:T-k}) h1:T−kk=TRMk(h1:T−k′k)
其中 T T T为输入的序列长度, i : j i:j i:j表示切片操作。最后将 h i k \bold{h}^k_i hik作为输入,通过共享输出头计算第 k k k个额外预测的token的概率分布 p i + 1 + k k ∈ R V p^k_{i+1+k}\in \mathbb{R}^V pi+1+kk∈RV,其中 V V V为词表长度: p i + k + 1 k = O u t H e a d ( h i k ) p^k_{i+k+1}=OutHead(h^k_i) pi+k+1k=OutHead(hik)
输出头 O u t H e a d ( ⋅ ) OutHead(\cdot) OutHead(⋅)线性地映射输出并应用 S o f t m a x ( ⋅ ) Softmax(\cdot) Softmax(⋅)计算预测的第 k k k个token概率分布
维持预测因果链的原理与 EAGLE 相似,但通过MTP改善训练
MTP训练目标:交叉熵, L M T P k = CrossEntropy ( p 2 + k : T + 1 k , t 2 + k : T + 1 ) = − 1 T ∑ i = 2 + k T + 1 log P i k [ t i ] L^k_{MTP}=\text{CrossEntropy}(p^k_{2+k:T+1},t_{2+k:T+1})=-\frac{1}{T}\sum^{T+1}_{i=2+k}\log P^k_i[t_i] LMTPk=CrossEntropy(p2+k:T+1k,t2+k:T+1)=−T1∑i=2+kT+1logPik[ti]
T T T表示为输入长度, t i t_i ti表示预测的第 i i i个位置的token, p i k [ t i ] p^k_{i}[t_i] pik[ti]为 t i t_i ti对应的概率分布。最后,引入权重因子 λ \lambda λ计算MTP的额外训练目标: L M T P = λ D ∑ k = 1 D L M T P k L_{MTP}=\frac{\lambda}{D}\sum^D_{k=1}L^k_{MTP} LMTP=Dλ∑k=1DLMTPk
MTP推理:可直接丢弃MTP模块,通过主模型推理
Infrastructures
对这块外行就没细看了,截了技术示意图跟示例。
DualPipe and Computation-Communication Overlap
这里涉及的并行计算算法,如图示所示:
例子:
FP8 Mixed Precision Framework
Fine-Grained Quantization:
DeepSeek-R1
论文:DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
单位:DeepSeek AI
Abstract
R1-Zero:纯强化学习训练的模型,展现了可观的推理能力
R1:在强化学习之前进行多阶段训练与引入冷启动数据
Introduction
问题:
- 有效测试时间扩展的挑战仍然是研究界的一个悬而未决的问题
- 已有方法都没有达到与 OpenAI 的 o1 系列模型相当的一般推理性能。
目标:探索 LLM 在没有任何监督数据的情况下发展推理能力的潜力,专注于它们通过纯 RL 过程的自我进化。
技术路线:DeepSeek-V3-Base作为基础模型,GRPO作为RL训练框架
DeepSeek-Zero出现的问题:低可读性、语言混淆
方法:DeepSeek-R1
- 数千条冷启动数据微调DeepSeek-V3-Base模型
- 应用基于推理的RL (DeepSeek-R1Zero)
- 在RL过程中接近收敛后,对RL的检查点进行拒绝采样创建新的SFT数据,结合来自DeepSeek-V3的监督数据(如写作、事实QA、自我认知等),重新训练DeepSeek-V3-Base模型
- 此后再次进行额外的RL过程,考虑所有场景的提示词
此后,探索了DeepSeek-R1以蒸馏更小的模型
Approach
DeepSeek-R1-Zero: Reinforcement Learning on the Base Model
强化学习
优化目标:
J G R P O ( θ ) = E [ q ∼ P ( Q ) , { o i } i = 1 G ∼ π θ o l d ( O ∣ q ) ] 1 G ∑ i = 1 G ( min [ π θ ( o i ∣ q ) π θ o l d ( o i ∣ q ) A i , c l i p ( π θ ( o i ∣ q ) π θ o l d ( o i ∣ q ) , 1 − ϵ , 1 + ϵ ) A i ] − β D K L ( π θ ∣ ∣ π r e f ) ) J_{GRPO}(\theta)=\mathbb{E}[q\sim P(Q), \{o_i\}^G_{i=1}\sim \pi_{\theta_{old}}(O|q)]\frac{1}{G}\sum^G_{i=1}(\min[\frac{\pi_{\theta}(o_{i}|q)}{\pi_{\theta_{old}}(o_{i}|q)}A_{i},clip(\frac{\pi_{\theta}(o_{i}|q)}{\pi_{\theta_{old}}(o_{i}|q)},1-\epsilon, 1+\epsilon)A_{i}]-\beta\mathbb{D}_{KL}(\pi_{\theta}||\pi_{ref})) JGRPO(θ)=E[q∼P(Q),{oi}i=1G∼πθold(O∣q)]G1i=1∑G(min[πθold(oi∣q)πθ(oi∣q)Ai,clip(πθold(oi∣q)πθ(oi∣q),1−ϵ,1+ϵ)Ai]−βDKL(πθ∣∣πref))
其中 ϵ \epsilon ϵ和 β \beta β为超参数, A ^ i , t \hat{A}_{i,t} A^i,t为相关输出奖励的优势, D K L ( π θ ∣ ∣ π r e f ) = π r e f ( o i ∣ q ) π θ ( o i ∣ q ) − log π r e f ( o i ∣ q ) π θ ( o i ∣ q ) − 1 > 0 \mathbb{D}_{KL}(\pi_\theta||\pi_{ref})=\frac{\pi_{ref}(o_{i}|q)}{\pi_\theta(o_{i}|q)}-\log{\frac{\pi_{ref}(o_{i}|q)}{\pi_\theta(o_{i}|q)}}-1 > 0 DKL(πθ∣∣πref)=πθ(oi∣q)πref(oi∣q)−logπθ(oi∣q)πref(oi∣q)−1>0
对于每组奖励 { r 1 , r 2 , ⋯ , r G } \{r_1,r_2,\cdots, r_G\} {r1,r2,⋯,rG},有: A i = r i − m e a n ( { r 1 , r 2 , ⋯ , r G } ) s t d ( { r 1 , r 2 , ⋯ , r G } ) A_i=\frac{r_i-mean(\{r_1,r_2,\cdots,r_G\})}{std(\{r_1,r_2,\cdots,r_G\})} Ai=std({r1,r2,⋯,rG})ri−mean({r1,r2,⋯,rG})
奖励建模
基于规则的两种奖励,没有应用process neural reward model或outcome neural reward model
- 准确奖励:准确率奖励模型评估响应是否正确
- 格式奖励:将它的思考过程放在
<think>
和</think>
标签之间
训练模板
A conversation between User and Assistant. The user asks a question, and the Assistant solves it. The assistant first thinks about the reasoning process in the mind and then provides the user with the answer. The reasoning process and answer are enclosed within <think> </think> and <answer> </answer> tags, respectively, i.e., <think> reasoning process here </think> <answer> answer here </answer>.
User: prompt.
Assistant:
顿悟时刻
缺陷:糟糕的可读性,语言混淆
DeepSeek-R1: Reinforcement Learning with Cold Start
两个问题:
- 通过纳入少量高质量数据作为冷启动,是否可以进一步提高推理性能或加速收敛?
- 我们如何训练一个用户友好的模型,该模型不仅产生清晰连贯的思维链 (CoT),而且还展示了强大的通用能力?
冷启动数据微调:
- 数据获取:以长 CoT 的 few-shot prompting 为例,直接提示模型通过反射和验证生成详细的答案,以可读格式收集 DeepSeek-R1-Zero 输出,并通过人工标注者进行后处理来提炼结果
- 冷启动特点:
- 高可读性:在为 DeepSeek-R1 创建冷启动数据时,我们设计了一个可读的模式,在每个响应的末尾包含一个摘要,并过滤掉对读者不友好的响应。在这里,我们将输出格式定义为
|special_token|<reasoning_process>|special_token|<summary>
,其中推理过程是查询的 CoT,摘要用于总结推理结果 - 可能性:通过使用人类先验仔细设计冷启动数据的模式,我们观察到与 DeepSeek-R1-Zero 相比性能更好
- 高可读性:在为 DeepSeek-R1 创建冷启动数据时,我们设计了一个可读的模式,在每个响应的末尾包含一个摘要,并过滤掉对读者不友好的响应。在这里,我们将输出格式定义为
面向推理的强化学习:
- 目的:增强在推理密集型任务上的推理能力
- CoT中混淆不同语言 -> 引入语言一致性奖励,计算目标语言词在 CoT 中的比例 -> 可能损失推理性能,但显著提升了可读性
拒绝采样与有监督微调:
- 目的:整合来自其他域的数据,以增强模型在编写、角色扮演和其他通用任务方面的能力
- 推理数据:600k,通过RL训练的拒绝采样获取,将RL多次生成的答案投喂到DeepSeek-V3进行判断
- 非推理数据:200K,Deepseek pipeline,复用Deepseek-v3 SFT部分数据。对于特定的非推理任务,调用DeepSeek-V3在回答问题之前生成CoT。
适用于所有场景的强化学习:
- 目的:对齐人类偏好
- 使用奖励信号与多元化提示分布的组合训练模型
- 对于推理数据:利用基于规则的奖励引导学习过程
- 对于通用数据:采用奖励模型来捕捉复杂而细微的场景中的人类偏好
Distillation: Empower Small Models with Reasoning Capability
拒绝采样DeepSeek-R1的800K数据进行微调,见上图所示的过程。