4×5A4×2B2×5CAA
这里的表示第t个Token的输入,表示KV的向下投影矩阵,将做降维压缩表示,实际得到就是要缓存的KV压缩隐向量;和是向上做升维的投影矩阵,将Token的压缩隐向量复原为原始KV矩阵;


MLA 模块架构图

具体的Attention计算推导过程可以参考:MLA的推导细节


2.2 训练推理核心技术   



2.2.1 训练框架HAI-LLM

DeepSeek-V3在一个配备了2048个NVIDIA H800 GPU的集群上进行训练,使用的是自研的HAI-LLM框架,框架实现了四种并行训练方式:ZeRO 支持的数据并行、流水线并行、张量切片模型并行和序列并行。  

这种并行能力支持不同工作负载的需求,可以支持数万亿规模的超大模型并扩展到数千个 GPU,同时还自研了一些配套的高性能算子haiscale,可以帮助 HAI-LLM 极大优化大模型训练的显存效率和计算效率。


2.2.2 核心算法DualPipe-创新流水线并行算法

i.通信计算重叠优化

DeepSeek-V3应用了16路流水线并行(PP),跨越8个节点的64路专家并行(EP),以及ZeRO-1数据并行(DP)。

与现有的流水线并行方法相比,DualPipe的流水线气泡更少。同时重叠了前向和后向过程中的计算和通信阶段,解决了跨节点专家并行引入的沉重通信开销的挑战。

DualPipe的关键思想是重叠一对单独的前向和后向块中的计算和通信:将每个块划分为四个组件:注意力、all-all调度、MLP和all-all组合

例如,假设我们有两个计算块,A和B:

1.在块A进行前向传播计算时,可以同时进行块B的后向传播通信过程。

2.当块A完成前向传播计算后,开始它的通信过程;而块B则开始它的前向传播计算。






通过优化排列这些功能模块,并精确调控用于通信和计算的 GPU SM资源分配比例,系统能够在运行过程中有效隐藏全节点通信和 PP 通信开销。
可以看出DeepSeek在PP这块,做了大量的通信计算重叠优化,从技术报告中看出,即使是细粒度的all-all专家通信,all-all的通信开销几乎为0。




●计算通信重叠
在深度学习大规模分布式训练过程中,通信的速度往往落后于计算的速度,如何在通信的gap期间内并行做一些计算就是高性能计算和通信重叠,是实现高效训练的关键因素。
●流水线并行气泡问题
一些大的模型会采用流水线并行策略,将模型的不同层放在不同的GPU上,但是不同层之间有依赖关系,后面层需要等前面的计算完才能开始计算,会导致GPU在一段时间是闲置的,如下图所示:

ii.跨节点全对全通信
DeepSeek还专门定制了高效的跨节点all-all通信内核(包括调度和组合)。
具体来说:跨节点 GPU 通过 IB 完全互连,节点内通信通过 NVLink 处理,每个Token最多调度到 4个节点,从而减少 IB 通信量。同时使用warp专业化技术做调度和组合的优化。



在调度过程中,(1) IB 发送,(2) IB 到 NVLink 转发,以及 (3) NVLink 接收分别由各自的 warp 处理。分配给每个通信任务的 warp 数会根据所有 SM 上的实际工作负载动态调整。

在合并过程中,(1) NVLink 发送,(2) NVLink 到 IB 的转发和累积,以及 (3) IB 接收和累积也由动态调整的 warp 处理。




通过这种方式,IB 和 NVLink 的通信实现完全重叠,每个 token 能够在不产生 NVLink 额外开销的情况下,在每个节点上平均高效选择 3.2 个专家。这意味着,虽然 DeepSeek-V3 实际只选择 8 个路由专家,但它可以将这个数字扩展到最多 13 个专家(4 个节点 × 3.2 个专家/节点),同时保持相同的通信成本。



DSV3采用了1个共享专家和256个路由专家的MoE架构,每个token会激活8个路由专家。



2.2.3 用于FP8训练的混合精度框架

这里并没有将全量参数FP8量化训练,大多数计算密集型操作都在FP8中进行,而一些关键操作则战略性地保留其原始数据格式,以平衡训练效率和数值稳定性。

哪些算子启用FP8量化去计算?取舍逻辑是什么?
■大多数核心计算过程,即 GEMM 运算,都以 FP8 精度实现
■涉及对低精度计算的敏感性的算子,仍然需要更高的精度
■一些低成本算子也可以使用更高的精度
以下组件保留了原始精度(例如,BF16 或 FP32):Embedding模块、输出头、MoE 门控模块、Normalization算子以及Attention算子。

