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

DeepEP通信库

原始链接
Excited to introduce DeepEP - the first open-source EP communication library for MoE model training and inference.
✅ Efficient and optimized all-to-all communication
✅ Both intranode and internode support with NVLink and RDMA
✅ High-throughput kernels for training and inference prefilling
✅ Low-latency kernels for inference decoding
✅ Native FP8 dispatch support
✅ Flexible GPU resource control for computation-communication overlapping
https://github.com/deepseek-ai/DeepEP
DeepEP-第一个用于MOE模型培训和推理的开源EP通信库。
✅ 有效alltoall通信
✅ 具有NVLINK和RDMA的Intranode和Intranode支持
✅ 用于培训和推理优先培训的高通量内核
✅ 推理解码的低延迟核
✅ 本地FP8调度支持
✅ 用于计算通信重叠的灵活GPU资源控制
网友总结的分析图如下:

什么是 DeepEP?

DeepEP 是一个高效的专家并行通信库,专为 MoE 模型的训练和推理优化。它通过提供高吞吐量和低延迟的 GPU 内核(也称为 MoE 分发和组合操作),显著降低了 MoE 模型在分布式训练和推理中的通信瓶颈。根据 DeepSeek 的描述,DeepEP 旨在支持大规模 AI 工作负载,减少训练成本,提高性能,并使先进 AI 研究更加可访问。
该库是 DeepSeek 在其 #OpenSourceWeek 活动中的第二项开源发布,体现了 DeepSeek 推动 AI 基础设施发展和开放研究社区建设的承诺。DeepEP 的 GitHub 仓库提供了详细的技术文档和代码,供开发者和研究人员使用和贡献。

DeepEP 的核心特性

DeepEP 提供了多种强大的功能,使其成为 MoE 模型开发的重要工具。以下是其主要特性:

1. 高效优化全对全通信

  • DeepEP 提供高效的全对全(All-to-All)通信内核,用于 MoE 模型中的分发(Dispatch)和组合(Combine)操作。这些操作是 MoE 模型的核心通信任务,涉及多个 GPU 之间的大量数据交换。
  • 通过优化通信协议,DeepEP 实现了高吞吐量和低延迟,确保模型训练和推理的性能最大化。

2. 支持节点内和节点间通信

  • DeepEP 支持节点内(Intranode)和节点间(Internode)通信,分别利用 NVIDIA 的 NVLink 和 RDMA(Remote Direct Memory Access)技术。
  • NVLink 提供节点内 GPU 之间的超高带宽(高达 153 GB/s)和低延迟通信,适合密集计算任务。
  • RDMA 则通过 InfiniBand 或其他高性能网络实现节点间的高效数据传输,最大带宽可达 50 GB/s。

3. 高吞吐量和低延迟内核

  • DeepEP 提供了两种类型的内核,分别针对不同的应用场景:
    • 高吞吐量内核:适用于训练和推理预填充(Prefilling)阶段,优化了数据传输效率,能够处理大规模数据交换。
    • 低延迟内核:专为推理解码(Decoding)阶段设计,利用纯 RDMA 技术,将延迟降至最低(如 163 µs 的分发延迟和 318 µs 的组合延迟)。

4. 原生 FP8 支持

  • DeepEP 原生支持 FP8(8 位浮点)低精度操作,这是一种在深度学习中越来越流行的低精度计算格式。
  • FP8 能够显著减少内存使用和计算开销,同时保持模型精度,特别适用于 MoE 模型的分散和组合操作。

5. 灵活的 GPU 资源控制

  • DeepEP 允许用户灵活控制 GPU 的流式多处理器(Streaming Multiprocessors, SM)数量,从而优化计算与通信的重叠。
  • 通过引入基于钩子的通信-计算重叠机制,DeepEP 可以在不占用 SM 资源的情况下实现高效的并行处理,显著提升系统资源利用率。

技术实现细节

根据 GitHub 仓库中的文档,DeepEP 集成了多项尖端技术,确保其在高性能计算(HPC)和 AI 工作负载中的卓越表现:

1. 非对称域带宽转发

  • DeepEP 针对 DeepSeek-V3 论文中提出的分组限制门控算法(Group-Limited Gating Algorithm),优化了 NVLink 和 RDMA 之间的数据转发。
  • 例如,在 H800 GPU 上,DeepEP 实现了节点内 153 GB/s 和节点间 43-47 GB/s 的带宽瓶颈,显著提升了训练和推理的吞吐量。

2. 低延迟 RDMA 内核

  • 针对延迟敏感的推理解码任务,DeepEP 使用纯 RDMA 内核,实现了极低的通信延迟。例如,在典型的生产环境中(128 个 token 每批,7168 个隐藏层,Top-8 专家,FP8 分发和 BF16 组合),延迟可低至 163 µs(分发)和 318 µs(组合)。
  • 此外,DeepEP 支持自适应路由(Adaptive Routing)和流量隔离(Traffic Isolation via InfiniBand Virtual Lanes),进一步减少网络拥塞。

3. PTX 指令优化

  • DeepEP 使用了未在官方文档中定义的 PTX 指令(如 ld.global.nc.L1::no_allocate.L2::256B),在 Hopper 架构 GPU 上实现了极致的性能优化,尽管这些指令可能存在未定义行为的风险。

