
继昨日DeepSeek开源行动开启后,今天我们迎来开源周的第二天,DeepSeek 团队再次为社区带来惊喜!
-
• DeepEP 正式开源!这是 DeepSeek 开源周的第二个重磅项目。 -
• DeepEP 是业界首个专门针对 MoE 模型训练和推理的通信库。 -
• 同时支持训练/推理,实测性能:训练吞吐量提升高达 75%,推理延迟降低 50% (与传统 NCCL 相比)。 -
• 包含对 NVLink 和 RDMA 的支持,可以灵活控制 GPU 资源。
MoE 模型:大模型时代的“高速公路”
近年来,混合专家 (Mixture-of-Experts, MoE) 模型 就像 AI 领域的一匹黑马,凭借其强大的性能和扩展性,迅速蹿红。MoE 模型的核心思想很简单:把一个大任务分解成多个小任务,交给不同的“专家”网络来处理。这就像一个公司里有多个部门,每个部门负责不同的业务,大家协同工作,效率自然更高。
但是,MoE 模型也面临一个棘手的问题:“专家”之间需要频繁地交流信息,如果沟通不畅,就会拖慢整个模型的速度。这就好比公司部门之间的协作,如果沟通成本太高,反而会降低整体效率。
DeepEP:为 MoE 模型插上翅膀
DeepSeek 团队敏锐地捕捉到了 MoE 模型的这一痛点,重磅推出 DeepEP —— 业界首个专门为 MoE 模型训练和推理设计的开源通信库!DeepEP 就像是为 MoE 模型量身定制的“高速公路”,让“专家”之间的沟通畅通无阻。
作为DeepSeek开源计划的一部分, DeepEP已经在生产环境中经过部署和测试,保证其可靠性和稳定性。DeepEP共享的每一行代码都将成为社区的集体动力,加速AGI的发展。
DeepEP 有哪些“黑科技”?
-
• 极致优化的 all-to-all 通信:DeepEP 实现了高度优化的 all-to-all 通信原语,这是 MoE 模型的核心操作。 -
• NVLink 和 RDMA 双剑合璧:DeepEP 同时支持 NVIDIA NVLink 和 RDMA 技术,无论你的硬件配置如何,都能充分发挥性能。 -
• 训练/推理全场景加速:DeepEP 提供了两种类型的内核: -
• 高吞吐量内核:专为训练和推理预填充阶段设计,让数据像流水一样快速传输。 -
• 低延迟内核:专为推理的解码阶段设计,让每一次交互都快如闪电。 -
• FP8 加持,效率翻倍:DeepEP 支持 FP8 (8 位浮点) 格式,可以在保证模型精度的同时,大幅减少通信量,提高训练和推理效率。 -
• 计算通信“并行不悖”:DeepEP 允许计算和通信操作同时进行,就像一边开车一边导航,互不干扰,效率更高。
DeepEP 凭什么这么牛?
-
• 专为 MoE 而生:DeepEP 从一开始就考虑了 MoE 模型的特殊需求,进行了深度的定制和优化。 -
• 性能怪兽:DeepEP 通过优化通信原语和支持低精度格式,让 MoE 模型的训练和推理速度飙升。 -
• 简单易用:DeepEP 提供了简洁明了的 API 和详细的文档,让你轻松上手,快速集成到自己的项目中。 -
• 灵活可控:DeepEP 允许你灵活控制 GPU 资源的使用,根据自己的需求进行定制。
DeepEP 核心技术揭秘
DeepEP 的“黑科技”背后,是 DeepSeek 团队对底层硬件的深刻理解和精妙的软件设计。
-
1. 异步通信:让数据“飞”起来DeepEP 大量使用了 CUDA Stream 和 NVSHMEM 的异步通信接口。想象一下,数据传输就像快递员送货,异步通信就是让快递员把包裹放在门口,然后继续送下一个,不用等你签收。这样,GPU 就可以一边处理计算任务,一边进行数据传输,互不耽误。 -
2. 零拷贝:数据传输“零损耗” -
• 在节点内,DeepEP 使用 CUDA IPC (进程间通信) 机制,让不同的 GPU 可以直接访问同一块内存,避免了数据复制的开销。 -
• 在节点间,DeepEP 使用 NVSHMEM 的 RDMA 操作,让数据直接从一个 GPU 的内存“飞”到另一个 GPU 的内存,无需 CPU 插手。 -
3. 精细化内存管理:让每一寸内存都发挥价值 -
• 将大的数据块切分成许多个小块(chunk),充分利用硬件的并行能力。 -
• 低延迟模式下, 对内存布局做了特殊优化, 减少访问延迟. -
4. “激进”的底层优化:挑战性能极限DeepEP 为了追求极致性能,甚至使用了一些“非常规”的底层优化手段,比如一个叫做 ld.global.nc.L1::no_allocate.L2::256B
的 PTX 指令。这个指令可以更精细地控制 GPU 缓存的行为,从而提高访存效率。虽然这种做法有一定风险,但 DeepSeek 团队通过充分的测试,保证了它在 Hopper 架构上的可靠性。 -
5. 低延迟“黑魔法”:Hook 机制DeepEP 的低延迟模式引入了一种独特的“Hook”机制。你可以把 Hook 理解为一个“钩子”,它可以把数据接收的操作“挂起”,等到真正需要使用数据的时候再执行。这样,就可以在不占用宝贵的 GPU 计算资源的情况下,实现通信和计算的完美重叠。
实测性能:DeepEP 到底有多快?
说了这么多,DeepEP 的性能到底怎么样?DeepSeek 团队在 H800 GPU 和 CX7 InfiniBand 400 Gb/s RDMA 网卡上,用 DeepSeek-V3/R1 模型进行了实测,结果令人惊艳!
-
• 测试环境 -
• H800 GPU -
• CX7 InfiniBand 400 Gb/s RDMA 网卡 -
• DeepSeek-V3/R1 预训练设置 (4096 tokens/batch, 7168 hidden, top-4 groups, top-8 experts, FP8 dispatch, BF16 combine) -
• 常规内核 (NVLink 和 RDMA 转发) Type Dispatch #EP Bottleneck bandwidth Combine #EP Bottleneck bandwidth Intranode 8 153 GB/s (NVLink) 8 158 GB/s (NVLink) Internode 16 43 GB/s (RDMA) 16 43 GB/s (RDMA) Internode 32 44 GB/s (RDMA) 32 47 GB/s (RDMA) Internode 64 46 GB/s (RDMA) 64 45 GB/s (RDMA) -
• 低延迟内核 (纯 RDMA) Dispatch #EP Latency RDMA bandwidth Combine #EP Latency RDMA bandwidth 8 163 us 46 GB/s 8 318 us 46 GB/s 16 173 us 43 GB/s 16 329 us 44 GB/s 32 182 us 41 GB/s 32 350 us 41 GB/s 64 186 us 40 GB/s 64 353 us 41 GB/s 128 192 us 39 GB/s 128 369 us 39 GB/s 256 194 us 39 GB/s 256 360 us 40 GB/s
数据胜于雄辩! DeepEP 在节点内和节点间通信都实现了接近硬件极限的带宽,在推理阶段更是实现了极低的延迟。与传统 NCCL 通信库相比,DeepEP 在 MoE 模型训练中可以将吞吐量提高高达 75%,在推理中可以将延迟降低高达 50%!
快速上手:三步玩转 DeepEP
DeepEP 的安装和使用非常便捷:
-
1. 环境准备: -
• Hopper 架构 GPU -
• Python 3.8+, CUDA 12.3+, PyTorch 2.1+ -
• NVLink (节点内通信) 和 RDMA 网络 (节点间通信) -
• 安装 DeepEP 修改版的 NVSHMEM (参考 DeepEP 仓库中的 NVSHMEM 安装指南) -
2. 安装 DeepEP: NVSHMEM_DIR=/path/to/installed/nvshmem python setup.py install
-
3. 在你的 MoE 模型中使用 DeepEP:DeepEP 提供了简洁的 API,可以轻松集成到你的代码中。只需几行代码,就可以替换原有的通信模块,享受 DeepEP 带来的性能飞跃!(具体 API 使用方法,请参考 DeepEP 仓库中的文档和示例。)
网络配置:榨干 InfiniBand 的每一滴性能
DeepEP 在 InfiniBand 网络上进行了全面测试,并提供了一些优化建议:
-
• 流量隔离:使用 InfiniBand 的虚拟通道 (VL) 将不同类型的流量 (常规内核、低延迟内核、其他) 隔离,避免相互干扰。 -
• 自适应路由:低延迟内核支持自适应路由,可以根据网络负载情况自动选择最佳路径。 -
• 拥塞控制:根据实际情况决定是否启用拥塞控制。
DeepEP 理论上也兼容 RoCE (RDMA over Converged Ethernet) 网络,但未经全面测试。
总结与展望
DeepEP 的开源,为 MoE 模型的发展注入了新的活力。它不仅解决了 MoE 模型长期以来的通信瓶颈,更以其卓越的性能和易用性,为广大的 AI 研究者和工程师提供了一个强大的工具。
DeepEP 不仅仅是一个通信库,它更是 DeepSeek 团队对 AI 基础设施的一次大胆探索和创新。我们相信,DeepEP 将在未来的 AI 领域扮演越来越重要的角色!DeepSeek 团队也将继续努力,为 DeepEP 添加更多功能,支持更多硬件平台,不断推动 MoE 模型的发展!
推荐阅读
-
• DeepEP代码仓库 https://github.com/deepseek-ai/DeepEP
(文:子非AI)