如何提高低精度训练精度?
■细粒度量化

对激活,在token维度采用group-wise的量化(1*128);对权重,采用128* 128的block-wise量化



■提高累加精度

在 TensorCore 上执行矩阵 MMA(矩阵乘法累加)操作时,每当累加达到一个间隔时,这些部分结果会被传输到 CUDA Cores 上的 FP32 寄存器中,并在那里进行FP32 精度的累加计算。




2.2.4 MTP的训练目标

DeepSeekV3训练过程设置了多Token预测的目标,从技术报告的消融实验看出,确实提高了模型在大多数评估基准上的性能,而且MTP模块还可以用于推理加速。



2.2.5 推理部署方案

DeepSeek-V3 整体参数量达到了671B,如此多的参数量,我们看下他的一个部署方案:

推理部署采用了预填充(Prefilling)和解码(Decoding)分离的策略,确保了在线服务的高吞吐量和低延迟。通过冗余专家部署和动态路由策略,模型在推理时保持了高效的负载均衡。

整套部署方案下来基本是跨机分布式推理。

2.2.5.1 Prefill 阶段

这个阶段简单说就是并行处理用户的Prompt,将其转为KV Cache。

预填充阶段的最小部署单元由4个节点组成,每个节点配备32个GPU。注意力部分采用4路张量并行(TP4)和序列并行(SP),并结合8路数据并行(DP8)。其较小的TP规模(4路)限制了TP通信的开销。对于MoE部分,我们使用32路专家并行(EP32)


2.2.5.2 Decoder 阶段

这个阶段就是做自回归的每个Token的输出。

解码阶段的最小部署单元由40个节点和320个GPU组成。注意力部分采用TP4和SP,结合DP80,而MoE部分使用EP320。对于MoE部分,每个GPU只承载一个专家,64个GPU负责承载冗余专家和共享专家



总结:为什么DeepSeekV3训练成本这么低?

训练成本主要由模型架构以及训练架构所决定,而且两者一定是相辅相成。从报告中可以看出以下几个原因:
I.MLA 机制:通过对KV做联合低秩压缩大幅减少KV Cache,相比业界从KV数量角度做KV Cache的减少,MLA 的压缩实现很考验研究团队的基本功。
II.FP8 训练:通过低精度计算减少了 GPU 内存使用和计算开销,技术报告中也提到FP8混合精度训练框架是首次在一个极大规模的模型上验证了其有效性,这一点也看出DeepSeek的Infra工程团队的底蕴。
III.MoE 架构:通过MoE稀疏激活机制大幅减少了计算量,相比Qwen和Llama的Dense架构有很大的训推先天优势,不过难题(专家的负载、通信、路由)也给到了Infra工程团队。

三、为什么是DeepSeek?

在硅谷,类似DeepSeek这样的AI创新并不少有,只是这次是一家中国公司做出了这个动作,相比传统的‘美国创新、中国应用’的模式显得格外的让人兴奋。


从最近的一些访谈以及DeepSeek的技术报告中也能看出以下几点:

1、大模型是一个知识密集型产业,如何组织高密度人才?显然DeepSeek做到了

2、大模型技术没有魔法,更多时候就是考验基本功和驱动力

3、不以商业化为第一要义,很多时候能轻装上阵

四、一些个人思考

1、长远来看,后续可能会有专门的适配Transformer架构的芯片,就像为卷积设计了ASIC芯片

2、多Token预测、MoE架构可能很长一段时间都是大模型训推架构热门研究方向

3、在国内做AI,应用始终会比基础研究有市场,更有话语权,但是基础创新和海外的代际差距会越来越小

4、大模型训练和推理,软硬件是一个协同的生态,DeepSeek的出现将会促进AI全行业的更加快速且低成本的迭代

5、时间比较仓促,很多技术细节问题值得学习深究,有错误的地方勿喷~


参考资料
1、Better & Faster Large Language Models via Multi-token Prediction
2、https://kexue.fm/archives/10091
3、https://arxiv.org/pdf/2404.19737v1
4、https://arxiv.org/pdf/2412.19437
5、https://arxiv.org/pdf/2405.04434
6、https://www.zhihu.com/question/8423473404
7、https://arxiv.org/pdf/1811.06965