DeepSeek AI I
🐺 DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models
近期研究与实践已通过实证表明,在训练数据充足的条件下,通过增加参数量和计算预算来扩展语言模型规模,可以显著提升模型能力
- 将模型扩展至极大规模也会带来极高的计算成本。考虑到这一高昂成本,混合专家架构已成为一种广受关注的解决方案。该架构能够在扩展参数规模的同时,将计算成本维持在较低水平
- 近年来,将 MoE 架构应用于 Transformer 的研究已成功将语言模型扩展至较大规模,并取得显著的性能表现。这些成果凸显 MoE 语言模型的巨大潜力与发展前景
尽管 MoE 架构展现出良好的潜力,现有架构仍可能存在知识混杂与知识冗余问题,限制专家的专业化,即每个专家掌握互不重叠且具有明确侧重的知识。传统 MoE 架构使用 MoE 层替换 Transformer 中的前馈网络。每个 MoE 层包含多个专家,每个专家在结构上均与标准 FFN 相同,而每个 token 被分配给一个或两个专家。该架构存在两个潜在问题
- 知识混杂:现有 MoE 实践通常采用数量有限的专家,例如 8 个或 16 个,因此,分配给某个专家的 token 很可能涵盖多种不同的知识。由此,该专家会倾向于将差异较大的多类知识整合到自身参数中,而这些知识难以被同时利用
- 知识冗余:分配给不同专家的 token 可能需要共通知识。因此,多个专家可能最终在各自的参数中学习到相同的共通知识,从而造成专家参数的冗余。这些问题限制专家专业化,并降低专家参数的利用效率
针对上述问题,作者提出 DeepSeekMoE,一种旨在实现极致专家专业化的创新 MoE 架构。该架构包含两项主要策略
- 细粒度专家划分:在保持参数量不变的前提下,通过拆分 FFN 的中间隐藏维度,将专家划分为更细的粒度。相应地,在保持计算成本不变的条件下,激活更多细粒度专家,从而使被激活专家的组合更加灵活、适应性更强。细粒度专家划分使不同知识能够得到更细致的分解,并由不同专家更精确地学习,从而使每个专家保持更高的专业化水平。此外,被激活专家组合方式的灵活性提升,也有助于实现更准确、更有针对性的知识获取
- 共享专家隔离:将部分专家单独划分为始终激活的共享专家,旨在捕获并整合不同上下文中的共通知识。通过将共通知识压缩到这些共享专家中,可以减少其余路由专家之间的冗余。这能够提高参数效率,并使每个路由专家通过专注于各自独特的方面而保持专业化
作者首先从参数量为 2B 的较小规模出发,验证 DeepSeekMoE 架构的优势,并在涵盖不同任务的 12 个零样本或少样本基准上进行评估
- DeepSeekMoE 2B 显著优于 GShard 2B,甚至能够达到更大规模 MoE 模型 GShard 2.9B 的性能水平,而后者的专家参数量和计算量均为其 1.5 倍
- 在论文的对照实验中,DeepSeekMoE 2B 的性能接近总参数量相同的稠密对照模型;作者将后者作为该实验中的模型容量上界参照
- 进一步将模型参数规模扩展至 16B,并在包含 2T token 的大规模语料上训练 DeepSeekMoE 16B。评估结果表明,DeepSeekMoE 16B 仅使用约 40% 的计算量,即可达到与 DeepSeek 7B 相当的性能,后者是在相同 2T token 语料上训练的稠密模型
🐗 Preliminaries: Mixture-of-Experts for Transformers
标准 Transformer 语言模型由层标准 Transformer 块堆叠构成,其中每个块可表示为
- 其中,
表示序列长度,
表示自注意力模块,
表示前馈网络(FFN),
是所有 token 经过第
层注意力模块后的隐藏状态,
是第
个 token 经过第
个 Transformer 块后的输出隐藏状态
构建 MoE 语言模型的常见做法是,按指定间隔将 Transformer 中的 FFN 替换为 MoE 层。一个 MoE 层由多个专家组成,其中每个专家在结构上均与标准 FFN 相同。随后,每个 token 被分配给一个或两个专家。如果第层 FFN 被替换为 MoE 层,则其输出隐藏状态
的计算表示为
-
表示专家总数,
是第
个专家的 FFN,
表示第
个专家的门控值,
表示 token 与专家之间的亲和度,
表示由第
个 token 与所有
个专家之间计算得到的亲和度得分中最高的
个得分所构成的集合,
是第
层中第
个专家的质心
是稀疏的,即
个门控值中仅有
个非零值。这种稀疏性保证 MoE 层内的计算效率,即每个 token 仅被分配给
个专家,并仅在这
个专家中进行计算

