DeepEP 的特点

1

专业分布式通信框架

DeepEP 是下一代分布式通信框架,专门针对专家混合(MoE)和专家并行(EP)场景进行了优化。我们的框架为 GPU 提供高吞吐量、低延迟的全对全通信内核,完美支持 MoE 调度和可组合操作。

2

高性能架构

DeepEP 基于纯 RDMA 技术,提供一套专门针对推理解码性能进行优化的低延迟内核,采用独特的基于钩子的通信计算重叠方法,在不占用 SM 资源的情况下实现出色的并行效率。

3

创新技术

DeepEP 支持包括 FP8 在内的低精度操作,并对 DeepSeek-V3 中提出的组约束门控算法进行了优化。我们的框架尤其支持跨异构域(如从 NVLink 到 RDMA)的高效数据传输,确保了训练和推理预取任务的出色性能。

什么是 DeepEP?

DeepEP 专用于 MoE 分配和合并操作,支持包括 FP8 在内的低精度操作。同时,DeepEP 专门针对 DeepSeek-V3 论文中提出的组限制门控算法进行了优化,并提供了一系列高性能内核,用于非对称域带宽转发(例如从 NVLink 域到 RDMA 域)。这些内核不仅对训练和推理预填充任务具有高吞吐量,而且还支持流多处理器(SM)计数控制。对于延迟敏感的推理解码场景,DeepEP 包含一组纯 RDMA 低延迟内核,以最大限度地减少延迟。该库还引入了基于钩子的通信-计算重叠方法,不消耗任何 SM 资源,进一步提高了效率。

什么是混合专业知识模型(MoE)?

混合专家模型是一种结合多个 "专家 "网络的神经网络架构,由一个 "门控 "网络决定将输入数据发送给哪些专家。这种架构允许模型的规模大幅增长,同时保持计算效率,因为每次只激活部分专家,而不是所有网络。MoE 概念由 Jacobs、Jordan 和 Hinton 于 1991 年首次提出,但直到近几年才被广泛用于大规模语言建模。谷歌的 Switch Transformers、微软的 Z-Code 和 DeepSeek 的 DeepSeek-V3 都采用了 MoE 架构,通过稀疏激活专家来实现更大规模的模型训练和部署。

DeepEP 性能

带有 NVLink 和 RDMA 转发功能的普通内核

我们在 H800(约 160 GB/s NVLink 最大带宽)上测试普通内核,每个内核都连接到 CX7 InfiniBand 400 Gb/s RDMA 网卡(约 50 GB/s 最大带宽)。我们采用 DeepSeek-V3/R1 预训练设置(每批 4096 个令牌、7168 个隐藏、前 4 组、前 8 个专家、FP8 调度和 BF16 组合)。

类型 调度 #EP 瓶颈带宽 结合 #EP 瓶颈带宽
内节点 8 153 GB/秒(NVLink) 8 158 GB/秒(NVLink)
节间 16 43 GB/秒(RDMA) 16 43 GB/秒(RDMA)
节间 32 44 GB/秒(RDMA) 32 47 GB/秒(RDMA)
节间 64 46 GB/秒(RDMA) 64 45 GB/秒(RDMA)

纯 RDMA 的低延迟内核

我们在 H800 上测试低延迟内核,每个内核都连接到 CX7 InfiniBand 400 Gb/s RDMA 网卡(最大带宽约为 50 GB/s)。我们采用典型的 DeepSeek-V3/R1 生产设置(每批 128 个令牌、7168 个隐藏令牌、前 8 名专家、FP8 调度和 BF16 组合)。

调度 #EP 延迟 RDMA 带宽 结合 #EP 延迟 RDMA 带宽
8 163 我们 46 GB/s 8 318 我们 46 GB/s
16 173 我们 43 GB/s 16 329 我们 44 GB/s
32 182 我们 41 GB/s 32 350 我们 41 GB/s
64 186 我们 40 GB/s 64 353 个 41 GB/s
128 192 我们 39 GB/s 128 369 us 39 GB/s
256 194 我们 39 GB/s 256 360 我们 40 GB/s

如何使用 DeepEP?

使用 DeepEP 需要 Hopper GPU、Python 3.8+、CUDA 12.3+、PyTorch 2.1+,以及用于节点内通信的 NVLink 和用于跨节点通信的 RDMA 网络。该库依赖于修改版的 NVSHMEM,安装前需要对其进行配置。

发展

# 为 SO 文件建立和制作符号链接
NVSHMEM_DIR=/path/to/installed/nvshmem python setup.py build
# 您可以根据自己的平台修改具体的 SO 名称
ln -s build/lib.linux-x86_64-cpython-38/deep_ep_cpp.cpython-38-x86_64-linux-gnu.so

# 运行测试用例
# 注意:您可以修改 `tests/utils.py` 中的 `init_dist` 函数
根据自己的群集设置,将 # 发射到多个节点
python tests/test_intranode.py
python tests/test_internode.py
python tests/test_low_latency.py

安装

NVSHMEM_DIR=/path/to/installed/nvshmem python setup.py install

更多 DeepEP: https://github.com/deepseek-ai/Deepep