-
日期: 2025-03-01 | 来源: 极客公园 | 有0人参与评论 | 字体: 小 中 大
然而,EP在两个方面增加了系统复杂性:EP引入跨节点的传输,为了优化吞吐,需要设计合适的计算流程使得传输和计算可以同步进行;EP涉及多个节点,因此天然需要Data Parallelism(DP),不同的DP之间需要进行负载均衡。
DeepSeek通过三种方式应对了这些挑战:
利用EP增大batch size、将通信延迟隐藏在计算之后、执行负载均衡。
1、大规模跨节点专家并行(EP)
由于DeepSeek-V3/R1的专家数量众多,并且每层256个专家中仅激活其中8个。模型的高度稀疏性决定了其必须采用很大的overall batch size,才能给每个专家提供足够的expert batch size,从而实现更大的吞吐、更低的延时。需要大规模跨节点专家并行(Expert Parallelism/EP)。
DeepSeek采用多机多卡间的专家并行策略来达到以下目的:
Prefill:路由专家EP32、MLA和共享专家DP32,一个部署单元是4节点,32个冗余路由专家,每张卡9个路由专家和1个共享专家
Decode:路由专家EP144、MLA和共享专家DP144,一个部署单元是18节点,32个冗余路由专家,每张卡2个路由专家和1个共享专家
2、计算-通信重叠
多机多卡的专家并行会引入比较大的通信开销,所以使用了双batch重叠来掩盖通信开销,提高整体吞吐。
对于prefill阶段,两个batch的计算和通信交错进行,一个batch在进行计算的时候可以去掩盖另一个batch的通信开销。
▲预充阶段的通信-计算重叠
对于decode阶段,不同阶段的执行时间有所差别,所以DeepSeek把attention部分拆成了两个stage,共计5个stage的流水线来实现计算和通信的重叠。
▲解码阶段的通信-计算重叠
3、实现最佳负载均衡
由于采用了很大规模的并行(包括数据并行和专家并行),如果某个GPU的计算或通信负载过重,将成为性能瓶颈,拖慢整个系统;同时其他GPU因为等待而空转,造成整体利用率下降。因此我们需要尽可能地为每个 GPU 分配均衡的计算负载、通信负载。
Prefill Load Balancer的核心问题:不同数据并行(DP)实例上的请求个数、长度不同,导致core-attention计算量、dispatch发送量也不同。
其优化目标是,各GPU的计算量尽量相同(core-attention计算负载均衡)、输入的token数量也尽量相同(dispatch发送量负载均衡),避免部分GPU处理时间过长。- 新闻来源于其它媒体,内容不代表本站立场!
-
原文链接
原文链接:
目前还没有人发表评论, 大家都在期待您的高见