deepseek v3 base要点
MTP : Multi-Token Prediction
训练时:
1. 把前一个block中input tokens经过embedding layer和transformer block的输出,进入output head之前的内容记为h,与下一个block的input tokens经过embedding layer输出的内容都经过rmsnorm后concat 再送入projection和block。这是causal chain的连接关系,在embedding层增加了残差链接。
2. 用k个tokens作为一个部分送入1个block然后输出k个output tokens和后移T个序列长度的target tokens做cross entropy loss。
推理时:
推理阶段要用上一个状态的预估值作为下一个状态的输入,和训练时不同。训练时用ground truth做输入;推理用上一个状态的估值。
MLA (多头潜在注意力)
一种注意力架构,通过将键和值联合压缩成一个潜在向量,显著降低了推理过程中的KV缓存。
主要公式:
1. 我的理解就是把KV Q用像lora的方法 拆开 降秩,一个高维度矩阵用两个矩阵表示;但是RoPE部分没有用到!
KV
Q
O
同样可以通过结合律优化矩阵乘
把 (WUQ)TWUK 离线融合成一个矩阵,可以像前面的优化一样,减少矩阵运算,注意力架构 也将MHA 转化成了 MQA
2. 常规的方法就是把 KV 降维到一个潜在向量C,当需要计算时再把C升维到 KV。另外这里对位置信息进行了解耦,原始的RoPE需要在query和key中融入相对位置信息。但在MLA中,由于KV Cache缓存的是压缩后的低秩key-value信息,不能对相对位置信息同样进行低秩处理。
3. 主要逻辑是一种通过改变矩阵乘法的计算顺序来优化注意力机制计算效率的方法。这种方法在DeepSeek-V2模型中得到了应用,特别是在解码阶段,能够有效减少计算量。方案来源于SGlang。在deepseekv3基于V2对MLA进一步改进,对Q矩阵也进行了低秩处理。主要是qk用降秩的向量来计算。
MOE (mixture of expert)
共享专家隔离策略(shared expert isolation)的整合。在这种情况下,一些专家被标记为共享专家,旨在捕捉共同知识并减轻激活专家之间的冗余。这种共享专家隔离策略有助于提高模型的性能和效率。
- 子图(a):展示了具有传统top-2路由策略的MoE层。在这种情况下,每个令牌被分配给两个专家中的一个,即top-2。这是传统的MoE路由策略,其中每个令牌只与两个专家相关。
- 子图(b):说明了细粒度专家分割(fine-grained expert segmentation)策略。相比于传统的top-2路由,DeepSeekMoE采用了更细粒度的专家划分,将专家进一步分为多个子专家。这样,每个令牌可以与更多的专家相关,实现更灵活的激活专家的组合。
- 子图(c):展示了共享专家隔离策略(shared expert isolation)的整合。在这种情况下,一些专家被标记为共享专家,旨在捕捉共同知识并减轻激活专家之间的冗余。这种共享专家隔离策略有助于提高模型的性能和效率。
这里用的是C图方法
F8量化策略
量化精度:FP8(E4M3)
量化粒度:
权重:block-wise量化,shape是[128,128],静态离线量化
激活:per-token-group 量化, 动态在线量化
(1) 对于激活值,我们以 1x128 的 组 为基础对元素进行分组和缩放(每个 token 每 128 个通道);
(2) 对于权重,我们以 128x128 的 块 为基础对元素进行分组和缩放(每 128 个输入通道每 128 个输出通道)。
如图1的a部分input和weight的fp8量化rescale表示就是权重量化还有output部分就是激活量化部分。 b部分是对于下溢和精度损失的处理。使用FP8等低精度格式进行GEMM运算时,中间结果的累加容易出现下溢,导致精度损失。传统的做法是使用FP32进行累加,以保持精度。每当 Tensor Core 累加了 128 个 FP8 结果后,就会将这些结果转换(或缩放)到 FP32 精度,然后在 CUDA Cores 的 FP32 寄存器中进行累加。
图2 是对fp8量化策略使用的解释。 大部分GEMM运算采用FP8提升整体训练速度(前向传播、激活反向、权重反向)对应图中Fprop, Dgard, Wgrad模块。 对精度敏感模块仍保留原有精度(Embedding、RMSNorm) 。权重梯度和优化器状态均采用高精度存储fp32存储。
DualPipe
细粒度的计算通信并行:
• 将PP stage拆分为更细的模块,提升模块交替编排的灵活度
• 参考ZeroBubble,反向传递中权重更新和梯度传递独立操作
• 经细粒度的拆分和编排后,计算流和通信流barrier刚好可重叠
双向管道调度减少PP中的气泡
• 1F1B中每个batch拆分为1个forward和1个backward
• ZeroBubble中把backward拆分为input和weight两个部分
• DualPipe中使用对称处理,不同batch从不同device上流水
deepseek R系列:deepseek R1 zero
GRPO算法
deepseek R1 zero是deepseek v3 base上使用GRPO算法(Group Relative Policy Optimization)进行强化学习训练。 GRPO算法比PPO算法(Proximal Policy Optimization)用更少的算力达到大规模强化学习训练的目的,GRPO 的核心思想是简化这个过程:它不需要批评模型,而是通过组内相对奖励来优化策略模型。具体来说,GRPO 会从当前策略中采样一组输出,然后根据这些输出的相对表现来调整策略,而不是依赖一个单独的批评模型。
图2公式解释:这里O 是模型输出 Reference model用于和policy model的输出计算KL散度。这里r 是reward 是G个输出结果经过reward model得到的奖励,经过group computation得到相对优势A。
通俗解释:目标函数的核心是让模型生成高奖励的输出(通过相对优势 Ai和策略比率),同时避免新策略偏离旧策略太远(通过裁剪和 KL 散度)。
从deepseek R1 zero到deepseek R1
deepseek R1 zero在输出内容和表达方面略微逊色,于是在deepseek R1采用部分长思维链数据来冷启动。然后做强化学习训练。进行拒绝采样推理产出的数据,然后监督微调,最后做全场景的强化学习。全程使用了GRPO算法。
ref:
zomi酱的deepseek系列讲解
从DeepSeek V3的MTP,解析MTP技术的前世今生_deepseek mtp-CSDN博客
DeepSeek-R1-GRPO理解-CSDN博客
https://zhuanlan.zhihu.com/p/20565045592
DeepSeek-R1 技术全景解析:从原理到实践的“炼金术配方” ——附多阶段训练流程图与核心误区澄清 - 腾讯云开发者社区-腾讯云
https://zhuanlan.zhihu.com/p/17565919423 https://zhuanlan.zhihu.com/p/16213202688
https://zhuanlan.zhihu.com/p/20269638568
https://zhuanlan.zhihu.com/p/16323685381
DeepSeek-V3 技术要点解析_deepseek v3知乎解析-CSDN博客