DeepSeek-V3
https://github.com/deepseek-ai/DeepSeek-V3
DeepSeekV3模型结构
基础架构
1. MoE结构:
混合专家模型
:三个臭皮匠胜于诸葛亮的思想,基本上目前各大模型都在用。简单来说就是包含多个“专家”网络,其中每个专家都是一个相对独立的神经网络,都有各自的参数,每个擅长于处理特定类型的输入或者在数据的某个子空间上表现良好。通过门控网络(Gating Network)调整权重,把不同的输入按照概率路由给不同的专家网络。各个专家网络对分配到的输入进行处理,产生各自的输出,最后根据门控网络分配的权重,将这些专家网络的输出进行组合,得到最终的输出结果。
优点:可以在不显著增加模型整体参数量的情况下,利用多个专家网络的并行处理能力来处理不同类型的输入模式,比如这里DeepSeekV3一共671B参数,实际每个token推理激活的37B的参数就行。
DeepSeekMoE: 使用了
更细粒度的专家,并将一些专家隔离为共享专家
,这里的Topk就是由第 位 token 和所有路由专家计算出的Affinity得分中最高的 个分组成的集合。
2. MLA (Multi-head Latent Attention) 多层潜注意力架构:
注意力机制
:神经网络中的一种重要技术,它允许模型聚焦于输入数据的不同部分。在传统的注意力机制中,模型会计算输入元素之间的关联权重,然后根据这些权重对输入进行加权组合。
多头Multi-head
:每个注意力头可以学习到输入数据不同方面的表示。例如,在处理自然语言处理任务中的一个句子时,一个注意力头可能聚焦于句子中的语法结构,另一个可能聚焦于语义信息,还有一个可能关注于词汇的情感倾向等。这些不同的注意力头并行工作,最后将它们的结果进行组合。
MLA是DeepSeek这里新提出的,核心是对注意力 key 和 value 进行
低秩联合压缩
,这样在生成过程中只需要缓存映射到潜空间的这两个蓝框向量,从而
显著减少键值 (KV) 缓存
。
3. 无辅助损失的负载均衡 auxiliary-loss-free strategy:
传统
:对于 MoE 模型,不平衡的专家负载会导致路由崩溃,并在具有专家并行的场景中降低计算效率。传统解决方案通常
依靠辅助损失来避免负载不平衡
,但是过大的辅助损失会损害模型性能。
无辅助损失的负载平衡策略
:目标是在负载平衡和模型性能之间取得更好的平衡,这里的方法是为每个专家引入一个偏差项 ,并将其添加到相应的affinity分数 , 中以确定topK 的路由:
注意这里的
偏差项仅用于路由
,与 FFN 输出相乘的门控值仍然来自原始affinity得分 , 。在训练期间持续监控每个训练step对应的整个batch上的专家负载。在step结束时,如果其对应的专家超载,则将偏差项减少 ,如果其对应的专家负载不足,则将偏差项增加 ( 是一个称为偏差更新速度的超参数)。通过动态调整,DeepSeek-V3 在训练期间保持专家负载平衡,并且比通过纯辅助损失来鼓励负载平衡的模型能获得更好的性能。
节点限制路由Node-Limited Routing
:使用受限路由机制来限制训练期间的通信成本,确保每个 token 将被发送到最多 个节点,这些节点是根据分布在每个节点上的专家的最高 / 的affinity得分之和来选择的。这样 MoE 训练框架几乎可以实现完全的计算-通信重叠。
4. MTP (Multi-Token prediction)多token预测:
传统
:Next-Token-Prediciton方式,每次预测未来的一个token(文本中的基本单元)。
实现
:MTP方法最早时 Gloeckle 提出,使用独立输出头并行预测多个连续的token,但是DeepSeek这里按顺序预测token并在每个depth都保留其完整的因果链。
优点
:一方面MTP 目标使
训练信号密集化
并可能提高数据效率,另一方面MTP 可以让模型预先
规划
,保留token之间的依赖关系,从而更好地预测接下来的token。
高效训练
5. DualPipe跨节点通信:
目标
:实现高效的流水线并行。
方法
:用更少的流水线bubbles,并通过计算通信重叠隐藏了训练期间的大部分通信,也就是将
计算和通信阶段重叠在前向和后向过程中
,从而解决了跨节点专家并行性带来的沉重通信开销。这种重叠的意义在于随着模型进一步扩大,只要保持恒定的计算与通信比率,仍然可以在节点之间使用细粒度experts,同时实现接近零的全对全通信开销。数据传输和通信同时进行,数据传输提速50%,通信减少20%。
工程优化
:开发了
高效的跨节点all-to-all通信内核
,以充分利用 IB 和 NVLink 带宽并节省专用于通信的流多处理器 (SM)。并在训练过程中精心优化内存占用,最后是在不使用昂贵的张量并行性 (TP) 的情况下训练出来的 DeepSeek-V3。
6. FP8 混合精度训练框架
数据精度
:FP8(Floating - Point 8 - bit)是一种8位的浮点数表示格式,与传统的FP32和FP16相比,它使用更少的位数来表示数字,在表示范围和精度上较差,但是可以减少数据存储和计算的开销。
混合精度训练
:在FP8混合精度训练中,通常会将FP8与其他精度(如FP32)的数据结合使用。因为FP8的精度相对较低,在训练过程中可能会导致一定程度的精度损失,从而影响模型的性能。为了应对这个问题,可以
通过精度损失管理或者算法适配来达成效率&效果的均衡
,如在关键的计算步骤(如梯度更新)中使用更高精度的数据(如FP32)进行计算,以确保模型的收敛性和准确性。
实现
:整体框架如图所示,首先,为了加速模型训练,大多数核心计算内核,即通用矩阵乘法GEMM 操作,都是以 FP8 精度实现的。这些 GEMM 操作接受 FP8 张量作为输入,并以 BF16 或 FP32 产生输出。与线性算子相关的所有三个 GEMM,即 Fprop(前向传递)、Dgrad(激活后向传递)和 Wgrad(权重后向传递),都在 FP8 中执行。与原始 BF16 方法相比,这种设计理论上使计算速度翻倍。此外,FP8 Wgrad GEMM 允许将激活存储在 FP8 中以用于后向传递。这显著减少了内存消耗。同时为以下组件保持原始精度 BF16 或 FP32:嵌入模块、输出头、MoE 门控模块、规范化算子和注意算子。
效果
:与 BF16 baseline相比,这里 FP8 训练模型的相对损失误差始终保持在 0.25% 以下,这一水平完全在训练随机性的可接受范围内。
其他细节
数据
:Pretrain使用了14.8T token
128k的推理窗口长度
:对 DeepSeek-V3 进行了两阶段的上下文长度扩展。在第一阶段,最大上下文长度扩展到 32K,在第二阶段,进一步扩展到 128K
SFT
:用DeepSeek-R1 模型生成数据,虽然 R1 生成的数据表现出很强的准确性,但它存在过度思考、格式不佳和篇幅过长等问题。所以目标是要平衡 R1 生成的推理数据的高准确性和常规格式的推理数据的清晰度和简洁性。最后生成了1.5M的涵盖各个领域的数据。
RL
:基于规则的奖励模型 (RM) + 基于模型的 RM
-
•
基于规则的 RM
:对于可以使用特定规则验证的问题,采用基于规则的奖励系统来确定反馈。例如,某些数学问题具有确定性结果,要求模型在指定的格式提供最终答案,用规则来验证正确性。对于 LeetCode 问题,使用编译器根据测试用例生成反馈。
-
•
基于模型的 RM
:对于具有自由形式真实答案的问题,依靠奖励模型来确定响应是否与预期的真实答案相匹配。对于没有明确真实答案的问题,例如涉及创意写作的问题,奖励模型的任务是根据问题和相应的答案作为输入提供反馈。奖励模型是从 DeepSeek-V3 SFT 训练的,为了提高其可靠性,还构建了偏好数据,不仅提供最终奖励,还包括导致奖励的思路链。
成本统计
竞品的效果对比
以相对低的训练成本跻身第一梯队效果
DeepSeek-R1
https://github.com/deepseek-ai/DeepSeek-R1
模型定位
对标OpenAI-o1模型,Deepseek-R1 通过大规模强化学习 (RL) 训练,无需监督微调 (SFT) 作为初步步骤,展示了卓越的推理能力。
通过纯 RL进行自我进化,模型能够自然而然地出现许多强大而有趣的推理行为。然而,之前的Deepseek-R1-zero遇到了可读性差和语言混杂等挑战。为了解决这些问题并进一步提高推理性能,DeekSeek-R1提出了在 RL 之前结合多阶段训练和冷启动数据。最终DeepSeek-R1 在推理任务上实现了与 OpenAI-o1-1217 相当的性能。同时开源了 DeepSeek-R1-Zero、DeepSeek-R1 和基于 Qwen 和 Llama 从 DeepSeek-R1 提炼出的六个密集模型(1.5B、7B、8B、14B、32B、70B)。
openAI-o1模型
OpenAI 的 o1 系列模型首次通过引入思维链推理 CoT ,通过推理时间的延长提升逻辑推理的效果,达成了 inference-time scaling。这种方法在数学、编码和科学推理等各种推理任务中取得了显着的改进,模型通过思维链进行推理、反思,一步步得出最后的结论,但是作为取舍需要较长的推理耗时。
纯RL训练步骤:
Deepseek-R1 使用少量冷启动数据 + 多阶段训练流程:
首先收集数千个冷启动数据来微调 DeepSeek-V3-Base 模型;
然后,执行类似 DeepSeek-R1Zero 的面向推理的 RL,以下是 RL 中涉及到的一些基本原理:
Group Relative Policy Optimization
(GRPO群体相对策略优化):是一种在强化学习领域中的优化策略,与传统的仅考虑个体的策略优化不同,GRPO将多个智能体(或策略)视为一个群体。在这个群体中,每个智能体的策略评估和优化不是孤立进行的,而是相对其他智能体的策略进行。
最终的 (advantage),通过对应输出的一组奖励 reward group { 1, 2, . . . , } 计算:
Reward modeling奖励模型
:奖励是训练信号的来源,决定了强化学习的优化方向。DeepSeek-R1-Zero 采用了基于规则的奖励系统,主要包含两种类型的奖励:
-
•
准确度奖励
:评估响应是否正确。例如,对于具有确定性结果的数学问题,要求模型以指定的格式(例如,在框内)提供最终答案,从而实现可靠的基于规则的正确性验证。同样,对于 LeetCode 问题,可以使用编译器根据预定义的测试用例生成反馈。
-
•
格式奖励
:强制模型将其思考过程置于“
”和“
”标签之间。
-
• 在 DeepSeek-R1-Zero 训练中没有用结果或过程神经奖励模型。
训练
:设计了一个简单的模板,指导基础模型遵循指定的指令。如图所示,此模板要求 DeepSeek-R1-Zero 首先生成一个推理过程,然后给出最终答案。
在 RL 过程接近收敛后,通过对 RL 的 ckpt 进行拒绝采样 (rejection sample) 创建新的 SFT 数据:
-
• 在上一阶段,只用了那些可以使用基于规则的奖励进行评估的数据。但是,在此阶段,合并较多其他数据来扩展数据集,其中一些数据使用生成奖励模型,将基本事实和模型预测输入 DeepSeek-V3 进行判断。
-
• 由于模型输出有时比较混乱,难以阅读,这里过滤掉了混合语言、长段落和代码块的思路链。对于每个prompt都抽取多个响应并仅保留正确的响应。最红一共收集了大约 60 万个与推理相关的训练样本。
-
• 对于非推理数据,例如写作、事实问答、自我认知和翻译,采用 DeepSeek-V3 的 pipeline 并重用 DeepSeek-V3 的 SFT 数据集。总共收集了大约 20 万个与推理无关的训练样本。
-
• 即共计约 80 万个精选样本对 DeepSeek-V3-Base 进行两阶段的微调。
在使用新数据进行微调后,模型会再用到来自各种场景的prompt来进行额外的 RL 。
Deepseek-R1蒸馏
从 DeepSeek-R1 到较小的 dense 模型的蒸馏:使用 Qwen2.5-32B 作为基础模型,从 DeepSeek-R1 直接蒸馏的效果优于在原本小模型上进行 RL。这表明,更大的基础模型所发现的推理模式对于提高推理能力至关重要。
DeepSeek-R1 开源了蒸馏后的 Qwen 和 Llama 系列。蒸馏后的 14B 模型的表现远胜于最先进的开源 QwQ-32B-Preview ,同时蒸馏后的 32B 和 70B 模型在dense模型的推理 benchmark 上也创下了新纪录。
Janus-Pro