🌠 DeepSeekMoE Architecture
在专家数量有限的情况下,分配给某个专家的 token 更可能涵盖多种类型的知识。因此,该专家会倾向于在其参数中学习差异很大的多类知识,而这些知识难以被同时利用。然而,如果每个 token 能够被路由至更多专家,不同知识就有可能被分解,并分别由不同专家学习。在这种情况下,每个专家仍可保持较高的专业化水平,从而使各专家的知识分布更有侧重
- 作者在保持专家参数量和计算成本不变的同时,对专家进行更细粒度的划分。更细粒度的专家划分使被激活专家的组合更加灵活、适应性更强
- 通过将 FFN 的中间隐藏维度缩减至原来的
,将每个专家 FFN 划分为
个更小的专家。由于每个专家的规模变小,作者相应地将激活专家的数量增加至原来的
倍,以保持相同的计算成本
- 专家参数总量等于标准 FFN 参数量的
倍,
表示细粒度专家的总数。采用细粒度专家划分策略后,非零门控值的数量也增加至
- 从组合的角度来看,细粒度专家划分策略显著提高被激活专家的组合灵活性。考虑
的情况。典型的 top-2 路由策略可以产生
种可能的组合。相比之下,如果将每个专家划分为 4 个小专家,细粒度路由策略可以产生
种潜在组合。组合灵活性的大幅提升,增强实现更准确、更有针对性的知识获取的潜力
采用传统路由策略时,分配给不同专家的 token 可能需要某些共通的知识或信息。因此,多个专家可能最终在各自的参数中学习到相同的共享知识,从而造成专家参数冗余。然而,如果设置专门用于捕获和整合不同上下文中共通知识的共享专家,其他路由专家之间的参数冗余就会得到缓解。冗余的减少将有助于构建参数效率更高、专家更加专业化的模型
- 除细粒度专家划分策略外,作者进一步将
个专家单独划分为共享专家。无论路由模块如何,每个 token 都会确定性地被分配给这些共享专家。为保持计算成本不变,其余路由专家中被激活的专家数量将减少
。引入共享专家隔离策略后,完整 DeepSeekMoE 架构中的 MoE 层可表示为
- 在 DeepSeekMoE 中,共享专家的数量为
,路由专家的总数为
,非零门控值的数量为
自动学习得到的路由策略可能遇到负载不均衡问题,这一问题存在两个明显弊端。首先,存在路由坍塌的风险,即模型始终只选择少数专家,导致其他专家无法得到充分训练。其次,如果专家分布在多个设备上,负载不均衡可能加剧计算瓶颈
- 专家级均衡损失通过约束路由负载降低专家坍塌风险。为降低路由坍塌的风险,作者采用专家级均衡损失。记
为路由专家总数,
为每个 token 激活的路由专家数;
为专家级均衡系数,
为指示函数。损失计算如下
- 设备级均衡损失直接约束各设备的计算负载。除专家级均衡损失外,作者还引入设备级均衡损失。当目标是缓解计算瓶颈时,无须在专家层面施加严格的均衡约束,因为过度的负载均衡约束会损害模型性能。作者的主要目标是确保设备之间的计算均衡。如果将所有路由专家划分为
组
,并将每组部署在一个设备上,则设备级均衡损失的计算如下
- 在实践中,作者设置较小的专家级均衡系数
,以降低路由坍塌的风险,同时设置较大的设备级均衡系数
,以促进设备之间的计算均衡
🐻 DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model
通常,LLM 的智能水平会随着参数量的增加而提升,使其在各类任务中展现出涌现能力。然而,这种提升的代价是训练所需的计算资源增加,以及推理吞吐量可能下降。这些约束构成重大挑战,阻碍 LLM 的广泛采用与应用
- 为解决这一问题,作者提出 DeepSeek-V2,一种性能强大的开源混合专家语言模型,通过创新的 Transformer 架构实现低成本训练与高效推理。该模型的总参数量为 236B,每个 token 激活其中的 21B 参数,并支持 128K token 的上下文长度
作者使用所提出的多头潜在注意力和 DeepSeekMoE,对 Transformer 框架中的注意力模块和前馈网络进行优化
- 在注意力机制方面,多头注意力的键值缓存是制约 LLM 推理效率的重要因素。分组查询注意力和多查询注意力可以减少 KV 缓存,但在该论文的对照实验中,其模型性能低于 MHA。作者提出 MLA,一种采用键值联合低秩压缩的注意力机制。在论文的实验设置下,MLA 的模型性能优于 MHA,同时显著减少推理过程中的 KV 缓存,从而提高推理效率
- 对于前馈网络,作者沿用 DeepSeekMoE 架构,该架构采用细粒度专家划分和共享专家隔离,以提高专家专业化的潜力。与 GShard 等传统 MoE 架构相比,DeepSeekMoE 架构展现出显著优势,使得以较低成本训练高性能模型成为可能
- 由于训练过程中采用专家并行,作者还设计辅助机制,以控制通信开销并确保负载均衡。通过结合这两项技术,DeepSeek-V2 同时具备强大的性能、较低的训练成本和高效的推理吞吐量
作者构建一个包含 8.1T token 的高质量、多来源预训练语料库
- 与作者此前发布的 DeepSeek 67B 所使用的语料相比,该语料库的数据量更大,尤其增加中文数据,同时具有更高的数据质量
- 作者首先使用完整的预训练语料库对 DeepSeek-V2 进行预训练。随后,收集 150 万段对话,涵盖数学、代码、写作、推理、安全等多个领域,用于进行监督微调,得到 DeepSeek-V2 Chat (SFT)
- 作者沿用 DeepSeekMath 的方法,采用组相对策略优化,进一步使模型与人类偏好对齐,得到 DeepSeek-V2 Chat (RL)
为促进对 MLA 和 DeepSeekMoE 的进一步研究与开发,作者还面向开源社区发布 DeepSeek-V2-Lite,这是一个采用 MLA 和 DeepSeekMoE 的较小规模模型。其总参数量为 15.7B,每个 token 激活其中的 2.4B 参数
🦉 Multi-Head Latent Attention: Boosting Inference Efficiency
传统 Transformer 模型通常采用多头注意力,但在生成过程中,其庞大的键值缓存会成为限制推理效率的瓶颈。多查询注意力和分组查询注意力所需的 KV 缓存更少;在本文所引用的 V2 论文对照实验中,两者的模型性能低于 MHA
- 针对 DeepSeek-V2,作者设计多头潜在注意力。通过键值联合低秩压缩,MLA 在论文的对照实验中取得优于 MHA 的模型性能,同时显著减少 KV 缓存
设为嵌入维度,
为注意力头数,
为每个头的维度,
为第
个 token 在某个注意力层中的注意力输入。标准 MHA 首先分别通过三个矩阵
,生成
- 随后,将
分别划分为
个头,以进行多头注意力计算
- 其中,
分别表示第
个注意力头的查询、键和值;
表示输出投影矩阵。在自回归解码时,MHA 缓存历史 token 在各层的键和值。每个 token 跨全部层共需缓存
个元素。在模型部署时,庞大的 KV 缓存是限制最大批量大小和序列长度的重要瓶颈
MLA 的核心是对键和值进行联合低秩压缩,以减少 KV 缓存
- 其中,
是键和值的压缩潜在向量;
表示 KV 压缩维度,且
是下投影矩阵;
分别是键和值的上投影矩阵
- 暂不考虑位置编码时,MLA 在每层只需缓存
,因此每个 token 跨全部层共需缓存
个元素,其中
表示层数。此外,在推理过程中,由于
可以被吸收到
中,
可以被吸收到
中,因此甚至无须显式计算注意力所需的键和值。此外,为减少训练过程中的激活内存占用,作者还对查询进行低秩压缩,尽管这无法减少 KV 缓存
- 其中,
是查询的压缩潜在向量;
表示查询压缩维度,且
;
和
分别是查询的下投影矩阵和上投影矩阵
直接对低秩压缩后的键加入 RoPE,会阻碍前述权重吸收。具体而言,如果对键应用 RoPE,式中的
就会与一个位置敏感的 RoPE 矩阵耦合。这样,在推理过程中,
就无法再被吸收到
中,因为一个依赖查询与键相对位置的 RoPE 矩阵会位于
和
之间,而这些矩阵一般不能交换乘法顺序。若仍只缓存压缩后的 KV 潜在向量,解码时就需要重新展开历史键;改为缓存展开后的键则会增加 KV 缓存。后面的解耦 RoPE 用于避免这一取舍
- 为解决这一问题,作者提出解耦 RoPE 策略,使用额外的多头查询
和一个共享键
来承载 RoPE,其中
表示解耦查询和键的每头维度。采用解耦 RoPE 策略后,MLA 执行如下计算
- 其中,
和
分别是用于生成解耦查询和键的矩阵;
表示应用 RoPE 矩阵的操作;
表示拼接操作。在推理过程中,每层还需缓存解耦后的键。因此,DeepSeek-V2 的每个 token 跨全部层共需缓存
个元素。长度为
的单条序列需缓存
个元素
🦆 DeepSeekMoE: Training Strong Models at Economical Costs
DeepSeekMoE 包含两个核心思想:将专家划分为更细的粒度,以实现更高的专家专业化水平和更准确的知识获取;隔离出部分共享专家,以减少路由专家之间的知识冗余。在激活专家参数量和专家总参数量均相同的对照实验中,DeepSeekMoE 显著优于 GShard 等传统 MoE 架构
- 设
为第
个 token 的 FFN 输入,则 FFN 输出
的计算如下
-
和
分别表示共享专家和路由专家的数量;
和
分别表示第
个共享专家和第
个路由专家;
表示被激活的路由专家数量;
是第
个专家的门控值
是 token 与专家之间的亲和度;
是该层中第
个路由专家的质心;
表示由第
个 token 与所有路由专家之间计算得到的亲和度得分中最高的
个得分构成的集合
作者设计一种设备受限路由机制,以限制与 MoE 相关的通信成本。采用专家并行时,路由专家会分布在多个设备上。对于每个 token,其与 MoE 相关的通信频次与目标专家所涉及的设备数量成正比
- 由于 DeepSeekMoE 采用细粒度专家划分,激活专家的数量可能较多,因此在采用专家并行时,与 MoE 相关的通信成本会更高
- 对于 DeepSeek-V2,除对路由专家进行朴素的 top-K 选择外,作者还确保每个 token 的目标专家最多分布在
个设备上。具体而言,对于每个 token,首先选择
个设备,这些设备上包含亲和度得分最高的专家。随后,在这
个设备上的专家中执行 top-K 选择
- 在实践中,作者发现,当
时,设备受限路由能够取得与不受限制的 top-K 路由大致相当的良好性能
对于自动学习得到的路由策略,作者考虑负载均衡问题
- 首先,负载不均衡会增加路由坍塌的风险,使部分专家无法得到充分训练和利用。其次,在采用专家并行时,负载不均衡会降低计算效率
- 在 DeepSeek-V2 的训练过程中,作者设计三种辅助损失,分别用于控制专家级负载均衡、设备级负载均衡和通信均衡
专家级均衡损失。作者采用专家级均衡损失以降低路由坍塌的风险, 为其权重系数
设备级均衡损失。 除专家级均衡损失外,作者还设计设备级均衡损失,以确保不同设备之间的计算均衡。在 DeepSeek-V2 的训练过程中,作者将所有路由专家划分为组
,并将每组部署在一个设备上。
为设备级均衡损失的权重系数,损失计算如下
通信均衡损失。作者引入通信均衡损失,鼓励各设备接收的 token 数量趋于均衡。设备受限路由限制发送量,但接收量仍可能不均,降低通信效率。下式中, 为通信均衡损失的权重系数
- 设备受限路由机制确保每个设备最多向其他设备传输
个隐藏状态。同时,通信均衡损失用于鼓励每个设备从其他设备接收约
个隐藏状态。通信均衡损失鼓励设备之间的信息交换趋于均衡,从而促进高效通信
尽管均衡损失旨在促进负载均衡,但需要认识到,它们无法保证严格的负载均衡
- 为减少负载不均衡造成的计算浪费,作者在训练过程中引入设备级 token 丢弃策略:超出容量的 token 不参与相应设备上的专家计算,但仍保留在原序列中。各设备的容量按平均计算负载设定,容量因子为 1.0
- 在超出容量的设备上,优先丢弃亲和度得分较低的 token 分配,直至满足计算预算。另有约 10% 的训练序列完全禁用该丢弃策略,使模型在训练时也接触不丢弃 token 的情况。推理时可根据效率要求决定是否启用丢弃;论文评测采用不丢弃 token 的设置
🐋 DeepSeek-V3 Technical Report
DeepSeek-V3 是一个总参数量为 671B 的大型 MOE 模型,每个 token 激活其中的 37B 参数
- 在架构方面,DeepSeek-V3 仍采用多头潜在注意力实现高效推理,并采用 DeepSeekMoE 实现高性价比训练
- 在基础架构之外,作者还采用两项策略,以进一步增强模型能力。首先,DeepSeek-V3 采用通过路由偏置调节批次级专家负载的无辅助损失策略,并保留很弱的序列级辅助损失,以抑制单条序列内的极端不均衡。其次,DeepSeek-V3 采用多 token 预测训练目标,在论文评测中提升模型的整体表现
作者支持 FP8 混合精度训练,并对训练框架进行优化
- 提出 FP8 混合精度训练框架,并首次在超大规模模型上验证其有效性。通过支持 FP8 计算与存储,实现训练加速和 GPU 显存占用的降低
- DualPipe 通过计算与通信重叠,减少流水线气泡并隐藏大部分通信耗时。在论文的训练配置下,暴露在计算之外的 all-to-all 通信耗时接近于零
- 开发高效的跨节点 all-to-all 通信内核,以充分利用 InfiniBand(IB)和 NVLink 的带宽。作者还对内存占用进行细致优化,使得在不使用开销较大的张量并行的情况下训练 DeepSeek-V3 成为可能
在预训练阶段,作者使用 14.8T 个高质量且多样化的 token 训练 DeepSeek-V3。预训练过程十分稳定。在整个训练过程中,没有出现任何不可恢复的损失突增,也无须回滚
- 随后,作者对 DeepSeek-V3 进行两个阶段的上下文长度扩展。第一阶段将最大上下文长度扩展至 32K,第二阶段进一步扩展至 128K
- 此后,作者对 DeepSeek-V3 基座模型进行后训练,包括监督微调和强化学习,使其与人类偏好对齐
- 在后训练阶段,作者从 DeepSeek-R1 系列模型中蒸馏推理能力,同时谨慎维持模型准确性与生成长度之间的平衡
负载均衡策略与训练目标:DeepSeek-V3 以路由偏置调节批次级专家负载,并用很弱的序列级辅助损失抑制局部极端不均衡;多 token 预测目标则在论文的对照实验中改善模型性能,也可用于投机解码
作者设计 FP8 混合精度训练框架,并首次在超大规模模型上验证 FP8 训练的可行性与有效性
- 通过算法、框架和硬件的协同设计,作者缓解跨节点 MoE 训练中的通信瓶颈,使计算与通信近乎完全重叠,从而提高训练效率并降低通信对每步训练耗时的影响
从 DeepSeek-R1 进行知识蒸馏。作者将长思维链模型的推理能力蒸馏至标准 LLM
- 具体而言,是从 DeepSeek-R1 系列中的一个模型向 DeepSeek-V3 蒸馏推理能力。该流程将 R1 的验证与反思模式融入 DeepSeek-V3,显著提升其推理性能。同时,作者也保持对 DeepSeek-V3 输出风格和长度的控制
🐧 Basic Architecture
DeepSeek-V3 仍采用 Transformer 框架,沿用 DeepSeek-V2 的 MLA 和 DeepSeekMoE。本节两者的符号含义与 V2 部分相同。V3 主要通过路由偏置调节批次级专家负载,以减轻较强均衡辅助损失对模型性能的影响,同时保留很弱的序列级均衡约束
在注意力方面,DeepSeek-V3 采用 MLA 架构。设表示嵌入维度,
表示注意力头数,
表示每个头的维度,
表示第
个 token 在某个注意力层中的注意力输入。MLA 的核心是对注意力的键和值进行联合低秩压缩,以减少推理过程中的键值缓存
- 对于注意力查询,作者同样进行低秩压缩,以减少训练过程中的激活内存占用
- 最终,将注意力查询
、键
和值
结合,得到最终的注意力输出
DeepSeekMoE 的基本架构。对于前馈网络,DeepSeek-V3 采用 DeepSeekMoE 架构。与 GShard 等传统 MoE 架构相比,DeepSeekMoE 使用细粒度专家,并隔离出部分专家作为共享专家。设表示第
个 token 的 FFN 输入,则 FFN 输出
的计算如下
- 与 DeepSeek-V2 略有不同,DeepSeek-V3 使用 sigmoid 函数计算亲和度得分,并对所有被选中的亲和度得分进行归一化,以得到门控值
无辅助损失的负载均衡。专家负载不均衡可能导致路由坍塌,并降低专家并行的计算效率。V3 的主要均衡机制通过直接调整路由偏置实现,不依赖均衡辅助损失的梯度;序列级辅助损失只作为抑制极端不均衡的补充
- 为调节专家负载,作者为每个路由专家引入偏置项
,并将其加到相应的亲和度得分
上,以决定 top-K 路由
- 偏置项仅用于路由。与 FFN 输出相乘的门控值仍由原始亲和度得分
得到
- 在训练过程中,作者持续监测每个训练步骤中整个批次上的专家负载。在每个步骤结束时,如果相应专家过载,则将其偏置减小
;如果相应专家负载不足,则将其偏置增大
,其中
是称为偏置更新速率的超参数
- 通过这种动态调整,DeepSeek-V3 在训练过程中保持专家负载均衡,并取得优于仅通过辅助损失促进负载均衡的模型的性能
补充性的序列级辅助损失。为抑制单条序列内的极端负载不均衡,作者采用以下损失。 是取值很小的损失权重,
是单条序列的 token 数,
为指示函数。式(18)按原始亲和度的 top-K 选择统计
;实际路由则按式(16)加入偏置后选择专家
节点受限路由。与 DeepSeek-V2 使用的设备受限路由类似,DeepSeek-V3 同样使用受限路由机制,以限制训练过程中的通信成本
- 作者确保每个 token 最多被发送至
个节点。这些节点根据各节点上亲和度得分最高的
个专家的得分之和进行选择。节点数量限制与后文的流水线调度、通信内核共同作用,使计算与通信能够近乎完全重叠
- 得益于有效的负载均衡策略,DeepSeek-V3 在整个训练过程中保持良好的负载均衡。因此,DeepSeek-V3 在训练过程中不丢弃任何 token
- 此外,作者还采用特定的部署策略来确保推理负载均衡,因此 DeepSeek-V3 在推理过程中也不丢弃 token
🌴 Multi-Token Prediction
受 Gloeckle et al.(2024)的启发,作者为 DeepSeek-V3 研究并设置多 token 预测目标,将每个位置的预测范围扩展至多个未来 token
- 一方面,MTP 目标使训练信号更加密集,并可能提高数据利用效率。另一方面,MTP 可能使模型能够提前规划其表示,以更好地预测未来 token
- Gloeckle et al.(2024)使用独立的输出头并行预测
个额外 token;DeepSeek-V3 则将 MTP 模块按预测深度串联,后一个模块依赖前一个模块的表示,以保留预测的因果链。训练时,各序列位置仍可在因果掩码下并行计算

