DeepSeek-V3 技术报告
1.摘要
为了减少开源模型与闭源模型的能力差距,我们提出了DeepSeek-V3,一个大的混合专家模型(Mixture-of-Experts (MoE) ),有6710亿参数,每个token会激活370亿参数。
DeepSeek-V3采用多头隐注意力(Multi-head Latent Attention (MLA))提升预测效率,和DeepSeekMoE节省训练成本。此外还采用了两个策略,1)auxiliary-loss-free策略进行负载平衡;2)采用了multi-token prediction(MTP)训练目标,增强整体表现。
为了进行高效的训练,我们采用了FP8混合精度训练;同时设计了DualPipe 算法进行并行;也开发了高效的跨节点多对多通信,充分利用InfiniBand和NVLink带宽;也优化了内存脚本。
1)在预训练,我们使用了14.8T的高质量多样token。2)接着,我们对DeepSeek-V3进行了两阶段的上下文长度扩展,第1阶段,最大上下文长度扩展到32K,第2阶段,进一步扩展到128K。3)最后进行后训练,包括监督微调(Supervised Fine-Tuning (SFT))和强化学习(RL)。
上面三阶段训练时间和成本如下,采用了2048块H800 GPU。预训练2664K GPU小时,花了不到两个月时间(2664K/2048/24=54.19天)。DeepSeek-V3训练总共5百万多美元,而openai需要上亿美元。
2.模型结构
2.1Multi-Head Latent Attention
2.2DeepSeekMoE
主要讲FFN层(Feed-Forward Networks)。如最开始的架构图,FFN分为共享专家(shared experts)和路由专家(routed experts)。
2.3Auxiliary-Loss-Free Load Balancing
对于一般混合专家模型(MoE),为了减少不平衡的专家使用,采用辅助损失函数(Auxiliary-Loss),而DeepSeek没有使用,故Auxiliary-Loss-free。其将FFN中的g改成如下,对每个专家引入偏置项b,来觉得top k个路由专家。公式如下:
2.4Complementary Sequence-Wise Auxiliary Loss.
虽然DeepSeek-V3主要靠上面的Auxiliary-Loss-free,但为了防止任一序列的极端不均衡,还是引入了辅助损失函数,即序列级别辅助函数(Sequence-Wise Auxiliary Loss),如下:
其中α是超参数。T是一个序列的token数量。
上面损失函数鼓励在每一个序列上的专家加载是均衡的。
2.5Multi-Token Prediction
就是上图除了main model,又额外增加了D个MTP model,来额外预测D个token,引入新的损失函数来校验这些额外token,提高模型准确度。增加的MTP model的embedding层和output head和main mode参数共享。而且MTP model只用来训练,在预测 时丢弃。
MTP训练目标函数如下:
3.基础设施
采用了2048块H800 GPU。每个集群节点包括8个GPU,节点内部是通过NVLink和NVSwitch连接。节点间是通过InfiniBand (IB) 连接通信。NVLink 是一种由 NVIDIA 开发的高速互连技术,可实现 GPU 之间的直接通信。NVSwitch 是一款GPU桥接设备(芯片),可提供所需的NVLink交叉网络。
3.1双管(DualPipe)和计算-通信重叠
双管(DualPipe)主要是在一组独立的前向和后向模块中,重叠计算和通信。将每个模块分为4部分:attention、all-to-all dispatch、MLP、all-to-all combine。对于后向模块,attention和MLP又进一步分成输入和权重两部分。如下图所示:
3.2跨节点通信
充分利用NVLink带宽(160GB/s)和IB带宽(50GB/s)。NVLink和IB通信时间重叠,节省时间。
3.3节省内存使用
- RMSNorm and MLA Up-Projection在反向传播时重新计算,而不是存储上不用计算,节省内存使用。
- 在cpu中保存模型的指数移动平均(Exponential Moving Average (EMA) )
- 在Multi-token prediction中共享embedding和output head。
-
3.4混合精度框架
如下图,FP8和BF16、FP32混用,其中General Matrix Multiplication (GEMM)采用FP8,如下图的Fprop (forward pass), Dgrad (activation backward pass), and Wgrad (weight backward pass)。另外如下保持原来的精度(BF16或FP32):the embedding module, the output head, MoE gating modules, normalization operators, and attention operators。
3.5精细量化
将输入向量的最大绝对值缩放(量化)到FP8范围内。
如下图,将input在1*128元素上作为一组,量化到FP8,即Tile-wise 量化。将weight,在128*128 block上做为一组,量化到FP8,即Block-wise 量化。
-
4.预训练
4.1训练数据构造
训练数据包括14.8T 高质量多样的token。
采用Prefix-Suffix-Middle (PSM) 框架构造训练数据 ,如下格式:
DeepSeek-V3 的采用Byte-level BPE 编码token,token词库是包含128k个token的词库。
-
5 后训练
5.1监督微调
部分训练数据有使用DeepSeek-V2.5生成。
5.2强化学习
有采用基于规则(rule-based)的奖励模型和基于模型(model-based)的奖励模型。
基于模型(model-based)的奖励模型竟然使用DeepSeek-V3自身,从DeepSeek-V3中输出的几个结果投票评估。
同DeepSeek-V2,采用Group Relative Policy Optimization (GRPO)。
5.3模型效果
DeepSeek-V3相比开源和闭源模型都取得了较好的结果,尤其在数学评测方面,如下表所示。