ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【完备版】DeepSeek-R1大模型学习笔记(架构、练习、Infra) [打印本页]

作者: 半亩花草    时间: 2025-2-12 21:29
标题: 【完备版】DeepSeek-R1大模型学习笔记(架构、练习、Infra)
0 DeepSeek系列总览

DeepSeek-R1基于DeepSeek-V3-Base模型,提出了一系列练习策略,包括基于纯强化学习的练习(DeepSeek-R1-Zero)、基于多阶段的练习和冷启动(DeepSeek-R1)、知识蒸馏等。下面是我总结的DeepSeek系列的整体框架:

1 模型架构设计

基本参数



专家混合模型(MoE)[DeepSeek-V2提出, DeepSeek-V3改良]

MoE在每次推理时选择性地激活部分模型参数,在不成比例增长计算成本的环境下,可以扩展模型参数。在DeepSeek-V2中就已经提出了用于FFN层的DeepSeekMoE。


Auxiliary-Loss-Free Load Balancing [DeepSeek-V3提出]
和DeepSeek-V3一样,DeepSeek-R1接纳了细粒度的MoE,一些expert作为共享expert,另一些expert作为routed expert进行动态激活。对于第t个token                                              u                            t                                       u_t                  ut​,下面是MoE计算的过程:

以前基于auxiliary loss的方法需要修改loss function,当auxiliary loss很大时会影响模型性能。那么Auxiliary-Loss-Free则是在gating value                                    g                              g                  g的基础上,额外加上了bias来实现负载均衡:

留意bias只影响专家路由,而不影响任何梯度。专家overloaded则降低bias,专家unoverloaded则增大bias。调整的速率由超参数                                   γ                              \gamma                  γ控制,这个和反向传播的梯度更新过程雷同。
下图是该方法的出处:Auxiliary-Loss-Free Load Balancing Strategy for Mixture-of-Experts文章所提出的负载均衡策略:

和DeepSeek-V2一样,DeepSeek-V3和DeepSeek-R1都接纳了限定装备数量的MoE,而且不会再练习时做token dropping了。
多头潜在留意力(MLA)[DeepSeek-V2提出]

MLA通过将QKV矩阵投影到低维潜在空间,显著降低计算和内存成本。DeepSeek-V2中就提出了用MLA来替代传统的多头自留意力。
MLA和其他留意力的对比如下,KV cache以一个更低的维度去存储和计算。

K和V的联合压缩如下:

真正推理时,cache的就是低维的                                             c                            t                                       K                               V                                                 c_t^{KV}                  ctKV​,而且down-proj和up-proj矩阵可以分别被吸收进                                             W                            Q                                       W^Q                  WQ和                                             W                            O                                       W^O                  WO中,不会造成额外的计算开销。这个方法和Palu: Compressing KV-Cache with Low-Rank Projection那篇文章同等。具体的融合过程如下(以                                             W                            Q                                       W^Q                  WQ的融合为例):

为了在练习时降低激活的memory,也对query做低秩压缩:

【对query低秩分解怎么省memory,算的时间不需要重构回去?】【回答:只需要生存低秩的query,然后在反向传播时重计算一步,节省了需要存储的memory】
RoPE位置编码兼容性考虑
但是KV cache的低秩压缩和RoPE位置编码并不兼容!如果对                                             k                            t                            C                                       k_t^C                  ktC​做RoPE,                                             W                                       U                               K                                                 W^{UK}                  WUK会和位置敏感的RoPE矩阵耦合在一起,从而不能在推理时被吸收进                                             W                            Q                                       W^Q                  WQ中(这里应该强调一下吸收是totally offline完成的),带来额外的计算。
进一步理解                                             W                                       U                               K                                                 W^{UK}                  WUK和RoPE矩阵的耦合:与生成当前token相干的RoPE矩阵位于                                             W                            Q                                       W^{Q}                  WQ和                                             W                                       U                               K                                                 W^{UK}                  WUK之间,而矩阵乘法不满足交换律。
于是DeepSeek-V2提出相识耦RoPE策略,用额外的多头query和一个共享key来计算RoPE,然后和原本的query和key拼接起来。至于这里怎么得到的额外query和key,就是用来两个额外的线性层来算得的。

下图表现了MLA的整个过程,值得留意的一点是,MLA的低秩分解是基于练习的,而非用SVD之类的方式post-training分解直接推理(比如Pula文章)。

以是,在MLA中不存储KV cache了,而是存储压缩后的低维度激活                                                   c                               t                                           K                                  V                                                       c_t^{KV}                     ctKV​和                                                   k                               t                               R                                            k_{t}^R                     ktR​两部分存储开销大大降低。
多token预测(MTP)[DeepSeek-V3提出]

MTP使DeepSeek-R1并行预测多个token,从而显著提高推理速率。MTP已经在DeepSeek-V3中已经被用于练习的目的。


2 DeepSeek-R1-Zero及DeepSeek-R1的练习策略

DeepSeek-R1-Zero with RL only