MTP 模块。具体而言,作者的 MTP 实现使用个串联模块来预测
个额外 token
- 第
个 MTP 模块由一个共享嵌入层
、一个共享输出头
、一个 Transformer 块
和一个投影矩阵
组成。训练时,对于第
个输入 token
,在第
个预测深度,首先通过线性投影,将第
个 token 在第
个深度的表示
与第
个 token 的嵌入
结合,用于预测其后一个 token
- 其中,
表示拼接。特别地,当
时,
指主模型给出的表示。需要注意的是,每个 MTP 模块的嵌入层均与主模型共享。组合后的
作为第
个深度的 Transformer 块的输入,生成当前深度的输出表示
- 其中,
表示输入序列长度,
表示切片操作,包含左右两端的边界。最后,以
为输入,共享输出头计算第
个额外预测 token 的概率分布
,其中
为词表大小
- 输出头
将表示线性映射为 logits,随后应用
函数,计算第
个额外 token 的预测概率。此外,每个 MTP 模块的输出头均与主模型共享。作者保留预测因果链的原则与 EAGLE 类似,但 EAGLE 的主要目标是投机解码,而作者使用 MTP 来改进训练
MTP 训练目标。对于每个预测深度,计算一个交叉熵损失
- 其中,
表示输入序列长度,
表示第
个位置的真实 token,
表示第
个 MTP 模块给出的、与
对应的预测概率。式(24)沿用论文按输入长度
归一化的约定;该深度包含
个预测目标,
是输入末尾之后的真实下一 token。最后,对所有深度的 MTP 损失取平均,并乘以权重因子
,得到总体 MTP 损失
,作为 DeepSeek-V3 的额外训练目标
推理中的 MTP。 作者的 MTP 策略主要旨在提升主模型的性能,因此在推理过程中,可以直接移除 MTP 模块,主模型仍能独立、正常地运行。此外,还可以将这些 MTP 模块用于投机解码,以进一步降低生成延迟
🍄 Training Framework
DeepSeek-V3 在配备 2048 张 NVIDIA H800 GPU 的集群上进行训练。H800 集群的每个节点包含 8 张 GPU,节点内通过 NVLink 和 NVSwitch 连接。不同节点之间使用 InfiniBand(IB)互连进行通信
- DeepSeek-V3 的训练由 HAI-LLM 框架支持。DeepSeek-V3 采用 16 路流水线并行、跨越 8 个节点的 64 路专家并行,以及 ZeRO-1 数据并行
训练框架主要包含以下三项优化
- 首先,设计用于高效流水线并行的 DualPipe 算法。与现有 PP 方法相比,DualPipe 的流水线气泡更少。更重要的是,它使前向与反向过程中的计算阶段和通信阶段重叠执行,从而应对跨节点专家并行带来的高通信开销
- 其次,开发高效的跨节点 all-to-all 通信内核,以充分利用 IB 和 NVLink 带宽,并减少通信占用的流式多处理器数量
- 最后,细致优化训练过程中的内存占用,使得在不使用开销较大的张量并行的情况下训练 DeepSeek-V3 成为可能
在 DeepSeek-V3 的训练配置中,跨节点专家并行的计算耗时与通信耗时约为 1:1,若串行执行会明显拖慢训练。DualPipe 通过重叠前向与反向计算块中的计算和通信阶段,提高训练效率并减少流水线气泡
- DualPipe 的核心思想是使一对前向与反向计算块中的计算与通信重叠执行。具体而言,每个计算块被划分为四个组成部分:注意力计算、all-to-all 分发(dispatch)、MLP 计算和 all-to-all 合并(combine)
- 特别地,对于反向计算块,注意力计算和 MLP 计算都会进一步拆分为输入梯度计算和权重梯度计算两部分,与 ZeroBubble 中的做法类似。此外,还有一个 PP 通信组件

