DeepSeek 本周正在连续 5 天发布开源项目,今天是第 2 天,带来了 专为混合专家模型(MoE)和专家并行(EP)打造的高效通信库 — DeepEP。
就在半小时前,官方对此进行了发布,以下是由赛博禅心带来的详解。
首先,我得说明: 本次发布较为硬核,我尽量写得清晰,但最好配合 AI 进行阅读
话题回来, DeepEP 这东西专门用于 MoE 的分发与合并操作,同时支持包括 FP8 在内的低精度运算 。
同时的, DeepEP 针对 DeepSeek-V3 论文中提出的组限制门控算法进行了特别优化 ,为非对称域带宽转发(如从 NVLink 域到 RDMA 域)提供了一系列高性能核心。这些核心不仅具有高吞吐量,适合训练和推理预填充任务,还支持流多处理器(SM)数量控制。
对于延迟敏感的推理解码场景,DeepEP 包含一组纯 RDMA 低延迟核心,将延迟降至最低。库还引入了一种基于钩子的通信-计算重叠方法,不占用任何 SM 资源,进一步提升效率。
性能表现 DeepEP 在各种场景下展现出色的性能 。在具有 NVLink 和 RDMA 转发功能的标准核心测试中,使用 H800 GPU(NVLink 最大带宽约 160 GB/s),每个 GPU 连接到 CX7 InfiniBand 400 Gb/s RDMA 网卡(最大带宽约 50 GB/s),按 DeepSeek-V3/R1 预训练设置(每批 4096 个 token,7168 隐藏维度,top-4 组,top-8 专家,FP8 分发和 BF16 合并)进行测试。
内节点通信性能达到 153-158 GB/s 的 NVLink 带宽,而跨节点通信可达 43-47 GB/s 的 RDMA 带宽。
在低延迟核心测试中,使用纯 RDMA,按典型的 DeepSeek-V3/R1 生产设置(每批 128 个 token,7168 隐藏维度,top-8 专家,FP8 分发和 BF16 合并),分发操作延迟仅为 163-194 微秒,合并操作延迟为 318-369 微秒,同时保持 39-46 GB/s 的 RDMA 带宽。
什么是混合专家模型(MoE)? 混合专家模型是一种神经网络架构,将多个"专家"网络组合在一起,由"门控"网络决定将输入数据路由到哪些专家。 这种架构允许模型规模大幅增长,同时保持计算效率,因为每次处理只激活部分专家而非全部网络。
MoE 概念最早由 Jacobs、Jordan 和 Hinton 在 1991 年提出,但直到近年才在大型语言模型中得到广泛应用。谷歌的 Switch Transformers、微软的 Z-Code 以及 DeepSeek 的 DeepSeek-V3 都采用了 MoE 架构,通过专家稀疏激活实现了更大规模的模型训练和部署。
专家并行(EP)技术解析 专家并行是分布式训练的一种方式,将 MoE 中的不同专家分配到不同的计算设备上。 与数据并行、模型并行等其他分布式训练策略不同,专家并行利用 MoE 的稀疏激活特性,使模型规模能够随设备数量线性扩展,而不会相应地增加计算成本。
专家并行的核心挑战在于专家之间的通信效率 ,这正是 DeepEP 重点解决的问题。通过优化的通信方案,DeepEP 显著降低了专家之间数据交换的开销。
全对全 GPU 核心与 MoE 操作 在 MoE 架构中,两个关键操作是分发(dispatch)和合并(combine):
• 分发:根据门控网络的决策,将输入 token 路由到相应的专家 • 合并:收集各专家处理后的结果,并根据权重进行合并 这两个操作需要设备间的全对全(all-to-all)通信模式,即每个设备需要向其他所有设备发送和接收数据。DeepEP 提供的高效核心大幅优化了这一过程,减少了通信瓶颈。
NVLink 与 RDMA:两种通信域 DeepEP 优化了两种不同通信域之间的数据传输:
• NVLink 域:NVIDIA GPU 之间的高速直连通道,带宽可达约 160 GB/s,适合服务器内部 GPU 间通信 • RDMA 域:远程直接内存访问技术,允许计算机不经过操作系统直接访问远程内存,带宽约 50 GB/s,适合服务器间通信 理解并优化这两种域之间的数据传输对于大规模分布式 MoE 模型至关重要。DeepEP 专门为非对称域带宽转发场景提供了优化核心。
低精度运算与 FP8 格式 为提高性能和减少内存需求,DeepEP 支持低精度数值格式,特别是 FP8(8 位浮点数)。 与传统的 FP32(32 位)或 FP16(16 位)相比,FP8 精度虽然较低,但在许多深度学习任务中表现足够好,同时能显著提高计算效率和减少内存带宽需求。
组限制门控算法 DeepSeek-V3 论文中提出的组限制门控算法是一种改进的 MoE 路由策略。传统 MoE 可能导致负载不均衡,某些专家过度使用而其他闲置。
组限制门控通过将专家分组并限制每组内可选择的专家数量,更好地平衡了计算负载,提高了硬件利用率和训练效率。
Hopper GPU 架构 NVIDIA 的 Hopper GPU 架构(如 H100、H800)是专为 AI 和高性能计算设计的计算平台。
Hopper 引入了多项创新,包括 Transformer 引擎、更高的计算密度和增强的多 GPU 互连能力。DeepEP 专门针对 Hopper 架构进行了优化,以发挥其全部潜力。
流多处理器(SM)控制 流多处理器是 GPU 的基本计算单元。DeepEP 提供 SM 数量控制功能,允许开发者精确控制核心使用的计算资源,为不同工作负载找到最佳平衡点。
值得注意的是,DeepEP 的基于钩子的通信-计算重叠方法不占用任何 SM 资源,实现了通信和计算的真正并行。
快速上手 DeepEP 使用 DeepEP 需要 Hopper GPU、Python 3.8 以上、CUDA 12.3 以上、PyTorch 2.1 以上,以及用于内节点通信的 NVLink 和跨节点通信的 RDMA 网络。库依赖于一个修改版的 NVSHMEM,安装前需先配置此依赖。
DeepEP 提供了清晰的 Python API,使开发者能轻松地将其集成到现有 MoE 模型中。对于推理场景,DeepEP 的低延迟模式特别有价值,提供不占用 SM 资源的通信-计算重叠功能。
Development # Build and make symbolic links for SO files NVSHMEM_DIR=/path/to/installed/nvshmem python setup.py build # You may modify the specific SO names according to your own platform ln -s build/lib.linux-x86_64-cpython-38/deep_ep_cpp.cpython-38-x86_64-linux-gnu.so # Run test cases # NOTES: you may modify the `init_dist` function in `tests/utils.py` # according to your own cluster settings, and launch into multiple nodes python tests/test_intranode.py python tests/test_internode.py python tests/test_low_latency.py
Installation NVSHMEM_DIR=/path/to/installed/nvshmem python setup.py install
[图片:低延迟模式架构图]
网络配置 对于生产环境,DeepEP 提供了详细的网络配置建议:
• 通过 InfiniBand 虚拟通道(VL)实现流量隔离,将不同类型的工作负载分配到不同虚拟通道 • 自适应路由配置(低延迟核心支持,标准核心暂不支持) 这些配置建议对于在大规模集群中发挥 DeepEP 的最佳性能至关重要。
回顾 DeepEP 作为 DeepSeek 开源周的第二日发布,为混合专家模型提供了高效的通信解决方案。通过优化的全对全 GPU 核心、低延迟 RDMA 操作和创新的不占用计算资源的通信-计算重叠方法,DeepEP 大幅提升了 MoE 模型在训练和推理阶段的性能。
DeepEP 当前完全支持 Hopper GPU 架构,主要在 InfiniBand 网络环境中测试,但理论上也兼容 RoCE(RDMA over Converged Ethernet)。
随着社区的参与和贡献,我们可以期待 DeepEP 在更多硬件平台上的扩展支持。
最后 DeepSeek,源神,启动!