DeepSeek-R1-Zero直接在DeepSeek-V3-Base模型的基础上用纯的Group Relative Policy Optimization (GRPO)强化学习算法,而不引入Supervised Fine-tuning (SFT)练习。
   强化学习算法:近端策略优化(PPO)和GRPO
GRPO相比于PPO更好,主要缘故原由如下:1)抛弃了单独的value模型;2)GRPO计算reward时,改成了一个q生成多个r,然后reward打分

  DeepSeek-R1-Zero接纳基于规则的奖励机制,包罗两部分奖励:**1)accuracy奖励;2)格式奖励。**遵照的练习模板如下图所示,思考过程和回答过程需要放在对应的tag中,引导模型学会尺度化的思考过程格式,也提高了输出的结构化程度和可解释性。

DeepSeek-R1-Zero的缺点
DeepSeek-R1-Zero面临着可读性差和语言混合(比如中英文混杂)等挑战。于是DeepSeek-R1进一步解决了这两个问题。
DeepSeek-R1 with Both RL and SFT


在DeepSeek-R1-Zero的基础上,DeepSeek-R1加入了冷启动,而且用高质量数据做SFT+RL练习,得到了当今的“最强大模型”。下面是关键技术和练习流程:
步骤1:冷启动SFT
在高质量的长思维链(CoT)数据上做SFT,改善DeepSeek-R1-Zero可读性较差的问题。数据的采集方式如下:以带长CoT的few-shot prompting为例,直接提示模型生成带思考和验证的具体的答案;以可读的格式收集DeepSeek-R1-Zero的输出,并通过人工细化和调整结果。
步骤2:面向推理的RL
冷启动练习后,用和DeepSeek-R1-Zero一样的RL练习策略继承练习,来提高模型的推理本领。练习过程中发现CoT经常表现出语言混合,特别是当RL提示涉及多种语言时,以是提出接纳语言同等性奖励改善语言混杂的问题,进一步加强模型的可读性。
步骤3:拒绝采样和SFT
RL练习收敛后,在这一步中融合推理数据和非推理数据进一步微调模型加强模型的通用本领。

然后融合上述数据,然后进行SFT,以适应非推理场景(通用本领)。统共约莫800k条数据,练习DeepSeek-V3-Base 2个epoch。
步骤4:全场景RL
进一步使模型与人类的偏好保持同等,进一步用了二阶段RL阶段提高模型的资助性和无害性,同时改进其功能推理本领。对于推理任务,继承用基于规则的奖励;对于通用任务,接纳偏好奖励模型。
FP8混合精度量化 [DeepSeek-V3提出]

使用FP8量化,淘汰内存使用和计算成本,同时保持数值稳固性。接纳混合精度练习,根据计算需求调整不同层的位宽精度。


为了进一步提高模型的性能,做了如下优化:

知识蒸馏 [DeepSeek-R1提出]

用DeepSeek-R1直接蒸馏Qwen2.5-Math-1.5B, Qwen2.5-Math-7B, Qwen2.5-14B, Qwen2.5-32B, Llama-3.1-8B和Llama-3.3-70B-Instruct,都有显著的性能提拔。蒸馏时只在800k个样本上用了SFT,而并没有用RL。直接说一下文章的结论:

下面是在Qwen上蒸馏和RL的对比:

DeepSeek-R1的一些失败尝试

过程奖励模型(PRM)

PRM没有取得很好的效果,主要是下面三点缘故原由:

蒙特卡洛搜刮树(MCTS)

MCTS用于加强test-time计算扩展性,但是在练习scale up是遇到问题:

总的来说,当与预练习好的价值模型匹配时,MCTS可以提高推理时的性能,但是通过自搜刮迭代提高模型性能仍旧是一个重大挑战。
3 Infrastructures [DeepSeek-V3提出]

计算集群


练习框架


DualPipe和计算-通信overlap

配景问题:跨节点专家并行性带来的通信开销会造成低效的计算通信比(约为1:1),于是提出了DualPipe,通过有用地overlap前反向传播的计算和通信阶段来加速模型练习,同时淘汰了bubble。
核心思想:在一对单独的前向块和反向块中overlap计算和通信
方法:将每个块分成四个部分—— attention, all-to-all dispatch, MLP, and all-to-all combine
MoE专家并行表示图如下:
)
前向传播如下:

反向传播如下:

这个图的意义:可以观察到 前向和反向传播是瓜代进行的,计算和通信也是瓜代进行的。 因此,当数据1在做计算的时间,数据2可以并行做通信,如许通信部分的时间就被完全隐蔽起来了。
DualPipe流水线设计如下,核心就是尽大概用到上述的前反向传播的计算通信并行,淘汰了流水线中的bubble。

跨节点all-to-all通信

写了高效的跨节点all-to-all通信核,包括dispatching和combining两部分。这一部分偏比力工程的实现。
节省显存


推理和摆设

Prefill阶段(compute bound)


Decoding阶段(memory bound)


练习成本

DeepSeek-V3公开的预练习成本:

DeepSeek-R1在DeepSeek-V3-Base基础上进行RL+SFT微调,具体练习成本并未公开:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4