- 对于一对前向与反向计算块,作者重新安排各组件,并调整分配给通信与计算的 GPU SM 数量。在论文所示的重叠配置下,all-to-all 和 PP 通信耗时可被计算隐藏。DualPipe 从流水线两端同时输入微批次,以双向调度扩大重叠机会

- DualPipe 相比单向流水线需要保留两份模型参数,但较大的 EP 规模将专家参数分散到更多 GPU 上,因此在论文的训练配置中,额外显存占用有限。DualPipe 要求流水线阶段数和微批次数均能被 2 整除,不要求微批次数能被流水线阶段数整除。在流水线规模和单个微批次大小固定时,增加微批次数不会增加该调度的流水线气泡时长和峰值激活显存

作者定制跨节点 all-to-all 分发与合并内核,以减少通信占用的 SM 数量。这些内核与 MoE 门控算法及集群网络拓扑协同设计
- 具体而言,在该集群中,跨节点 GPU 通过 IB 全互连,节点内通信则通过 NVLink 完成。NVLink 的带宽为 160 GB/s,约为 IB 带宽(50 GB/s)的 3.2 倍。为有效利用 IB 与 NVLink 的带宽差异,作者将每个 token 的分发范围限制为最多 4 个节点,从而减少 IB 流量
- 确定路由后,token 先通过 IB 到达目标节点中与发送端具有相同节点内编号的 GPU,再经 NVLink 转发到承载目标专家的 GPU。作者通过及时转发,使 IB 传输与 NVLink 转发尽量重叠。按上述 3.2 倍带宽比估算,IB 传输一个 token 的时间可覆盖平均约 3.2 次节点内专家分发;V3 实际为每个 token 选择 8 个路由专家,最多涉及 4 个节点
- 具体而言,作者采用 warp 专业化技术,将 20 个 SM 划分为 10 个通信通道。分发过程中的 IB 发送、IB 到 NVLink 的转发和 NVLink 接收,以及合并过程中的 NVLink 发送、NVLink 到 IB 的转发与累加、IB 接收与累加,分别由不同的 warp 处理;各通信任务分配的 warp 数量根据所有 SM 上的实际工作负载动态调整
- 此外,分发和合并内核均与计算流重叠执行,因此作者也考虑它们对其他 SM 上计算内核的影响。具体而言,作者采用自定义的 PTX 指令,并自动调优通信数据块的大小,从而显著减少 L2 缓存的使用以及对其他 SM 的干扰
重计算 RMSNorm 和 MLA 上投影。在反向传播过程中,作者重新计算所有 RMSNorm 操作和 MLA 上投影,从而无须持续保存其输出激活。该策略仅引入少量开销,便显著降低存储激活所需的内存
在 CPU 中维护指数移动平均。作者将模型参数的指数移动平均(EMA)保存在 CPU 内存中,并在每个训练步骤结束后异步更新,用于提前估计学习率衰减后的模型性能。放在 CPU 上可避免为该副本额外占用 GPU 显存,异步更新则尽量隐藏其对训练耗时的影响
多 token 预测中的共享嵌入层与输出头。采用 DualPipe 策略时,作者将模型最浅的层(包括嵌入层)和最深的层(包括输出头)部署在同一个 PP rank 上。这一安排使 MTP 模块与主模型能够在物理上共享嵌入层和输出头的参数及梯度。该物理共享机制进一步提高内存效率
🐧 FP8 Training
DeepSeek-V3 采用基于 FP8 数据格式的细粒度混合精度训练框架
- 低精度训练通常受到激活、权重和梯度中离群值的限制
- 为使不同数值范围的元素更好地适配 FP8,作者采用细粒度量化,并为各组分别设置缩放因子:采用包含
个元素的 tile 级分组,或包含
个元素的 block 级分组。
表示量化分组的边长,此处取 128。反量化与后文的高精度累加过程结合执行,以降低额外开销。此外,作者以 FP8 缓存和分发大部分相关激活,以 BF16 存储 AdamW 的一阶矩与二阶矩;对精度敏感的激活另行采用更高精度格式
- 作者在与 DeepSeek-V2-Lite 和 DeepSeek-V2 规模相近的两种模型上验证所提出的 FP8 混合精度框架,并进行约 1 万亿 token 的训练。与 BF16 基线相比,采用 FP8 训练的模型,其损失值的相对误差始终低于 0.25%,这一水平完全处于训练随机性所允许的可接受范围内

