简介
论文《DeepSeek-V3 Technical Report》于 2024 年 12 月发布**。DeepSeek-V3 总参数达到 671B**,每个 token 激活 37B 参数,大约是 5.5%,总共包括61层Transformer。然后它在FFN网络,除了前三层以外,全部替换成MoE。它的MoE架构采用了非常多的细粒度专家,包括1个共享专家和256个路由专家。每个token会激活8个路由专家,性能上秒杀其他开源模型,甚至能与闭源大牛们抗衡,真是“开源界的战斗机”。
- 发布时间:2024 年 12 月
- 论文地址:github.com/LRriver/Dee…
- Github地址:github.com/deepseek-ai…
摘要
DeepSeek-V3 不仅沿用了 MLA 和 DeepSeekMoE 的成功经验,还大胆创新了无辅助损失负载均衡策略和多 token 预测训练目标。14.8T 的预训练数据让它内涵满满,再加上 FP8 混合精度训练技术,不仅训练过程稳定得让人放心,成本也仅需 278.8 万 H800 GPU 小时。简而言之,这款模型用极低的成本换来了堪比 GPT-4o 的实力。
DeepSeek v2 vs v3
DeepSeek V3的模型参数,是671B。GPT-3的参数是175B,所以它要比GPT-3模型大很多。它是一个MoE的架构,每个token会激活37B参数,大约是5.5%。总共包括61层Transformer。然后它在FFN网络,除了前三层以外,全部替换成MoE。它的MoE架构采用了非常多的细粒度专家,包括1个共享专家和256个路由专家。每个token会激活8个路由
DeepSeek-V3 相较于 DeepSeek-V2 的主要改进点包括:
-
模型规模提升:
- 从 236B 总参数(21B 激活参数)跃升至 671B 总参数(37B 激活参数),为更强表达能力奠定基础
-
负载均衡策略改进:
- 从依赖辅助损失(Auxiliary Loss)的负载均衡转变为辅助损失无依赖策略,有效降低了负载均衡对模型性能的负面影响
-
训练目标升级:
- v3引入了多 token 预测训练目标,提升生成质量并可能支持更快的推理速度, DeepSeek-V2 未采用
-
预训练数据与训练技术扩展:
- 预训练数据量从 8.1T tokens 增加到 14.8T tokens,同时引入 FP8 混合精度训练框架,有效降低成本和内存占用
-
后训练阶段的知识蒸馏:
- 利用来自 DeepSeek-R1 的知识蒸馏进一步增强了模型的推理和生成能力,使得模型在标准评测中表现更为出色
结论
综合评估显示,DeepSeek-V3 不仅成为目前性能最强的开源模型,更在稳定性和训练效率上创下了新记录。尽管其最小部署单元较大,不适合资源有限的小团队,但相信随着硬件不断进步,这些问题很快就能迎刃而解。DeepSeek 未来将继续沿着这条“高效、低耗、开源”的路子,向着无限的可能进发
同系列
论文详情如下:
摘要
我们提出了 DeepSeek-V3,一个强大的 混合专家(Mixture-of-Experts, MoE) 语言模型,具有 6710 亿 总参数,其中每个 token 仅激活 370 亿 参数。为了实现高效推理和成本优化的训练,DeepSeek-V3 采用了 多头潜变量注意力(Multi-head Latent Attention, MLA) 和 DeepSeekMoE 体系结构,这些架构已在 DeepSeek-V2 中经过深入验证。此外,DeepSeek-V3 率先提出了一种 无辅助损失(auxiliary-loss-free) 负载均衡策略,并采用 多 token 预测(multi-token prediction) 训练目标,以提升模型性能。
DeepSeek-V3 在 14.8 万亿 高质量、多样化 token 上进行 预训练(pre-training) ,随后通过 监督微调(Supervised Fine-Tuning, SFT) 和 强化学习(Reinforcement Learning, RL) 进一步发挥其潜能。综合评估结果表明,DeepSeek-V3 的性能超越了所有开源模型,并与领先的闭源模型表现相当。
尽管表现优异,DeepSeek-V3 的完整训练仅消耗 2.788M H800 GPU 小时。此外,其训练过程极其稳定,整个训练过程中未出现 不可恢复的损失突 spike,也无需 回滚(rollback) 训练过程。模型的检查点可在 GitHub 获取
1. 引言
近年来,大型语言模型(LLMs)经历了快速的迭代和演进(Anthropic, 2024; Google, 2024; OpenAI, 2024a),逐步缩小了与通用人工智能(AGI)之间的差距。除了闭源模型,诸多 开源模型(如 DeepSeek 系列(DeepSeek-AI, 2024a,b,c; Guo et al., 2024)、LLaMA 系列(AI@Meta, 2024a,b; Touvron et al., 2023a,b)、Qwen 系列(Qwen, 2023, 2024a,b)以及 Mistral 系列(Jiang et al., 2023; Mistral, 2024))也取得了显著进展,力图缩小与闭源模型之间的性能差距。
为了进一步拓展开源模型的能力,我们 扩展了模型规模 并推出 DeepSeek-V3,其为一个 混合专家(Mixture-of-Experts, MoE) 模型,总参数量高达 6710 亿,其中 每个 token 仅激活 370 亿参数。
1.1 设计目标
DeepSeek-V3 的设计目标在于:
- 提升模型性能:采用 MLA 和 DeepSeekMoE 以提升推理和训练效率。
- 优化训练成本:采用 FP8 低精度训练 框架和 DualPipe 高效训练调度 算法。
- 提高任务泛化能力:采用 多 token 预测(Multi-Token Prediction, MTP) ,增强对下一个 token 预测的能力。
1.2 关键创新
架构创新
-
无辅助损失(auxiliary-loss-free)负载均衡策略:
- 传统 MoE 需要借助 辅助损失(auxiliary loss) 避免专家负载不均衡,而 DeepSeek-V3 采用了一种 无辅助损失 的负载均衡机制,以 避免辅助损失对模型性能的影响。
-
多 token 预测(MTP)训练目标:
- 该方法可以 提高数据利用率,并支持 推理加速(speculative decoding) 。
高效训练
-
FP8 低精度训练(FP8 Mixed Precision Training)
- 采用 FP8 混合精度框架,首次在超大规模模型上验证了 FP8 训练的有效性。
-
优化的 MoE 训练架构
- 通过 算法、框架和硬件的协同优化,突破了 跨节点通信瓶颈,实现了 接近满负载计算-通信重叠(near-full computation-communication overlap) 。
经济高效的训练成本
- 仅耗费 2664M GPU 小时 便完成 14.8T token 预训练,成为 当前最强的开源基础模型。
- 预训练后,仅需 0.1M GPU 小时 便可完成后续训练阶段。
知识蒸馏
- 从 DeepSeek-R1 模型蒸馏推理能力,并 结合 CoT(Chain-of-Thought)推理方式,显著提升 数学和逻辑推理能力。
1.3 训练成本
DeepSeek-V3 训练成本估算如下(假设 H800 GPU 租赁价格为 $2/小时):
训练阶段 | GPU 小时(H800) | 成本(USD) |
---|---|---|
预训练(Pre-Training) | 2.664M | $5.328M |
上下文扩展(Context Extension) | 0.119M | $0.238M |
后训练(Post-Training) | 0.005M | $0.01M |
总计(Total) | 2.788M | $5.576M |
结论:DeepSeek-V3 训练 经济高效,远低于许多商业闭源模型的训练成本。
2. DeepSeek-V3 体系结构
DeepSeek-V3 采用了 Transformer 框架,并结合了以下关键技术:
- 多头潜变量注意力(Multi-Head Latent Attention, MLA)
- DeepSeekMoE(优化的混合专家结构)
- 多 token 预测(Multi-Token Prediction, MTP)
2.1 基础架构
DeepSeek-V3 仍然基于 Transformer 框架(Vaswani et al., 2017),采用了 MLA 和 DeepSeekMoE 以提升推理和训练效率。
2.1.1 多头潜变量注意力(MLA)
在注意力机制方面,DeepSeek-V3 采用了多头潜变量注意力(Multi-Head Latent Attention, MLA)架构。 MLA 机制的核心思想是对注意力的键(Key)和值(Value)进行低秩联合压缩(low-rank joint compression) ,以减少推理时的键-值(KV)缓存,从而降低计算成本,同时保持接近标准多头注意力(Multi-Head Attention, MHA)的性能
低秩的原理
MLA 针对 KV 的低秩压缩
注意下图公式中: D 是 Down 下投影 U 是 Up 上投影的 意思
设
-
:嵌入维度, :单头维度
-
:第 个 token 在该层的输入, :注意力头数
-
为键值的压缩潜变量表示,用于针对输入进行转换
-
为降维变换矩阵
-
为 KV 压缩维度
其中: MLA 通过引入潜在表示 来压缩 键和值:
接着通过上投影(up-projection)恢复键和值 其中 分别为键和值的上投影矩阵: 如上图中公式 (2)和 (5),其中:
此外,MLA 还引入了一种独立的键 ,用于携带旋转位置编码 RoPE 如上图中公式 (3)
优化点:在推理过程中,仅需缓存 蓝框标出的向量(即 和 ),从而显著减少 KV 缓存需求,同时在性能上可与标准多头注意力(MHA)相媲美
低秩压缩的查询(Query)计算
同样地,对于查询(Query),MLA 采用低秩压缩,以减少训练过程中**激活(activation)**的内存占用
其中:注意 D 是 Down 下投影 U 是 Up 上投影的 意思
- 上图中公式(6) 为查询的低秩压缩表示
- 为查询压缩维度
- 为查询的降维和上投影矩阵
- 为生成带 RoPE 的查询向量的投影矩阵
所以
- 公式 6 为低秩压缩
- 公式 7 为 上投影还原 query
- 公式 8 基于压缩后的 生成带 RoPE 的上投影矩阵
- 公式 9 联合位置信息
MLA 计算最终注意力输出
最终,MLA 的注意力计算由 查询:、键:组成:
MLA 的优势
- 降低 KV 缓存成本:相比标准 MHA,MLA 只缓存 和 ,减少存储占用。
- 提升推理效率:MLA 在保持与 MHA 相当的性能下,大幅优化了计算和存储效率,特别适用于 长序列推理任务
2.1.2 DeepSeekMoE(无辅助损失负载均衡)
DeepSeekMoE 的基础架构
对于前馈网络(Feed-Forward Networks, FFNs),DeepSeek-V3 采用 DeepSeekMoE 体系结构(Dai et al., 2024)。相较于传统的 MoE 体系(如 GShard(Lepikhin et al., 2021)),DeepSeekMoE 使用更精细的专家(fine-grained experts) ,并 引入共享专家(shared experts)
-
为第 t 个 token 的 FFN 输入
-
为 共享专家(shared experts) 的数量
-
为 可路由专家(routed experts) 的数量
-
为 每个 token 选取的专家数
-
为专家 i 在 token t 上的门控值(gating value)
因此对于公式 12 为第 i 个共享专家,对于 $FFN_i^{(r)} (.) 为 第一个可路由的专家,专家的门控值(gating value)计算如下 公式 13 , 其子项依赖参考 14 ,15
- 为 专家 i 的中心向量(centroid vector)
- σ(⋅) 表示 Sigmoid 激活函数
- 表示 取前 个最高得分的专家
所以核心逻辑可以理解为
- 每个专家 针对 用户第 t 个FFN输入 与 专家中心向量乘积的结果,进行Sigmod 激活函数 处理
- 选取 topK 个专家的结果,这里方便计算非 topK 全部归 0, 然后针对每个专家的输出进行归一化
- 基于共享专家 , 细分专家 和 用户的输入 产生最终的输出,在这里起到残差的作用
不同于 DeepSeek-V2,DeepSeek-V3 使用 Sigmoid 计算 affinity scores,并对所有被选中的 affinity scores 进行归一化,从而生成最终的门控值
无辅助损失负载均衡
在 MoE 体系中,不均衡的专家负载(unbalanced expert load) 会导致 路由崩溃(routing collapse) ,并降低计算效率(Shazeer et al., 2017)。传统方法通常依赖 辅助损失(auxiliary loss) 进行负载均衡(Fedus et al., 2021; Lepikhin et al., 2021),但过大的辅助损失可能 损害模型性能(Wang et al., 2024a)。
为了更好地平衡 负载均衡(load balance) 和 模型性能(model performance) ,DeepSeek-V3 首创了一种无辅助损失(auxiliary-loss-free)负载均衡策略。
其核心思想是:引入专家偏置项(bias term) 影响专家选择,而不影响最终的专家门控值计算。
专家选择方式修改为
- 仅用于路由决策,不影响最终 FFN 计算
- 门控值 仍然基于原始 计算
在训练过程中,每个训练步(training step)都会监控所有专家的负载:
- 如果专家 i 负载过高,则减少其
- 如果专家 i 负载过低,则增加其
更新方式如下:(γ 为超参数,控制偏置更新速度)
通过 动态调整 ,**DeepSeek-V3 在整个训练过程中保持专家负载均衡,并在无辅助损失的情况下取得比传统方法更好的性能
补充的序列级负载均衡损失
尽管 DeepSeek-V3 主要依赖 无辅助损失负载均衡,但为了防止单个序列内负载极端不均衡,仍然采用了补充的序列级负载均衡损失:
其中:
- 为超参数,控制负载均衡损失权重
- T 为序列长度
- 1(⋅) 为指示函数
- 表示专家 iii 在整个序列中的归一化负载
DeepSeek-V3 通过 极小的 α 值 设定该损失,使其在保证负载均衡的同时 不会影响模型性能。
进一步优化:
1)节点受限路由(Node-Limited Routing)
DeepSeek-V3 使用受限路由机制,以减少训练过程中的通信开销。具体而言,限制每个 token 最多只能被分配到 M 个节各,其选择方式如下
这一策略保证了 专家间的计算-通信重叠(computation-communication overlap) ,提升训练效率。
(2)无 token 丢弃(No Token-Dropping)
由于 DeepSeek-V3 采用的负载均衡策略非常有效,其在整个训练过程中 无需丢弃 token。此外,在推理阶段,DeepSeek-V3 还采取了额外的负载均衡策略,确保 不会丢弃 token,从而优化推理性能。
这一策略保证了 专家间的计算-通信重叠(computation-communication overlap) ,提升训练效率。
结论
- DeepSeekMoE 采用更精细的专家划分和共享专家机制,提升模型效率。
- 无辅助损失负载均衡策略 通过动态调整专家偏置 bib_ibi 避免传统辅助损失的副作用。
- 支持序列级负载均衡损失,进一步优化专家分配。
- 支持受限路由和无 token 丢弃,提升训练与推理的稳定性。
2.2 多 Token 预测(Multi-Token Prediction, MTP)
受 Gloeckle et al. (2024) 启发,我们在 DeepSeek-V3 中引入并采用多 Token 预测(Multi-Token Prediction, MTP)目标,该方法扩展了模型在每个位置的预测范围,使其能够预测多个未来的 Token。
MTP 具有以下主要优势:
- 提升训练信号密度:MTP 目标可以提供更多的训练信号,提高数据利用率,从而加速训练收敛。
- 增强 Token 规划能力:通过预测多个未来 Token,模型可以更好地规划其表示(representation planning) ,从而增强生成质量和连贯性。
图 3 展示了 MTP 在 DeepSeek-V3 中的实现方式。与 Gloeckle et al. (2024) 使用多个独立的输出头并行预测 D 个附加 Token 不同,我们采用了逐步预测(sequential prediction)的方法,保持了完整的因果链(causal chain) 。
1. MTP 结构
在 MTP 方案中,我们使用 D 个级联(sequential)MTP 模块 来预测 D 个附加 Token。对于第 i 个 Token,在第 k 级预测深度(depth)时,我们首先将前一级(k−1)的表示 与即将预测的 Token 的嵌入 结合:
设
其中:
- [⋅;⋅] 表示拼接操作
- 表示 RMS 归一化
- 当 k=1 时, 指代主模型(main model)的表示
然后, 被输入到第 k 级 Transformer 层,生成新的输出表示
其中:
- T 为输入序列长度
- i:j 表示切片操作(包含左右边界)
最终,输出头基于 计算第 k 个附加 Token 的概率分布:
其中:
- 为预测的第 k 个附加 Token 的概率分布
- V 为词表大小(vocabulary size)
优化点:
- 所有 MTP 模块共享嵌入层和输出头,减少参数冗余。
- 逐步预测 Token(sequential prediction) ,确保生成的每个 Token 都在之前预测的基础上递归构造。
2. MTP 训练目标
对于每个预测深度,我们计算 交叉熵损失(cross-entropy loss) :
其中:
- 为真实 Token
- 表示模型对 的预测概率
最终,我们对所有 MTP 目标的损失进行平均,并乘以一个权重系数 λ\lambdaλ 以得到总 MTP 训练损失:
注意:
- λ 为 MTP 目标的加权因子,控制 MTP 目标对最终训练损失的贡献。
- MTP 目标可以提升模型的 Token 预测能力,改善生成质量。
3. MTP 在推理(Inference)中的应用
MTP 主要用于提升主模型(main model)的训练效果,因此在推理过程中,我们可以直接丢弃 MTP 模块,使主模型独立工作。
此外,MTP 还可用于推理加速(speculative decoding) :
- 由于 MTP 训练目标增强了模型对未来 Token 的预测能力,在推理时可以预生成多个 Token,从而减少推理延迟。
总结
- MTP 扩展了模型的预测范围,提高了训练信号密度和 Token 规划能力。
- 采用级联预测(sequential prediction)方式,保持完整的因果链,提高生成质量。
- 在推理时可直接丢弃 MTP 模块,或用于 speculative decoding 以提高推理效率。
3. 训练基础设施(Infrastructures)
近年来,低精度训练(Low-Precision Training) 取得了重要进展(Dettmers et al., 2022; Noune et al., 2022; Peng et al., 2023b)。受此启发,我们提出了一种细粒度混合精度(Fine-Grained Mixed Precision) 训练框架,采用 FP8 数据格式 训练 DeepSeek-V3。尽管低精度训练具有显著的计算效率优势,但其常受到激活值、权重和梯度中异常值(Outliers) 的影响,从而导致数值稳定性问题(Fishman et al., 2024; He et al.; Sun et al., 2024)。尽管推理量化(Inference Quantization)已经取得了长足进展(Frantar et al., 2022; Xiao et al., 2023),但在大规模语言模型训练中,仍缺乏对低精度训练的成功应用。
3.1 计算集群(Compute Clusters)
DeepSeek-V3 训练于一台配备 2048 块 NVIDIA H800 GPU 的集群上。每个计算节点包含 8 块 GPU,并且采用以下通信结构:
- 节点内通信(intra-node communication) :通过 NVLink 和 NVSwitch 连接,提供 160 GB/s 的带宽。
- 跨节点通信(inter-node communication) :通过 InfiniBand(IB) 连接,提供 50 GB/s 的带宽。
为了优化 GPU 之间的通信效率,我们采用 混合拓扑结构(hybrid topology) :
- 在节点内,NVLink 负责高速数据传输,减少通信瓶颈。
- 在节点间,InfiniBand 采用高效的 All-to-All 通信策略,以充分利用带宽。
3.2 训练框架(Training Framework)
DeepSeek-V3 的训练框架基于 HAI-LLM,一个由 DeepSeek-AI 工程团队开发的高效轻量级训练框架。该框架采用:
- 16 路流水线并行(Pipeline Parallelism, PP)
- 64 路专家并行(Expert Parallelism, EP) ,跨 8 个节点
- ZeRO-1 数据并行(Data Parallelism, DP)
为了最大程度提升训练效率,我们引入了一系列优化,包括:
- DualPipe 训练算法:优化流水线并行,减少 pipeline bubbles,并实现计算-通信重叠。
- 跨节点 All-to-All 通信优化:开发高效的 All-to-All 通信算子,最大化 InfiniBand 和 NVLink 带宽利用率。
- 极致的内存优化:通过重新计算(recomputation)和共享参数,减少 Tensor 并行(Tensor Parallelism, TP)需求,从而节省训练资源。
3.2.1 DualPipe 训练算法
背景: 在 MoE 训练中,跨节点专家通信会导致 计算-通信比(computation-to-communication ratio) 下降,通常低至 1:1,严重影响训练效率。为了解决这一问题,我们提出了一种新的流水线并行(Pipeline Parallelism)算法——DualPipe。
DualPipe 关键优化点:
- 重叠前向(forward)和反向(backward)计算,隐藏通信开销。
- 优化流水线调度(pipeline scheduling) ,减少 pipeline bubbles,提高 GPU 计算利用率。
DualPipe 训练调度(scheduling) :
-
每个前向(forward)和反向(backward)计算块被划分为多个子任务:
- 注意力计算(Attention)
- MoE 计算(MLP 层)
- All-to-All 通信(Dispatch & Combine)
-
计算任务与通信任务交错执行,确保所有 GPU 始终处于高效计算状态。
DualPipe 计算-通信重叠示意图
计算任务 | MLP 前向 | MLP 反向 | Attention 前向 | Attention 反向 | Dispatch | Combine |
---|---|---|---|---|---|---|
GPU 0 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
GPU 1 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
这种调度方式确保计算任务与通信任务同时执行,从而接近完全隐藏通信开销。
DualPipe 的优势
-
计算-通信完全重叠(Full Overlap) :
- 在一个 mini-batch 内部,通信和计算同时进行。
-
极少的 pipeline bubbles:
- 比传统 1F1B(1 Forward, 1 Backward)方法减少 50% 以上的计算空闲时间。
-
提升 GPU 计算利用率:
- 实现 GPU 计算利用率超 95% ,有效提升训练吞吐量。
3.2.2 高效的跨节点 All-to-All 通信
在 MoE 训练中,All-to-All 通信是主要的计算瓶颈之一。为了优化 All-to-All 计算,我们开发了 自定义通信算子(custom communication kernels) ,实现:
-
最小化 Streaming Multiprocessor (SM) 开销,减少计算资源占用。
-
InfiniBand + NVLink 双层优化:
- 跨节点(Inter-node) :通过 InfiniBand 进行 All-to-All 通信。
- 节点内(Intra-node) :使用 NVLink 加速数据传输。
优化后的 All-to-All 通信策略
- InfiniBand 负责跨节点通信
- NVLink 负责节点内部数据交换
- 两者并行执行,实现计算-通信完全重叠
结果:
- GPU SM 资源需求降低 30%
- 跨节点 All-to-All 通信延迟降低 45%
- 训练吞吐量提升 20%
3.2.3 极致的内存优化
DeepSeek-V3 采用以下优化策略,减少训练时的内存开销:
-
重新计算 RMSNorm 和 MLA Up-Projection:
- 训练时不存储 RMSNorm 和 MLA 上投影的中间激活值,在反向传播时重新计算,减少激活存储需求。
-
EMA(Exponential Moving Average)存储在 CPU:
- 训练过程中,我们使用 EMA 估计模型性能,并将 EMA 参数存储在 CPU,而不是 GPU 内存。
-
MTP 共享嵌入和输出头:
- MTP 模块和主模型共用 嵌入层和输出层,节省 30% 参数存储。
3.3 FP8 训练(FP8 Training)
近年来,低精度训练(Low-Precision Training) 取得了重要进展(Dettmers et al., 2022; Noune et al., 2022; Peng et al., 2023b)。受此启发,我们提出了一种细粒度混合精度(Fine-Grained Mixed Precision) 训练框架,采用 FP8 数据格式 训练 DeepSeek-V3。尽管低精度训练具有显著的计算效率优势,但其常受到激活值、权重和梯度中异常值(Outliers) 的影响,从而导致数值稳定性问题(Fishman et al., 2024; He et al.; Sun et al., 2024)。尽管推理量化(Inference Quantization)已经取得了长足进展(Frantar et al., 2022; Xiao et al., 2023),但在大规模语言模型训练中,仍缺乏对低精度训练的成功应用。
3.3.1 混合精度训练框架(Mixed Precision Framework)
图 6 展示了我们的FP8 混合精度训练框架。在该框架下:
-
前向传播(Fprop) :计算采用 FP8 激活值(Activations) 和 FP8 权重(Weights) 。
-
反向传播(Backward Propagation) :
- 输入梯度(Dgrad)存储为 FP8。
- 权重梯度(Wgrad)存储为 FP8。
-
优化器状态(Optimizer States) :
- AdamW 一阶动量(First Moment)和二阶动量(Second Moment) 采用 BF16 存储。
- 主权重(Master Weights) 采用 FP32 存储,以确保数值稳定性。
为了避免精度损失,我们采用延迟量化(Delayed Quantization) 技术,具体方法如下:
- 在 前向传播 时,计算完成后 才将激活值和权重转换为 FP8。
- 在 反向传播 时,梯度存储为 FP8,随后再进行参数更新。
- 主权重仍然采用 FP32,而优化器状态存储为 BF16 以减少内存占用。
3.3.2 量化与矩阵乘法的精度优化
于我们的 FP8 混合精度训练框架,我们引入了几项策略以提升低精度训练的准确性,这些策略主要聚焦于量化方法和乘法过程。
细粒度量化。
在低精度训练框架中,由于 FP8 格式受限于较少的指数位,其动态范围有限,容易出现溢出和下溢问题。通常,为了使输入分布与 FP8 格式的可表示范围对齐,我们将输入张量的最大绝对值缩放至 FP8 的最大可表示值(Narang et al., 2017)。这种做法使低精度训练对激活中的异常值非常敏感,从而严重降低量化精度。为了解决这一问题,我们提出了一种细粒度量化方法,在更小的粒度上进行缩放。如图 7(a) 所示,(1)对于激活,我们在 1×128 的 tile 级别上对元素进行分组和缩放(即每个 token 的 128 个通道);(2)对于权重,我们在 128×128的 block 级别上对元素进行分组和缩放(即每 128 个输入通道对应 128 个输出通道)。这种方法确保量化过程能够更好地适应异常值,因为它可以根据较小的元素组调整缩放因子。在附录 B.2 中,我们进一步讨论了当对激活采用与权重量化相同的 block 分组和缩放时,可能引发的训练不稳定问题。
我们方法中的一个关键改进是沿 GEMM 操作的内维度引入每组独立的缩放因子。该功能在标准 FP8 GEMM 中并不直接支持,但结合我们精确的 FP32 累加策略后,可以高效实现。
值得注意的是,我们的细粒度量化策略与微缩放格式(microscaling formats)的理念高度一致(Rouhani et al., 2023b),而 NVIDIA 下一代 GPU(Blackwell 系列)的 Tensor Cores 已宣布支持具有更小量化粒度的微缩放格式(NVIDIA, 2024a)。我们希望我们的设计能为未来工作提供参考,使之跟上最新 GPU 架构的发展步伐。
提高累加精度。
低精度 GEMM 操作常常遭遇下溢问题,其准确性在很大程度上依赖于高精度累加,通常以 FP32 精度进行(Kalamkar et al., 2019; Narang et al., 2017)。然而,我们观察到,在 NVIDIA H800 GPU 上,FP8 GEMM 的累加精度仅能保持约 14 位,这显著低于 FP32 的累加精度。当内维度 KKK 较大时(Wortsman et al., 2023),这种问题会更加明显,这在大规模模型训练中尤为典型,此时批量大小和模型宽度均有增加。例如,对于 K=4096K = 4096K=4096 的两个随机矩阵的 GEMM 操作,在我们的初步测试中,Tensor Cores 的有限累加精度导致最大相对误差接近 2%。尽管存在这些问题,有限的累加精度仍然是一些 FP8 框架的默认选项(NVIDIA, 2024b),这严重制约了训练精度。
为了解决这一问题,我们采用了将计算提升至 CUDA Cores 以获得更高精度的策略(Thakkar et al., 2023)。如图 7(b) 所示,具体来说,在 Tensor Cores 上执行 MMA(矩阵乘加)操作时,中间结果以有限位宽进行累加。当累加达到一个间隔 NCN_CNC 后,这些部分结果会被复制到 CUDA Cores 上的 FP32 寄存器中,在那里进行全精度 FP32 累加。如前所述,我们的细粒度量化在内维度 KKK 上应用每组缩放因子,这些缩放因子可以在 CUDA Cores 上高效地用于反量化过程,且额外计算开销极小。
值得注意的是,该修改降低了单个 warpgroup 的 WGMMA(Warpgroup 级矩阵乘加)指令发放率。然而,在 H800 架构上,通常会有两个 WGMMA 同时存在:当一个 warpgroup 执行提升操作时,另一个可以执行 MMA 操作。此设计使得两项操作可以重叠进行,从而保持 Tensor Cores 的高利用率。根据我们的实验,将 NCN_CNC 设为 128 个元素(相当于 4 个 WGMMAs)是能在不引入显著额外开销的前提下显著提高精度的最小累加间隔。
种方法能够针对更小的元素组进行自适应缩放,从而更好地适应异常值。在附录 B.2 中,我们进一步讨论了如果像权重量化那样对激活值进行块级别分组缩放,将导致训练的不稳定性。
我们引入了一项 关键改进(Key Modification) :在 GEMM 计算的内部维度上引入逐组(Per-Group)缩放因子。这一功能在标准 FP8 GEMM 计算中并不直接支持,但结合我们精确的 FP32 累积策略(FP32 Accumulation Strategy) ,可高效实现
值得注意的是,我们的细粒度量化策略与 NVIDIA 下一代 Blackwell 系列 GPU 的微缩放格式(Microscaling Formats)高度一致(NVIDIA, 2024a)。我们希望该设计能够为未来的 GPU 架构优化提供参考。
提升累积精度(Increasing Accumulation Precision)
低精度 GEMM 计算通常受限于累积精度(Accumulation Precision) ,一般情况下,累积操作应采用 FP32 精度(Kalamkar et al., 2019; Narang et al., 2017)。然而,我们发现 NVIDIA H800 GPU 的 FP8 GEMM 计算仅保留大约 14 位的累积精度,远低于 FP32 的标准精度。
此问题在大规模模型训练场景下更加严重,尤其当 **GEMM 计算的内部维度 KKK 较大(例如 K=4096K = 4096K=4096)时,我们测试发现 Tensor Core 计算的最大相对误差接近 2% 。
为了解决这一问题,我们采用CUDA Core 高精度累积策略,具体方法如下:
- 在 Tensor Core 计算达到 NC=128N_C = 128NC=128 元素后,转移到 CUDA Core 进行 FP32 累积计算。
- 通过 FP32 计算实现更精确的缩放因子乘法,减少累积误差
3.3.3 Low-Precision Storage and Communication
结合我们的 FP8 训练框架,我们通过将缓存的激活和优化器状态压缩为低精度格式,进一步降低内存消耗和通信开销。
低精度优化器状态。
我们采用 BF16 数据格式而非 FP32 来跟踪 AdamW 优化器(Loshchilov and Hutter, 2017)中的一阶和二阶矩,且不会带来明显的性能下降。但为了确保整个训练过程的数值稳定性,优化器存储的主权重以及用于批量累积的梯度仍然以 FP32 格式保存。
低精度激活。
如图 6 所示,Wgrad 操作以 FP8 进行。为减少内存消耗,自然选择是在 Linear 层反向传播过程中以 FP8 格式缓存激活。然而,对于一些算子,为了实现低成本高精度训练,需要作出特殊考虑:
- 注意力算子之后 Linear 层的输入。 这些激活同样用于注意力算子的反向传播,因此对精度非常敏感。我们专门为这些激活采用了自定义的 E5M6 数据格式。此外,在反向传播过程中,这些激活会从 1×1281 \times 1281×128 的量化 tile 转换为 128×1128 \times 1128×1 的 tile。为避免引入额外的量化误差,所有缩放因子均采用整幂缩放(即 2 的整数次幂)。
- MoE 中 SwiGLU 算子的输入。 为进一步降低内存成本,我们缓存 SwiGLU 算子的输入,并在反向传播时重新计算其输出。这些激活同样采用我们的细粒度量化方法以 FP8 格式存储,在内存效率与计算精度之间取得平衡。
低精度通信。
通信带宽是 MoE 模型训练中的关键瓶颈。为缓解这一问题,我们在 MoE 上投影前对激活进行 FP8 量化,然后应用 dispatch 组件,这与 MoE 上投影中的 FP8 正向传播(Fprop)兼容。与注意力算子之后 Linear 层的输入类似,此处激活的缩放因子也要求为 2 的整幂。同样的策略也应用于 MoE 下投影前的激活梯度。对于正向与反向的 combine 组件,我们保持其为 BF16 格式,以在训练流程的关键部分保持精度。
3.4 推理与部署(Inference and Deployment)
我们在 H800 集群上部署 DeepSeek-V3,其中每个节点内的 GPU 通过 NVLink 互联,而整个集群内的所有 GPU 均通过 IB 完全互联。为了同时确保在线服务的服务级目标(SLO)和高吞吐量,我们采用了将 prefilling 和 decoding 阶段分离的部署策略。
3.4.1 Prefilling
Prefilling 阶段的最小部署单元由 4 个节点(共 32 个 GPU)组成。注意力部分采用 4 路 Tensor 并行(TP4)结合序列并行(SP),并配合 8 路数据并行(DP8);其中较小的 TP 数量 4 限制了 TP 通信的开销。对于 MoE 部分,我们采用 32 路专家并行(EP32),确保每个专家能处理足够大的批次,从而提高计算效率。在 MoE 的全对全通信中,我们采用与训练时相同的方法:先通过 IB 将 token 传输至各节点,再通过节点内 NVLink 转发至对应的专家。特别地,对于浅层中密集 MLP 部分,我们采用 1 路 Tensor 并行以节省 TP 通信。
为了在 MoE 部分实现不同专家之间的负载均衡,需要确保每个 GPU 处理大致相同数量的 token。为此,我们引入了冗余专家部署策略,对负载较高的专家进行复制冗余部署。负载较高的专家根据在线部署过程中收集的统计信息检测出,并定期(例如每 10 分钟)进行调整。确定冗余专家集合后,我们在节点内依据实际负载情况对专家进行重新分配,尽可能在不增加跨节点全对全通信开销的情况下平衡各 GPU 的负载。对于 DeepSeek-V3 的部署,prefilling 阶段设置了 32 个冗余专家。每个 GPU 除了托管原有的 8 个专家外,还额外托管一个冗余专家。
此外,在 prefilling 阶段,为提高吞吐量并隐藏全对全和 TP 通信的开销,我们同时处理两个计算负载相似的 micro-batch,将一个 micro-batch 的注意力和 MoE 计算与另一个 micro-batch 的 dispatch 和 combine 过程进行重叠。
最后,我们正在探索专家动态冗余策略,即每个 GPU 托管更多的专家(例如 16 个专家),但在每个推理步骤中仅激活 9 个。在每层全对全操作开始前,我们实时计算全局最优的路由方案。鉴于 prefilling 阶段涉及大量计算,实时计算该路由方案的开销几乎可以忽略不计。
3.4.2 Decoding
在 decoding 阶段,我们将共享专家视为路由专家。从这一角度看,每个 token 在路由时将选择 9 个专家,其中共享专家被视为高负载专家,总是被选中。Decoding 阶段的最小部署单元由 40 个节点(共 320 个 GPU)组成。注意力部分采用 TP4 与 SP 结合 DP80,而 MoE 部分则采用 EP320。在 MoE 部分,每个 GPU 仅托管一个专家,另外有 64 个 GPU 负责托管冗余专家和共享专家。dispatch 和 combine 部分的全对全通信均通过 IB 直接点对点传输以实现低延迟。此外,我们利用 IBGDA(NVIDIA, 2022)技术进一步降低延迟并增强通信效率。
与 prefilling 阶段类似,我们会周期性地根据在线服务中统计的专家负载确定冗余专家集合。然而,由于每个 GPU 仅托管一个专家,因此不需要重新排列专家。我们也在探索 decoding 阶段的动态冗余策略,但这需要对计算全局最优路由方案的算法进行更为细致的优化。
(注:原文在此处内容有所截断。)
3.5 硬件设计建议(Suggestions on Hardware Design)
为了进一步提升训练效率,我们提出了针对本训练框架的硬件设计建议。
3.5.1 通信硬件
我们的训练框架旨在将通信开销降至最低。因此,我们建议采用支持高带宽、低延迟互联的硬件,例如 NVLink 和 InfiniBand。我们优化的跨节点全对全通信内核能够显著受益于这种互联技术,从而确保通信任务不会成为瓶颈。
3.5.2 计算硬件
对于计算硬件,我们推荐配备先进 Tensor Core 的 GPU,这些 GPU 能高效执行低精度 GEMM 操作。此外,支持动态精度缩放和微缩放格式的硬件将更具优势。硬件还应具备充足的内存带宽以及高效混合精度运算的支持,以最大化我们 FP8 训练框架带来的性能提升。
4. 预训练(Pre-Training)
内容总结如下:
1. 数据构建
- 语料优化:在预训练语料构建上,DeepSeek‑V3 针对数学与编程样本进行了比 DeepSeek‑V2 更高比例的采样,同时扩展了多语言覆盖(除英语与中文外)。
- 数据预处理:通过改进的数据处理流水线减少冗余,同时保留语料多样性。文档打包技术保证了数据完整性,且采用了 Fill‑in‑Middle(FIM)策略,利用 Prefix‑Suffix‑Middle(PSM)框架组织数据,以提高模型对中间文本的预测能力。
- 分词器:使用 Byte‑level BPE 技术并扩展词表至 128K 个 token,同时对预分词器进行了调整(例如合并标点与换行符),以提升多语言压缩效率,但也采取了随机拆分策略缓解 token 边界偏差问题。
2. 超参数设置
- 模型配置:DeepSeek‑V3 采用 61 层 Transformer,隐藏维度为 7168;MLA 部分使用 128 个注意力头,每个头的维度为 128;KV 压缩维度设为 512,查询压缩维度为 1536,解耦后每个头的 RoPE 维度为 64。
- MoE 层设计:除前三层外,其余 FFN 均替换为 MoE 层,每个 MoE 层包含 1 个共享专家和 256 个路由专家,每个 token 激活 8 个路由专家,并确保每个 token 至多分配到 4 个节点。
- 训练参数:采用 AdamW 优化器,并设定具体的学习率调度策略——从初始阶段的线性预热,到后续的恒定阶段,再到余弦衰减直至最终的较低学习率;此外,还采用了批量大小调度策略和梯度裁剪,确保训练稳定。
3. 长上下文扩展
- 扩展策略:在预训练完成后,通过采用 YaRN 技术进行上下文扩展,分两个阶段(各 1000 步)逐步将上下文窗口从 4K 扩展到 32K,再扩展到 128K。
- 配置细节:扩展阶段保持与 DeepSeek‑V2 相同的 YaRN 参数设置,并对批量大小和序列长度进行了相应调整,以确保模型在处理超长输入时依然保持较高性能。
4. 训练成本
- 资源消耗:整个预训练阶段共消耗 2664K H800 GPU 小时;上下文扩展阶段消耗 119K GPU 小时;后训练阶段消耗 5K GPU 小时,总计约 2788K GPU 小时。
- 成本估算:按 H800 GPU 租赁价格 5.576M。
5. 后训练
5.1. 监督微调
我们精心构建了指令调优数据集,共包含 150 万个样本,涵盖多个领域,每个领域均采用针对其特定需求量身定制的数据生成方法。
推理数据。 针对数学、编程竞赛题目和逻辑谜题等推理相关数据集,我们通过内部 DeepSeek-R1 模型生成数据。虽然 R1 生成的数据具有较高的准确性,但存在“过度思考”、格式不佳和冗长等问题。我们的目标是平衡 R1 生成的高准确性推理数据与格式清晰、简洁的常规推理数据之间的关系。
为确立我们的方法论,我们首先针对某一特定领域(如编程、数学或一般推理)构建了一个专家模型,采用监督微调(SFT)与强化学习(RL)相结合的训练流水线。该专家模型作为最终模型的数据生成器。训练过程中,每个样本生成两种不同类型的 SFT 数据:一种将问题与其原始回答以“<问题, 原始回答>”格式配对;另一种在问题和 R1 回答前加入系统提示,以“<系统提示, 问题, R1 回答>”格式呈现。
系统提示经过精心设计,包含引导模型生成富含反思与验证机制回答的指令。在 RL 阶段,模型利用高温采样生成融合了 R1 生成和原始数据模式的回答,即使在没有显式系统提示的情况下也能做到这一点。经过数百个 RL 步骤后,中间的 RL 模型学会整合 R1 的模式,从而在策略上提升整体性能。
完成 RL 训练阶段后,我们通过拒绝采样(rejection sampling)筛选出高质量的 SFT 数据供最终模型使用,此时专家模型作为数据生成来源。该方法确保最终训练数据既保留了 DeepSeek-R1 的优势,又能生成简洁且高效的回答。
非推理数据。 针对创意写作、角色扮演以及简单问答等非推理数据,我们采用 DeepSeek-V2.5 生成回答,并邀请人工标注者验证数据的准确性和正确性。
SFT 设置。 我们使用 SFT 数据集对 DeepSeek-V3-Base 进行两轮微调,采用余弦衰减学习率调度,其初始值为 5×10−65 \times 10^{-6}5×10−6,逐步下降至 1×10−61 \times 10^{-6}1×10−6。训练过程中,每个序列由多个样本打包而成,但我们采用样本遮蔽策略以确保这些示例彼此独立且不可见。
5.2. 强化学习
5.2.1. Reward Model(奖励模型)
我们在 RL 过程中采用基于规则的奖励模型(Rule-Based RM)和基于模型的奖励模型(Model-Based RM)。
基于规则的奖励模型。 对于可以通过特定规则验证的问题,我们采用基于规则的奖励体系来确定反馈。例如,某些数学题目具有确定性结果,我们要求模型以规定格式(例如,将答案框在一个框内)给出最终答案,从而可以应用规则验证其正确性。同样,对于 LeetCode 题目,我们可以利用编译器根据测试用例生成反馈。通过尽可能利用基于规则的验证,我们确保了较高的可靠性,因为这种方法抗干扰能力强,不易被操纵或利用。
基于模型的奖励模型。 对于存在自由形式参考答案的问题,我们依靠奖励模型判断回答是否与预期参考答案匹配。反之,对于没有明确参考答案的问题(如涉及创意写作的题目),奖励模型则根据问题及对应答案提供反馈。该奖励模型基于 DeepSeek-V3 SFT 检查点进行训练。为提升其可靠性,我们构建了偏好数据,不仅提供最终奖励,还包含导致奖励的链式思考过程。这种方法有助于降低特定任务中奖励作弊的风险。
5.2.2. Group Relative Policy Optimization(群体相对策略优化)
与 DeepSeek-V2(DeepSeek-AI, 2024c)类似,我们采用了群体相对策略优化(GRPO)(Shao et al., 2024),该方法舍弃了通常与策略模型同等规模的评论者模型,而是通过群体得分来估计基准。具体而言,对于每个问题 qqq,GRPO 从旧策略模型 中采样一组输出 ,然后通过最大化下列目标来优化策略模型
ϵ 和 β为超参数,为参考模型;而优势 则根据群体中每个输出对应的奖励 计算得出:
我们在 RL 过程中整合了来自编码、数学、写作、角色扮演和问答等多个领域的提示。这种方法不仅使模型与人类偏好更紧密对齐,同时在 SFT 数据有限的场景下也能显著提升基准测试表现。
5.3. 评估
5.3.1. 评估设置
评估基准。 除了用于基础模型测试的基准外,我们还在 IFEval (Zhou et al., 2023)、FRAMES (Krishna et al., 2024)、LongBench v2 (Bai et al., 2024)、GPQA (Rein et al., 2023)、SimpleQA (OpenAI, 2024c)、C-SimpleQA (He et al., 2024)、SWE-Bench Verified (OpenAI, 2024d)、Aider¹、LiveCodeBench (Jain et al., 2024)(数据采集自 2024 年 8 月至 11 月)、Codeforces²、中国全国高中数学奥林匹克(CNMO 2024)³以及美国邀请数学考试 2024(AIME 2024,MAA, 2024)上对指令模型进行评估。
对比基线。 我们对聊天模型与多个强基线进行了全面评估,包括 DeepSeek-V2-0506、DeepSeek-V2.5-0905、Qwen2.5 72B Instruct、LLaMA-3.1 405B Instruct、Claude-Sonnet-3.5-1022 和 GPT-4o-0513。对于 DeepSeek-V2 系列模型,我们选取了最具代表性的变体进行比较;而对于闭源模型,则通过各自 API 进行评估。
详细评估配置。 对于 MMLU、DROP、GPQA 和 SimpleQA 等标准基准,我们采用了 simple-evals 框架提供的评估提示;对于 MMLU-Redux,则在零样本设置下使用 Zero-Eval 提示格式(Lin, 2024)。对于其他数据集,我们遵循数据集创作者提供的原始评估协议和默认提示。对于编程和数学基准,HumanEval-Mul 数据集涵盖 8 种主流编程语言(Python、Java、C++、C#、JavaScript、TypeScript、PHP 及 Bash)。我们分别采用 CoT 和非 CoT 方法评估 LiveCodeBench 的模型表现(数据采集自 2024 年 8 月至 11 月)。Codeforces 数据集则以竞争者百分比衡量;SWE-Bench Verified 采用 agentless 框架(Xia et al., 2024)进行评估;Aider 相关基准使用 “diff” 格式评估;数学评估中,AIME 和 CNMO 2024 的温度设置为 0.7,结果取 16 次平均,而 MATH-500 则采用贪婪解码。所有基准均允许模型输出最多 8192 个 token。
5.3.2. 标准评估
表 6 展示了评估结果,表明 DeepSeek-V3 是目前表现最优的开源模型。此外,其性能与前沿闭源模型(如 GPT-4o 和 Claude-Sonnet-3.5-Sonnet)不相上下。
英文基准。 MMLU 是一个广泛认可的基准,旨在评估大语言模型在不同知识领域和任务上的表现。DeepSeek-V3 在 MMLU 上表现与 LLaMA-3.1-405B、GPT-4o 和 Claude-Sonnet 3.5 等顶级模型持平,同时显著优于 Qwen2.5 72B。此外,DeepSeek-V3 在更具挑战性的教育知识基准 MMLU-Pro 上表现出色,仅略逊于 Claude-Sonnet 3.5;在 MMLU-Redux(经过标签校正的 MMLU 精炼版本)上更是超越了同行。在 PhD 级评估测试集 GPQA-Diamond 上,DeepSeek-V3 取得了显著成绩,仅次于 Claude 3.5 Sonnet,并大幅领先其他竞争者。
在 DROP、LongBench v2 和 FRAMES 等长上下文理解基准上,DeepSeek-V3 依然展现出顶级模型的风范。它在 DROP 的 3-shot 设置下达到了 91.6 的 F1 分数,超越了同类所有模型;在需要对 10 万 token 上下文进行问答的 FRAMES 基准上,DeepSeek-V3 紧随 GPT-4o 之后,并显著优于其他模型,充分展示了其处理极长上下文任务的强大能力。DeepSeek-V3 的长上下文能力还通过其在 LongBench v2 上的最佳表现得到进一步验证——该数据集发布于 DeepSeek-V3 推出前几周。在事实性知识基准 SimpleQA 上,DeepSeek-V3 略逊于 GPT-4o 和 Claude-Sonnet,这主要源于其设计重点和资源分配;DeepSeek-V3 分配更多训练 token 学习中文知识,因此在 C-SimpleQA 上表现尤为出色。在指令遵循基准上,DeepSeek-V3 明显优于其前身 DeepSeek-V2 系列,凸显了其对用户定义格式约束的理解和遵循能力。
编程与数学基准。 编程任务对大语言模型既具有挑战性又具实际应用价值,涵盖了面向工程任务(如 SWE-Bench-Verified 和 Aider)以及算法任务(如 HumanEval 和 LiveCodeBench)。在工程任务中,DeepSeek-V3 略逊于 Claude-Sonnet-3.5-1022,但显著优于其他开源模型。作为开源模型,DeepSeek-V3 有望推动编程相关工程任务的进步;其强大能力为软件工程和算法开发带来创新与提升,助力开发者和研究人员突破开源模型在编程任务中的界限。在算法任务中,DeepSeek-V3 表现优异,在 HumanEval-Mul 和 LiveCodeBench 等基准上超越所有基线,这归功于其先进的知识蒸馏技术,有效提升了代码生成和问题解决能力。
在数学基准上,DeepSeek-V3 表现尤为出色,显著超越各项基线,并为非 o1 类模型树立了新的 SOTA 水平。具体而言,在 AIME、MATH-500 和 CNMO 2024 上,DeepSeek-V3 比排名第二的 Qwen2.5 72B 绝对分数高出约 10 个点,这对于如此具有挑战性的基准来说是一个可观的提升。这一卓越能力充分证明了从 DeepSeek-R1 进行蒸馏的技术效果,对于非 o1 类模型具有显著的增益作用。
5.3.3. 开放式评估
除标准基准外,我们还对模型在开放式生成任务上进行了评估,使用大语言模型作为评判者,结果见表 7。具体而言,我们遵循 AlpacaEval 2.0(Dubois et al., 2024)和 Arena-Hard(Li et al., 2024a)的原始配置,均采用 GPT-4-Turbo-1106 作为两两比较的评判者。在 Arena-Hard 上,DeepSeek-V3 相对于基线 GPT-4-0314 获得了超过 86% 的胜率,其表现与 Claude-Sonnet-3.5-1022 不相上下,充分彰显了其应对复杂提示(包括编程与调试任务)的强大能力。此外,DeepSeek-V3 成为首个在 Arena-Hard 基准上超过 85% 胜率的开源模型,此成就显著缩小了开源与闭源模型之间的性能差距,为开源模型在复杂领域树立了新的标杆。
同样,DeepSeek-V3 在 AlpacaEval 2.0 上也展示了卓越表现,超越了闭源与开源模型。这表明其在写作任务及简单问答场景中具有出色的能力,且其表现比 DeepSeek-V2.5-0905 提升了 20%,充分显示出其在解决简单任务方面的显著进步及技术改进的有效性。
5.3.4. DeepSeek-V3 作为生成奖励模型
我们将 DeepSeek-V3 的判断能力与最先进的模型(如 GPT-4o 和 Claude-3.5)进行了比较。表 8 展示了这些模型在 RewardBench(Lambert et al., 2024)上的表现。DeepSeek-V3 的表现与 GPT-4o-0806 和 Claude-3.5-Sonnet-1022 的最佳版本相当,同时优于其他版本。此外,通过投票技术,DeepSeek-V3 的判断能力还可以进一步提升。因此,我们结合投票机制,利用 DeepSeek-V3 为开放式问题提供自反馈,从而提升对齐过程的有效性与鲁棒性。
5.4. 讨论
5.4.1. 从 DeepSeek-R1 的蒸馏
我们基于 DeepSeek-V2.5 对来自 DeepSeek-R1 的蒸馏贡献进行了消融实验。基线模型在短链式思考(CoT)数据上训练,而竞争模型则使用上述专家检查点生成的数据。
表 9 展示了蒸馏数据的有效性,在 LiveCodeBench 和 MATH-500 基准上均有显著提升。实验揭示了一个有趣的权衡:蒸馏虽然提升了性能,但也显著增加了平均响应长度。为在模型准确性与计算效率之间保持平衡,我们为 DeepSeek-V3 精心选择了蒸馏的最优设置。
我们的研究表明,从推理模型中进行知识蒸馏为后训练优化提供了一个有前景的方向。虽然当前工作主要聚焦于从数学和编程领域进行数据蒸馏,但这一方法在其他任务领域中也显示出广泛应用潜力。针对这些特定领域的有效性表明,长链式思考(long-CoT)蒸馏可能对提升需要复杂推理的认知任务模型性能具有重要价值。未来在不同领域上进一步探索这一方法仍是一个重要的研究方向。
5.4.2. 自我奖励
奖励在强化学习中起着至关重要的作用,指导优化过程。在某些通过外部工具易于验证的领域(例如部分编程或数学场景)中,RL 显示出卓越的效果;然而在更一般的场景下,通过硬编码构建反馈机制是不切实际的。在 DeepSeek-V3 的开发过程中,对于这些更广泛的情境,我们采用了宪法式 AI 方法(Bai et al., 2022),利用 DeepSeek-V3 自身的投票评估结果作为反馈来源。此方法显著增强了 DeepSeek-V3 在主观评估中的对齐效果。通过整合额外的宪法式输入,DeepSeek-V3 能够朝着宪法方向进行优化。我们认为,这种结合补充信息与大语言模型作为反馈来源的范式至关重要,大语言模型作为一种多功能处理器,能够将来自不同场景的非结构化信息转化为奖励,最终促进 LLMs 的自我提升。除自我奖励外,我们还致力于发掘其他通用且可扩展的奖励方法,以不断推进模型在通用场景下的能力。
5.4.3. 多 Token 预测评估
DeepSeek-V3 不仅仅预测下一个单一 Token,而是通过 MTP 技术预测接下来的两个 Token。结合 speculative decoding 框架(Leviathan et al., 2023; Xia et al., 2023),这一方法可显著加速模型的解码速度。一个自然的问题是:额外预测的第二个 Token 的接受率如何?根据我们的评估,第二个 Token 的接受率在不同生成主题中均在 85% 到 90% 之间,表现出稳定的可靠性。这一高接受率使 DeepSeek-V3 在解码速度上有了显著提升,达到了 1.8 倍的 TPS(Tokens Per Second)。
6. 结论、局限性与未来方向
在本文中,我们提出了 DeepSeek-V3——一个大型 MoE 语言模型,总参数量达到 6710 亿,其中每个 token 激活 370 亿参数,且在 14.8 万亿 token 上完成训练。除了采用 MLA 和 DeepSeekMoE 架构外,DeepSeek-V3 还首创了一种无辅助损失的负载均衡策略,并设定了多 token 预测训练目标以获得更强的性能。由于支持 FP8 训练和精心设计的工程优化,DeepSeek-V3 的训练成本十分经济。此外,在后训练阶段,我们成功地从 DeepSeek-R1 系列模型中蒸馏出了推理能力。全面的评估结果表明,DeepSeek-V3 已成为目前最强的开源模型,并且其性能可与领先的闭源模型(如 GPT-4o 和 Claude-3.5-Sonnet)相媲美。尽管性能卓越,DeepSeek-V3 仍保持着经济的训练成本,其全流程训练(包括预训练、上下文长度扩展和后训练)仅需 2.788M H800 GPU 小时。
在肯定其卓越性能与成本效益的同时,我们也认识到 DeepSeek-V3 在部署方面存在一些局限性。首先,为了确保高效推理,DeepSeek-V3 推荐的部署单元相对较大,这可能对小型团队构成一定负担。其次,尽管我们的部署策略使 DeepSeek-V3 的端到端生成速度达到 DeepSeek-V2 的两倍以上,但仍存在进一步提升的潜力。幸运的是,随着更先进硬件的发展,这些局限性有望自然得到解决。
DeepSeek 始终秉持开源模型的长期主义路线,目标是稳步接近 AGI(通用人工智能)的终极目标。未来,我们计划在以下几个方向上进行战略性研究投入:
• 我们将持续研究和优化模型架构,进一步提升训练和推理效率,努力实现对无限上下文长度的高效支持;同时,我们将尝试突破 Transformer 的架构局限,从而推动其建模能力的边界。
• 我们将不断迭代训练数据的数量与质量,探索引入更多训练信号来源,力图在更广泛的维度上推动数据规模的扩展。
• 我们将持续探索和优化模型的深度思考能力,旨在通过延展模型的推理长度和深度来增强其智能和问题解决能力。
• 我们将探索更全面、多维度的模型评估方法,以防止研究过程中仅针对固定一组基准进行优化,这种情况可能导致对模型能力产生误导性印象,并影响我们对模型的基础性评估。
同系列