Zhangzhe's Blog

The projection of my life.

0%

2025.02 DeepSeek 开源周第二弹 —— DeepEP

URL

TL;DR

  • 目前大模型常用的三种并行:
    • DP: Data Parallelism,数据并行,将数据分成多份,每个 GPU 处理一份数据
    • PP: Pipeline Parallelism,管道并行,将模型分成多个阶段(连续一层或多层为一个阶段),每个 GPU 处理一个阶段
    • TP: Tensor Parallelism,张量并行,将模型分成多份(通常是一层/一个算子/一个张量分成多份,主要解决超长序列引起的超大张量问题),每个 GPU 处理一部分张量
  • 对于 MoE 结构,EP (Expert Parallelism) 是一种新的并行策略,将 MoE 中的 Expert 分配到不同的 GPU
  • DeepEP 是一个 用 cuda 实现的 MoE 模型的并行库,重点在于对 All-to-All 通信的优化

背景知识

节点内通信

  • 通俗讲:一台服务器被称为一个节点,一个节点上的多个 GPU 之间的通信被称为节点内通信
  • 通信协议:
    • PCIe:比较通用的通信协议,目前最新的 PCIe 6.0 的带宽为 32GB/s 的双向带宽
    • NVLinkNVIDIA 自家的通信协议,目前最新的 NVLink 5.0 的带宽约为 800GB/s 的双向带宽

节点间通信

  • 多台服务器组成一个集群,集群中的服务器之间的通信被称为节点间通信
  • 通信协议:
    • InfiniBandHPC 领域常用的通信协议,目前最新的 InfiniBand NDR 可达 400Gbps 的双向带宽
    • Ethernet:通用的通信协议,速度低于 InfiniBand
  • 通信技术:
    • RDMARemote Direct Memory Access,远程直接内存访问,RDMA 通过 DMA 直接访问远程内存,减少了 CPU 的参与,提高了通信效率

通信视角下 MoE 结构的特殊性

  • MoE 结构的本质是超大规模参数量 + 小规模激活参数量(实际计算量)来让模型更强大同时推理效率高
  • 由于 MoE 结构在实际推理过程中,每个 token 激活的专家 id 是无法提前预测的,而是一个纯 runtime 的行为
  • 对此,为了降低 EP 通信压力,MoE 结构通常会限制每个 token 实际激活的节点数量。例如,DeepSeek V31 个共享专家和 256 个路由专家,每个 token 会激活 1 个共享专家和 8 个路由专家,但同时限制最多只能激活 4 个节点,假如得分最高的 8 个路由专家来自超过 4 个节点,那么会牺牲部分高分专家,在节点数不超过 4 的情况下,用贪心算法选择得分最高的 4 个专家
  • 虽然 DP / TP / PP 都存在通信问题,但都是可提前规划好的通信数据量和通信模式,只要调度得当,即可重叠计算和通信耗时,而 MoE 结构的通信是无法提前规划的,因此 MoE 结构的通信是最难优化的

关键特性和能力

DeepEP 的关键特性和能力包括:

  • 高吞吐量节点内通信:使用 NVLink 优化节点内所有到所有通信的内核,实现高达 155 GB/s 的带宽。
  • 高吞吐量节点间通信:使用 RDMA 实现高效的跨节点所有到所有通信,在不同的 EP 配置中保持大约 45 GB/s 的带宽。
  • 低延迟内核:专用推理解码内核,分发操作延迟低至 163 微秒,组合操作延迟低至 318 微秒。
  • FP8 支持:原生支持低精度操作,包括 FP8 分发,与大型模型中量化趋势一致。
  • 灵活的 GPU 资源控制:可配置的 SM 使用,用于计算 - 通信重叠,允许精细调整性能优化。
  • 自适应路由支持:在低延迟内核中支持自适应路由,使复杂拓扑中的网络利用更高效。

技术实现

DeepEP 是用 C++CUDA 组件实现的,并带有 Python 接口。实现包括几个关键组件:

  • 缓冲管理:核心 Buffer 类管理 NVLinkRDMA 的通信缓冲区,处理内存分配和同步。
  • 通信内核
    • 训练和推理预填充的高吞吐量内核
    • 推理解码的低延迟内核
    • 支持节点内(NVLink)和节点间(RDMA)通信
  • 事件管理EventOverlap 类提供 CUDA 事件处理和计算 - 通信重叠的工具。
  • 分发和组合操作
    • dispatch:将令牌特征发送到跨 GPU 的对应专家
    • combine:从专家收集处理后的特征并返回到原始位置

Thoughts

  • 大模型,尤其是基座大模型,拼的是基建
  • 大模型时代不会再出现小模型时代经常出现的 理论计算量低但实际很慢的算法 了,GPU 上快才是真的快,不光要考虑计算,存储 / 通信也同时需要认真考虑
  • 软硬件 co-design 是未来趋势,People who're serious about software should make their own hardware. 这句名言的含金量还在上升