大多数计算密集型操作采用 FP8 执行,少数关键操作保留原始数据格式,以平衡训练效率与数值稳定性
- 首先,为加速模型训练,大多数核心计算内核,即 GEMM 操作,均采用 FP8 精度实现。这些 GEMM 操作以 FP8 张量作为输入,并生成 BF16 或 FP32 格式的输出。与 Linear 算子相关的三个 GEMM,即 Fprop(前向传播)、Dgrad(激活的反向传播)和 Wgrad(权重的反向传播),均以 FP8 执行
- 与 BF16 相比,相关 FP8 GEMM 的理论计算吞吐量可提高至约两倍;端到端训练加速还取决于量化、通信及其他算子的耗时。FP8 Wgrad GEMM 还允许以 FP8 格式缓存其所需的激活,供反向传播使用,从而降低显存占用
- 某些算子对低精度计算较为敏感,需要更高精度。一些计算成本较低的算子也可以使用更高精度,其增加的开销相对于整体训练成本可以忽略。因此,以下组件保留原始精度(例如 BF16 或 FP32):嵌入模块、输出头、MoE 门控模块、归一化算子和注意力算子
- 为保证数值稳定性,主权重和用于梯度累积的缓冲区保留为 FP32,AdamW 的一阶矩与二阶矩使用 BF16。作者通过数据并行分片降低每个 rank 承担的模型状态显存开销

