DeepSeek 专家负载均衡器(Expert Parallelism Load Balancer (EPLB)
当使用专家并行(EP)时,不同的专家被分配到不同的GPU。由于不同专家的负载可能会因当前工作负载而异,因此保持不同GPU的负载平衡非常重要。正如DeepSeek-V3论文中所描述的,采用冗余专家策略,复制重载专家。然后,将重复的专家打包到GPU上,以确保不同GPU之间的负载平衡。此外,由于DeepSeek-V3中使用的组限制专家路由,还尝试将同一组的专家放置到同一节点,以尽可能减少节点间的数据流量。
为了方便复制和部署,在eplb.py中开源了部署的EP负载均衡算法。该算法计算一个平衡的专家复制和放置计划的基础上估计的专家负载。请注意,预测专家负载的确切方法不在此存储库的范围内。常用的方法是使用历史统计数据的移动平均值。
负载平衡算法
负载平衡算法有两种策略,用于不同的情况。
分层负载平衡
当服务器节点数除以专家组数时, 使用分层负载均衡策略来利用组限制专家路由。 首先将专家组均匀地打包到节点上,确保不同节点的负载均衡。然后, 在每个节点内复制专家。 将复制的专家打包到各个GPU,以确保不同的GPU负载平衡。分层负载均衡策略可以在预填充阶段使用,专家并行规模较小。