4. 双批重叠

  • 在推理解码阶段,DeepEP 支持双批(Double-Batch)重叠技术,通过钩子机制实现注意力、分散、MoE 和组合阶段的并行处理,而无需占用 SM 资源。

5. 依赖和配置

  • DeepEP 依赖于修改后的 NVSHMEM 库,并需要 NVIDIA CUDA 驱动、RDMA API(如 OpenFabrics Enterprise Distribution, OFED)和支持 GPUDirect RDMA 的高性能 GPU(如 NVIDIA A100、V100 或 H800)。
  • 用户可以通过设置 NVSHMEM_IB_SL 环境变量控制虚拟通道分配,并根据网络负载选择静态路由或自适应路由。

应用场景

DeepEP 的设计使其特别适用于以下场景:

  1. 大规模 MoE 模型训练
    • MoE 模型通过在多个专家之间动态分配计算任务,能够在保持模型性能的同时降低计算成本。DeepEP 的高吞吐量和低延迟通信能力使其成为训练大型 MoE 模型(如 DeepSeek-V3)的理想选择。
  2. 实时推理优化
    • 在推理阶段,特别是解码任务中,低延迟通信至关重要。DeepEP 的低延迟内核和灵活的资源控制确保了实时 AI 应用的性能。
  3. 高性能计算和 AI 工作负载
    • 结合 NVLink 和 RDMA,DeepEP 适用于数据中心和集群环境中的高性能计算任务,特别是在 AI、数据分析和科学计算领域。

为什么 DeepEP 重要?

DeepEP 的发布具有多方面的意义:

  1. 推动 MoE 模型的普及
    • MoE 模型因其高效性和扩展性而备受关注,但其通信开销一直是瓶颈。DeepEP 通过优化通信流程,降低了 MoE 模型的部署门槛,使更多研究者和开发者能够利用这一技术。
  2. 开源社区的贡献
    • 作为 DeepSeek #OpenSourceWeek 的第二项发布,DeepEP 体现了 DeepSeek 对开放科学和协作创新的承诺。通过提供详细的文档和代码,DeepEP 鼓励全球开发者参与改进和扩展。
  3. 技术前沿的突破
    • DeepEP 利用了最新的硬件技术(如 NVLink、RDMA 和 FP8)以及软件优化(如 PTX 指令和钩子机制),代表了 AI 基础设施领域的最新进展。

如何获取和使用 DeepEP?

DeepEP 现已在 GitHub 上开源,地址为:https://github.com/deepseek-ai/DeepEP。以下是获取和使用 DeepEP 的基本步骤:

  1. 克隆仓库: 使用以下命令克隆 DeepEP 仓库:

    git clone https://github.com/deepseek-ai/DeepEP.git

  2. 安装依赖

    • 确保系统安装了 NVIDIA CUDA 驱动、RDMA 栈(如 OFED)和支持 GPUDirect RDMA 的 GPU。
    • 参考 GitHub 仓库中的 NVSHMEM 安装指南,安装修改后的 NVSHMEM 库。
  3. 构建和测试

    • 按照仓库中的编译说明构建 DeepEP。
    • 运行提供的测试脚本,验证高吞吐量和低延迟内核的性能。
  4. 配置优化

    • 根据具体工作负载调整 SM 数量、路由策略和虚拟通道分配,以获得最佳性能。

社区反馈与未来展望

DeepSeek 的 Twitter 帖子发布后,社区反应热烈。许多用户称赞 DeepEP 是 MoE 训练和推理的“游戏规则改变者”(Game-Changer),并对其 NVLink 和 RDMA 支持表示高度认可。然而,也有一些用户(如 @thynxedge)表达了对技术细节的困惑,表明 DeepEP 可能需要更直观的文档或教程来帮助新手开发者。
未来,DeepSeek 计划进一步优化 DeepEP,可能会添加对更多硬件架构和通信协议的支持,同时解决当前低延迟内核中自适应路由的潜在死锁问题。社区的反馈和贡献也将推动 DeepEP 的持续改进。

参考

https://mp.weixin.qq.com/s/KEP4Mny6Roy3GiNia9wl1Q


http://www.kler.cn/a/561461.html

相关文章:

  • Vue.js 编写组件单元测试
  • 一个std::async的示例
  • 【Linux进程三】进程的状态
  • XTOM工业级蓝光三维扫描仪在笔记本电脑背板模具全尺寸检测中的高效精准应用
  • 001第一个flutter文件
  • 源码分享1:批量修改PDF文件名称
  • 【MySQL篇】MySQL操作库
  • LIS系统源码,医院检验系统源码,lis软件源码
  • Java Web开发实战与项目——项目集成与部署
  • 1 什么是微服务?MybatisPlus框架
  • NVIDIA DLI引领创新课程:基于提示工程的LLM应用开发探索
  • 如何在Ubuntu 22.04或20.04 Linux上安装MobaXterm
  • 力扣2454. 下一个更大元素 IV
  • 电脑键盘知识
  • 【视频2 - 4】初识操作系统,Linux,虚拟机
  • windows断网,提示无法自动将ip协议堆栈绑定到网络适配器的解决办法
  • Oracle 数据泵迁移步骤规范
  • 双周报Vol.66: String模式匹配增强、while条件支持使用 is 表达式、新增IDE安装器...多项核心技术更新!
  • ui设计公司兰亭妙微分享:科研单位UI界面设计
  • 【C# 变量字符串还原转义字符】