细粒度量化。在低精度训练框架中,上溢和下溢是常见问题,其原因在于 FP8 格式的指数位较少,动态范围受到限制。通常的做法是,将输入张量的最大绝对值缩放至 FP8 可表示的最大值,使输入分布与 FP8 格式的可表示范围相匹配。这种方法使低精度训练对激活中的离群值高度敏感,可能严重降低量化精度。为解决这一问题,作者提出一种细粒度量化方法,在更细的粒度上进行缩放
- 对于激活,以
的 tile 为单位对元素进行分组和缩放,即每个 token 的每 128 个通道为一组;对于权重,以
的 block 为单位对元素进行分组和缩放,即每 128 个输入通道与每 128 个输出通道构成一组。通过根据更小的元素组调整缩放尺度,这种方法能够使量化过程更好地适应离群值
- 该方法的一项关键修改,是沿 GEMM 操作的内部维度引入逐组缩放因子。标准 FP8 GEMM 并不直接支持这一功能。然而,将其与精确的 FP32 累加策略结合后,便可以高效实现
提高累加精度。FP8 GEMM 的输入格式与累加精度需要分别考虑。论文指出,H800 Tensor Core 在该 FP8 计算路径中,对齐后的尾数乘积仅保留约 14 位参与累加,低于完整 FP32 累加所能提供的精度。归约维度较大时,累积误差会更加明显
- 随着批大小和模型宽度的增加,这种情况在大规模模型训练中十分常见。以两个随机矩阵在
时的 GEMM 操作为例,在初步测试中,Tensor Core 有限的累加精度导致最大相对误差接近 2%。尽管存在这些问题,有限精度累加仍然是一些 FP8 框架的默认选项,严重限制训练准确性
- 矩阵乘加仍由 Tensor Core 执行,作者周期性地将部分和交给 CUDA Core 做 FP32 累加。沿归约维度每处理
个元素,就将部分和提升到 FP32,并完成反量化与全精度累加;该符号表示累加间隔。细粒度量化沿归约维度
使用逐组缩放因子,CUDA Core 在合并部分和时同时应用这些因子,减少单独反量化的开销
- 周期性提升部分和会降低单个 warpgroup 发射 WGMMA 指令的速率。作者通过两个 warpgroup 的工作重叠缓解这一影响:一个执行部分和提升与累加时,另一个执行 MMA,以维持 Tensor Core 利用率。在论文的 H800 实现中,将
设为沿归约维度的 128 个元素,对应该实现的 4 次 WGMMA 操作,是实验中兼顾精度和开销的最小累加间隔
尾数优先于指数。先前研究采用混合 FP8 格式,在 Fprop 中使用 E4M3,在 Dgrad 和 Wgrad 中使用 E5M2
- 作者将 Fprop、Dgrad 和 Wgrad 中以 FP8 表示的输入张量统一采用 E4M3 格式,以增加尾数精度。每个 tile 或 block 共享一个缩放因子,使各组数值分别适配 FP8 的表示范围;组内各个量化值仍采用各自的 E4M3 编码
在线量化。逐张量量化框架采用延迟量化,保留先前迭代中最大绝对值的历史记录,以推断当前值。为确保缩放尺度准确并简化框架,作者在线计算每个激活 tile 或
权重 block 的最大绝对值,据此确定缩放因子,再在线将激活或权重量化为 FP8 格式
结合 FP8 训练框架,作者通过将缓存的激活和优化器状态压缩为更低精度的格式,进一步降低内存消耗和通信开销
- 低精度优化器状态。作者使用 BF16 而非 FP32 存储 AdamW 的一阶矩和二阶矩,在论文实验中未观察到性能下降。主权重和用于梯度累积的缓冲区仍为 FP32
- 低精度激活。Wgrad 操作采用 FP8 执行。为降低内存消耗,以 FP8 格式缓存激活并将其用于 Linear 算子的反向传播。对精度敏感的算子需要特殊处理
- 注意力算子之后的 Linear 算子的输入。这些激活也用于注意力算子的反向传播,因此对精度较为敏感。作者专门为这些激活采用定制的 E5M6 数据格式。此外,在反向传播中,这些激活将由
的量化 tile 转换为
的 tile。为避免引入额外的量化误差,所有缩放因子均经过舍入处理,即取为 2 的整数次幂
- MoE 中 SwiGLU 算子的输入。为进一步降低内存成本,作者缓存 SwiGLU 算子的输入,并在反向传播中重新计算其输出。这些激活同样采用细粒度量化方法,以 FP8 格式存储,从而在内存效率和计算准确性之间取得平衡
- 低精度通信。通信带宽是 MoE 模型训练中的一个关键瓶颈。为缓解这一问题,作者先将 MoE 上投影之前的激活量化为 FP8,再执行分发(dispatch)操作,这与 MoE 上投影中的 FP8 Fprop 相兼容。与注意力算子之后的 Linear 算子的输入相同,这些激活的缩放因子也取为 2 的整数次幂。类似策略也应用于 MoE 下投影之前的激活梯度。对于前向和反向过程中的合并(combine)组件,均保留 BF16,以维持训练流程中关键环节的训练精度
🦚 Inference and Deployment
作者将 DeepSeek-V3 部署在 H800 集群上,其中每个节点内部的 GPU 通过 NVLink 互连,集群中的所有 GPU 则通过 IB 实现全互连。为同时满足在线服务的服务水平目标并保持高吞吐量,作者采用以下部署策略,将预填充(prefilling)阶段与解码(decoding)阶段分离
预填充阶段的最小部署单元由 4 个节点组成,共包含 32 个 GPU。注意力部分采用 4 路张量并行(TP4)和序列并行(SP),并结合 8 路数据并行(DP8)。张量并行规模仅为 4,有助于限制 TP 通信开销。MoE 部分采用 32 路专家并行(EP32),确保每个专家处理足够大的批次,从而提高计算效率
- 对于 MoE 的 all-to-all 通信,作者采用与训练时相同的方法:首先通过 IB 跨节点传输 token,再通过 NVLink 在节点内部的 GPU 之间进行转发。特别地,浅层中的稠密 MLP 采用 1 路张量并行,以减少 TP 通信开销
- 为实现 MoE 部分不同专家之间的负载均衡,需要确保每个 GPU 处理的 token 数量大致相同。为此,作者引入冗余专家部署策略,即复制高负载专家,并对其进行冗余部署。高负载专家根据在线部署期间收集的统计信息进行识别,并定期调整,例如每 10 分钟调整一次。确定冗余专家集合后,作者根据观测到的负载,在节点内部的 GPU 之间精细调整专家的分布,力求在不增加跨节点 all-to-all 通信开销的情况下,尽可能平衡各 GPU 的负载
- 在预填充阶段,为提高吞吐量并隐藏 all-to-all 和 TP 通信开销,作者同时处理两个计算负载相近的微批次,使一个微批次的注意力计算和 MoE 计算,与另一个微批次的分发(dispatch)和合并(combine)操作重叠执行
在解码阶段,共享专家纳入与路由专家相同的分发调度,但始终激活。每个 token 计算 8 个选中的路由专家和 1 个共享专家,共 9 个专家。在论文的部署方案中,解码阶段的最小部署单元为 40 个节点、320 个 GPU;注意力部分采用 TP4 和 SP,并结合 DP80,MoE 部分采用 EP320
- 对每个 MoE 层,每个 GPU 部署 1 个专家或其副本:256 个 GPU 承载原有路由专家,另外 64 个 GPU 承载冗余副本和共享专家。分发与合并的 all-to-all 通信通过 IB 点对点传输实现,并结合 IBGDA 降低延迟
- 与预填充阶段类似,作者根据在线统计的专家负载,定期更新冗余专家集合。由于解码配置中每个 GPU 在同一 MoE 层只承载 1 个专家,因此无需执行预填充配置中多专家之间的节点内放置重排
🌟 DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
推理能力是人类智能的基石,使数学问题求解、逻辑推导和编程等复杂认知任务得以实现。人工智能领域的最新进展表明,当模型规模扩大到足够程度时,大语言模型能够表现出包括推理能力在内的涌现行为。然而,在预训练阶段获得此类能力通常需要大量计算资源
- 另一条互补的研究路线表明,通过思维链提示,可以有效增强大语言模型的能力。这一技术通过提供精心设计的少样本示例,或使用“Let’s think step by step”(逐步思考)等简短提示,使模型生成中间推理步骤,从而显著提升其在复杂任务上的表现
- 同样,当模型在后训练阶段学习高质量的多步推理轨迹时,其性能也会进一步提高。尽管这些方法有效,但仍存在明显局限。它们依赖人工标注的推理轨迹,这既限制可扩展性,也引入认知偏差。此外,由于这些方法将模型限制为复现人类的思维过程,其性能本质上受到人类所提供示例的约束,从而无法探索更优的、不同于人类思维方式的推理路径
为解决上述问题,作者旨在探索大语言模型在强化学习框架下通过自我演化发展推理能力的潜力,并尽可能减少对人工标注的依赖
- 具体而言,作者以 DeepSeek-V3-Base 为基础,采用组相对策略优化作为强化学习框架。奖励信号仅依据最终预测结果相对于标准答案的正确性,不对推理过程本身施加约束
- 值得注意的是,作者跳过强化学习训练之前通常采用的监督微调阶段。这一设计选择源于以下假设:人类定义的推理模式可能限制模型的探索,而不受约束的强化学习训练能够更好地激励大语言模型涌现出新的推理能力
- 该模型(称为 DeepSeek-R1-Zero)自然发展出多样且复杂的推理行为。在解决推理问题时,模型倾向于生成更长的回答,并在每次回答中进行验证、反思以及对替代方法的探索。尽管作者没有明确教授模型如何推理,模型仍通过强化学习成功学会更好的推理策略
尽管 DeepSeek-R1-Zero 展现出出色的推理能力,但仍面临可读性较差和语言混杂等问题,有时会在同一次思维链回答中混用英语和中文
- 此外,DeepSeek-R1-Zero 基于规则的强化学习训练阶段局限于推理任务,导致其在写作和开放域问答等更广泛领域的表现有限
- 为应对这些挑战,作者提出 DeepSeek-R1。该模型通过融合拒绝采样、强化学习和监督微调的多阶段学习框架进行训练。这一训练流程使 DeepSeek-R1 能够继承前代模型 DeepSeek-R1-Zero 的推理能力,同时通过额外的非推理数据,使模型行为与人类偏好对齐
🍄 DeepSeek-R1-Zero
DeepSeek-R1-Zero 的训练过程:该过程完全依赖强化学习,不进行监督微调。为提高大规模强化学习的效率,作者采用组相对策略优化
GRPO 是作者用于训练 DeepSeek-R1-Zero 和 DeepSeek-R1 的强化学习算法。该算法旨在简化近端策略优化的训练流程并降低其资源消耗。对于每个问题,GRPO 从旧策略
中采样一组输出
,通过最大化以下目标来优化策略模型
- 其中,
为参考策略,
和
为超参数,
为优势值,由每组输出对应的一组奖励
计算得到
- 在训练 DeepSeek-R1-Zero 时,作者将学习率设为
,KL 系数设为 0.001,rollout 的采样温度设为 1。对于每个问题,采样 16 个输出;在第 8,200 步之前,输出的最大长度为 32,768 个 token,之后则为 65,536 个 token
- 因此,DeepSeek-R1-Zero 的性能和回答长度在第 8,200 步出现显著跃升。训练总计进行 10,400 步,相当于 1.6 轮训练。每个训练步骤包含 32 个不同的问题,因此训练批大小为 512。每隔 400 步,作者将参考模型替换为最新的策略模型。为加速训练,每次 rollout 生成 8,192 个输出,将其随机划分为 16 个小批次,并仅进行 1 轮内部训练
奖励是训练信号的来源,决定强化学习的优化方向。对于 DeepSeek-R1-Zero,作者采用基于规则的奖励,为数学、编程和逻辑推理领域的数据提供精确反馈。该规则奖励系统主要包含两类奖励:准确性奖励和格式奖励
- 准确性奖励用于评估回答是否正确。对于具有确定结果的数学问题,要求模型以指定格式给出最终答案,例如将答案置于方框内,从而能够基于规则可靠地验证答案的正确性。类似地,对于编程竞赛题目,可以使用编译器,依据一组预先定义的测试用例评估模型的回答,从而产生关于正确性的客观反馈
- 格式奖励通过施加特定的格式要求,对准确性奖励模型形成补充。模型被激励将推理过程包含在指定标签内,即
<think>和</think>。这使模型的思考过程得以明确界定,增强可解释性,并有助于后续分析
- 准确性奖励与格式奖励以相同权重组合。未在推理任务中使用神经奖励模型,无论是基于结果的奖励模型,还是基于过程的奖励模型。这一决定源于以下观察:在大规模强化学习过程中,神经奖励模型容易受到奖励投机的影响。此外,重新训练此类模型需要大量计算资源,并会增加训练流程的复杂性,从而使整体优化过程更加复杂
作者在 DeepSeek-V3 基础模型上应用强化学习技术,训练 DeepSeek-R1-Zero。在训练过程中,作者设计一个简单直接的模板,要求 DeepSeek-R1-Zero 先生成推理过程,再给出最终答案。作者有意将约束限制在这一结构化格式上,避免引入任何针对具体内容的偏置,以确保能够准确观察模型在强化学习过程中的自然发展

