当前位置: 首页 > news >正文

DeepSeek-专家并行(二)

大规模跨节点专家并行:Expert Parallelism / EP
EP 使得 batch size 大大增加,从而提高 GPU 矩阵乘法的效率,提高吞吐。其次 EP 使得专家分散在不同的 GPU 上,每个 GPU 只需要计算很少的专家(因此更少的访存需求),从而降低延迟。

DeepSeek-V3使用64路的专家并行,16路的流水线并行,以及数据并行(ZeRO1)。

1. DualPipe优化,解决通信开销导致计算与通信比没有隐藏的问题

跨节点专家并行引入的通信开销导致计算与通信比率约为 1:1,效率低下。为了应对这一挑战,我们设计了一种创新的流水线并行算法 DualPipe,它不仅通过有效重叠前向和后向计算通信阶段来加速模型训练,而且还减少了流水线气泡。

专家并行会引入all2all通信,由于每个token会激活8个专家,这导致跨节点的all2all通信开销成为主要的系统瓶颈。

在算法层面,DeepSeek-V3使用分组路由的方式,限制每个token只会激活4个节点上的专家,从而减半跨节点的通信流量。在系统层面,将节点间通信和节点内通信进行流水,最大化使用网络带宽和NVLink带宽。

多机多卡的专家并行,会带来通信开销,所以采取双batch隐藏通信开销。
在这里插入图片描述
黄色的前向计算,绿色的后向计算。

ATTN 和MLP是主要的计算过程。
前向过程:
ATTN-> Combine(经过MOE专家计算,通信过程)-> Dispatch(分发到不同的GPU,通信过程) -> MLP

前向分为4个部分:
ATTN、Conbine、Dispatch、MLP
对于后向:
ATTN和MLP进一步分为两个部分:后向用于输入、后向用于权重

完整的 DualPipe 调度如图 5 所示。它采用双向流水线调度,可同时从流水线的两端提供微批次,并且很大一部分通信可以完全重叠:
在这里插入图片描述
DualPipe 显著减少了流水线气泡,同时仅将峰值激活内存增加了 1 倍。虽然 DualPipe 需要保留两份模型参数,但由于我们在训练期间使用了较大的 EP 大小,因此这不会显著增加内存消耗。

2. 高效实现跨节点全连接通信

定制了高效的跨节点全对全通信内核(包括调度和组合),以节省专用于通信的 SM 数量。

集群中,跨节点 GPU 与 IB 完全互连,节点内通信通过 NVLink 处理。NVLink 提供的带宽为 160 GB/s,大约是 IB(50 GB/s)的 3.2 倍。为了有效利用 IB 和 NVLink 的不同带宽,我们将每个token限制为最多 4 个节点专家,从而减少 IB 流量

在做出路由决策时,它将首先通过 IB 传输到其目标节点上具有相同节点内索引的 GPU。一旦到达目标节点,努力确保它通过 NVLink 立即转发到承载目标专家的特定 GPU,而不会被随后到达的令牌阻塞。这样,通过 IB 和 NVLink 的通信完全重叠,每个令牌可以有效地为每个节点平均选择 3.2 位专家,而不会产生 NVLink 的额外开销。

尽管 DeepSeek-V3 13 在实践中只选择了 8 位路由专家,但它可以将这个数字扩展到最多 13 位专家(4 个节点 × 3.2 位专家/节点),同时保持相同的通信成本。总的来说,在这样的通信策略下,只有 20 个 SM 足以充分利用 IB 和 NVLink 的带宽。

采用了 warp 专门化技术 ,将 20 个 SM 划分为 10 个通信通道。在调度过程中,(1) IB 发送、(2) IB 到 NVLink 的转发和 (3) NVLink 接收由各自的 warp 处理。分配给每个通信任务的 warp 数量根据所有 SM 的实际工作量动态调整。同样,在组合过程中,(1) NVLink 发送、(2) NVLink 到 IB 的转发和累积和 (3) IB 接收和累积也由动态调整的 warp 处理。此外,调度和组合内核都与计算流重叠,因此我们还考虑它们对其他 SM 计算内核的影响。具体而言,我们采用了定制的 PTX (并行线程执行) 指令并自动调整通信块大小,这显著减少了 L2 缓存的使用和对其他 SM 的干扰。

3. 以最小的开销节省大量内存

重新计算 RMSNorm 和 MLA 上投影:我们在反向传播期间重新计算所有 RMSNorm 操作和 MLA 上投影,从而无需持久存储它们的输出激活。此策略的开销很小,但可显著降低存储激活的内存要求。

相关文章:

  • Spring Boot+RabbitMQ+Canal 解决数据一致性
  • 【算法学习计划】动态规划 -- 路径问题
  • 1433抓鸡工具_1433抓鸡工具在软件安全测试中的重要性及应用
  • Mysql主从复制和Mysql高可用以及负载均衡配置
  • 项目管理起源是什么
  • EDIFACT端口配置指南:交换头、测试标识符与ACK
  • 如何去除文章的 AI 痕迹
  • 设计模式文章汇总-Golang语言实现
  • 第六次CCF-CSP认证(含C++源码)
  • 2025人工智能AI新突破:PINN内嵌物理神经网络火了
  • Linux第六讲:进程控制
  • 晋升系列4:学习方法
  • [内网渗透] 红日靶场1
  • DMA直接存储器存取
  • 初次体验Tauri和Sycamore(3)通道实现
  • STM32F103C8T6低功耗模式详解:如何选择和应用Sleep、Stop、Standby模式?
  • 装饰器模式的C++实现示例
  • 【MySQL_06】表的相关操作
  • 使用PySpark进行大数据处理与机器学习实战指南
  • KUKA机器人:智能制造的先锋力量
  • 贵州召开全省安全生产电视电话会议:以最严要求最实举措守牢安全底线
  • 言短意长|如何看待“订不到酒店的游客住进局长家”这件事
  • 巴菲特股东大会精华版:批评拿贸易当武器,宣布年底交班
  • 国内多景区实行一票游多日:从门票经济向多元化“链式经济”转型
  • 熬夜又不想伤肝?方法只有一个
  • 习近平给谢依特小学戍边支教西部计划志愿者服务队队员的回信