- DeepSeek-R1-Zero 的思考时间在整个训练过程中稳步增加,这一变化完全由模型的内在适应驱动,而非外部修改。借助长思维链,模型逐步完善其推理过程,生成数百至数千个 token,以探索并改进问题求解策略
- 思考时间的增加促进复杂行为的自主形成。具体而言,DeepSeek-R1-Zero 越来越多地表现出反思性推理、系统性探索替代解决方案等高级推理策略。这些策略显著提高模型在数学和编程等可验证任务上的表现
- 值得注意的是,在训练过程中,DeepSeek-R1-Zero 出现一个 顿悟时刻(aha moment),其特征是在反思过程中使用 wait 一词的频率突然增加。这一时刻标志着推理模式发生明显变化,并清楚地展现 DeepSeek-R1-Zero 的自我演化过程
DeepSeek-R1-Zero 的自我演化凸显强化学习的力量与魅力:作者仅为模型提供适当的激励,模型便自主发展出高级问题求解策略,而无需明确教授其如何解决问题。这表明,强化学习具有释放大语言模型更高层次能力的潜力,为未来更加自主且更具适应性的模型铺平道路
🍀 DeepSeek-R1
由于 DeepSeek-V3-Base 使用多种语言进行训练,尤其是英语和中文,DeepSeek-R1-Zero 存在可读性较差和语言混杂等问题。为解决这些问题,作者开发 DeepSeek-R1,其训练流程如图所示

- 在初始阶段,作者收集数千条冷启动数据,这些数据呈现出对话式、与人类对齐的思考过程。随后,通过强化学习训练,在采用对话式思考过程并保持语言一致性的同时提升模型性能
- 之后,再次进行拒绝采样和监督微调(SFT)。这一阶段将推理和非推理数据集共同纳入 SFT 过程,使模型不仅能够在推理任务上表现出色,还能展现出较强的写作能力。为进一步使模型与人类偏好对齐,作者实施第二阶段的强化学习,旨在增强模型的有用性和无害性,同时进一步完善其推理能力
对于通用数据,作者使用奖励模型捕捉复杂且细微情境下的人类偏好。作者以 DeepSeek-V3 的流程为基础,对偏好样本对和训练提示采用类似的分布。在有用性方面,仅关注最终总结,确保评估侧重于回答对用户的实用性和相关性,同时尽量减少对推理过程本身的干扰。在无害性方面,则评估模型的完整回答,包括推理过程和总结,以识别并缓解可能出现的潜在风险、偏见或有害内容
有用性奖励模型。在有用性奖励模型的训练中,作者首先使用 arena-hard 提示格式,通过提示 DeepSeek-V3 生成偏好样本对。每个样本对包含一个用户查询及两个候选回答
- 对于每个偏好样本对,作者调用 DeepSeek-V3 进行 4 次评判,并随机将候选回答分配为 Response A 或 Response B,以减轻位置偏差。最终偏好分数通过对 4 次独立评判取平均得到,仅保留分数差
大于 1 的样本对,以确保两者具有有意义的差异
- 为尽量减少与长度相关的偏差,作者确保整个数据集中被选中回答与被拒绝回答的长度具有可比性。最终,共整理 66,000 组数据对,用于训练奖励模型。该数据集中的提示均为非推理问题,来源为公开可用的开源数据集,或已明确同意为模型改进而共享数据的用户。奖励模型架构与 DeepSeek-R1 一致,并额外增加一个用于预测标量偏好分数的奖励头
- 有用性奖励模型的训练批大小为 256,学习率为
,在训练数据集上训练 1 轮。训练期间的最大序列长度设为 8,192 个 token,而在奖励模型推理期间不施加明确的长度限制
安全性奖励模型。为评估并提升模型的安全性,作者整理一个包含 106,000 个提示的数据集,其中模型生成的回答依据预先定义的安全准则,被标注为安全或不安全。与有用性奖励模型采用的成对损失不同,安全性奖励模型采用逐点方法训练,以区分安全回答和不安全回答。其训练超参数与有用性奖励模型相同
对于通用查询,每个样本均被归入安全性数据集或有用性数据集之一。分配给每个查询的通用奖励,对应于其所属数据集中定义的相应奖励
在第一阶段强化学习中,作者将学习率设为,KL 系数设为 0.001,GRPO 裁剪比率
设为 10,rollout 的采样温度设为 1。对于每个问题,采样 16 个输出,最大长度为 32,768
- 每个训练步骤包含 32 个不同的问题,因此每步的训练批大小为 512。每隔 400 步,作者将参考模型替换为最新的策略模型。为加速训练,每次 rollout 生成 8,192 个输出,将其随机划分为 16 个小批次,并仅进行 1 轮内部训练。不过,为缓解语言混杂问题,作者在强化学习训练期间引入语言一致性奖励,其计算方式为 CoT 中目标语言词语所占的比例
- 这种对齐会导致模型性能略有下降,但该奖励符合人类偏好,使模型输出更具可读性。作者将语言一致性奖励直接加到最终奖励中,并将其同时应用于推理和非推理数据
- 裁剪比率在训练中起着关键作用。较低的取值可能导致大量 token 的梯度被截断,从而降低模型性能;较高的取值则可能造成训练不稳定
第二阶段强化学习,作者结合多种奖励信号与多样化的提示分布来训练模型。对于推理数据,沿用 DeepSeek-R1-Zero 中的方法,使用基于规则的奖励指导数学、编程和逻辑推理领域的学习。在训练过程中,作者观察到 CoT 经常出现语言混杂,尤其是在强化学习提示涉及多种语言时。对于通用数据,则使用奖励模型指导训练。最终,奖励信号与多样化数据分布的结合,使模型不仅在推理方面表现出色,也注重有用性和无害性。给定一批数据,其奖励可表示为
- 第二阶段强化学习保留第一阶段的大部分参数设置,主要区别是将温度降至 0.7,因为作者发现,在这一阶段使用较高温度会导致生成内容不连贯
- 该阶段共包含 1,700 个训练步骤,其中通用指令数据和基于偏好的奖励仅在最后 400 步中引入。作者发现,增加使用基于模型的偏好奖励信号进行训练的步数,可能导致奖励投机