DeepSeek开源:高效MoE通信利器 – DeepEP加速专家并行!

AI前沿3周前发布 yizz
2,079 0 0
广告也精彩

DeepSeek 开源 DeepEP:混合专家模型MoE)的高效通信利器

什么是 DeepEP?为何要关注它?

DeepEPDeepSeek 专门为混合专家模型 (MoE) 专家并行 (EP) 打造的高效通信库。它主要解决 MoE 模型中分发 (dispatch)合并 (combine) 操作的通信瓶颈问题,尤其是在大规模分布式训练和推理场景下。

为什么要使用 DeepEP?

  • 提升 MoE 模型性能: 通过优化通信效率,DeepEP 显著提升 MoE 模型的训练和推理速度。
  • 支持低精度运算: DeepEP 支持包括 FP8 在内的低精度运算,进一步提高性能和减少内存需求。
  • 针对特定架构优化: DeepEP 针对 DeepSeek-V3 论文中提出的组限制门控算法进行了特别优化,并针对 NVIDIA Hopper GPU 架构进行了优化。
  • 提供多种通信模式: DeepEP 提供针对不同场景优化的通信核心,包括高吞吐量核心和低延迟核心。

keywords, , #MoE

DeepEP 的核心特性是什么?

DeepEP 的核心特性包括:

  • 高效的全对全 GPU 核心: 优化 MoE 中的分发和合并操作,减少通信瓶颈。
  • 低延迟 RDMA 核心: 针对延迟敏感的推理解码场景,提供最小化延迟的通信方案。
  • 基于钩子的通信-计算重叠方法: 在不占用 SM 资源的情况下,实现通信和计算的真正并行。
  • 支持 NVLink 和 RDMA: 优化 NVLinkRDMA 两种不同通信域之间的数据传输。
  • 支持 FP8 等低精度运算: 提高计算效率和减少内存带宽需求。
  • 组限制门控算法优化: 更好地平衡计算负载,提高硬件利用率和训练效率。

keywords, , #通信库

DeepEP 如何工作?深入理解 MoE 和 EP

为了更好地理解 DeepEP 的作用,我们需要先了解一些基本概念:

什么是混合专家模型 (MoE)?

混合专家模型 (MoE) 是一种神经网络架构,它包含多个“专家”网络,并由一个“门控”网络决定将输入数据路由到哪些专家。

  • 专家: 独立的神经网络,负责处理特定类型的数据或任务。
  • 门控网络: 决定将输入数据发送给哪些专家的网络。

MoE 的优势在于:

  • 模型规模可以大幅增长: 因为每次处理只激活部分专家,而不是全部网络。
  • 计算效率高: 避免了传统模型中所有参数都需要参与计算的问题。

MoE 概念最早由 Jacobs、Jordan 和 Hinton 在 1991 年提出,近年来在大型语言模型中得到广泛应用,例如 Google 的 Switch Transformers、微软的 Z-Code 以及 DeepSeekDeepSeek-V3。

什么是专家并行 (EP)?

专家并行 (EP) 是一种分布式训练方法,它将 MoE 中的不同专家分配到不同的计算设备上。

  • 核心思想: 利用 MoE 的稀疏激活特性,使模型规模能够随设备数量线性扩展,而不会相应地增加计算成本。
  • 挑战: 专家之间的通信效率是关键,需要高效的通信方案来降低数据交换的开销。

DeepEP 正是为了解决专家并行中的通信挑战而设计的。

MoE 中的关键操作:分发和合并

在 MoE 架构中,两个关键操作是分发 (dispatch)合并 (combine)

  • 分发: 根据门控网络的决策,将输入 token 路由到相应的专家。类似于快递分拣中心,将包裹(token)根据目的地(专家)进行分发。
  • 合并: 收集各专家处理后的结果,并根据权重进行合并。类似于汇总各个专家的处理结果,最终形成完整的输出。

这两个操作都需要设备间的全对全 (all-to-all) 通信模式,即每个设备需要向其他所有设备发送和接收数据。DeepEP 提供的高效核心大幅优化了这一过程,减少了通信瓶颈。

keywords, , #分布式训练

DeepEP 如何优化不同通信域?NVLink vs RDMA

DeepEP 优化了两种不同通信域之间的数据传输:

  • NVLink 域: NVIDIA GPU 之间的高速直连通道,带宽可达约 160 GB/s,适合服务器内部 GPU 间通信。可以理解为服务器内部的高速公路。
  • RDMA 域: 远程直接内存访问技术,允许计算机不经过操作系统直接访问远程内存,带宽约 50 GB/s,适合服务器间通信。可以理解为连接不同服务器的高速公路。

DeepEP 专门为非对称域带宽转发场景提供了优化核心。这意味着,它可以更有效地在 NVLink 和 RDMA 之间传输数据,从而提高整体性能。

keywords, , #RDMA

如何快速上手 DeepEP?

以下是使用 DeepEP 的基本步骤:

环境要求

  • 硬件: Hopper GPU (如 H100、H800)
  • 软件:
    • Python 3.8 以上
    • CUDA 12.3 以上
    • PyTorch 2.1 以上
    • 用于内节点通信的 NVLink 和跨节点通信的 RDMA 网络
  • 依赖: 修改版的 NVSHMEM

安装步骤

  1. 安装 NVSHMEM: 首先需要配置并安装修改版的 NVSHMEM。

    bash
    NVSHMEM_DIR=/path/to/installed/nvshmem python setup.py build

  2. 构建和安装 DeepEP: 使用以下命令构建和安装 DeepEP。

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

  3. 创建符号链接: 根据你的平台,创建符号链接。

    bash
    ln -s build/lib.linux-x86_64-cpython-38/deep_ep_cpp.cpython-38-x86_64-linux-gnu.so

  4. 运行测试用例: 运行提供的测试用例以验证安装是否成功。

    bash
    python tests/test_intranode.py
    python tests/test_internode.py
    python tests/test_low_latency.py

    注意: 你可能需要根据你的集群设置修改 tests/utils.py 中的 init_dist 函数。

使用 DeepEP

DeepEP 提供了清晰的 Python API,使开发者能轻松地将其集成到现有 MoE 模型中。对于推理场景,DeepEP 的低延迟模式特别有价值,它提供不占用 SM 资源的通信-计算重叠功能。

keywords, , API

如何进行网络配置

对于生产环境,DeepEP 提供了详细的网络配置建议:

  • 流量隔离: 通过 InfiniBand 虚拟通道 (VL) 实现流量隔离,将不同类型的工作负载分配到不同虚拟通道。
  • 自适应路由配置: (低延迟核心支持,标准核心暂不支持)
  • 最佳路由策略: 根据网络负载情况选择最佳路由策略。

这些配置建议对于在大规模集群中发挥 DeepEP 的最佳性能至关重要。

keywords, , #InfiniBand

总结

DeepEP 是 DeepSeek 开源的一款强大的通信库,它为混合专家模型提供了高效的通信解决方案。通过优化的全对全 GPU 核心、低延迟 RDMA 操作和创新的不占用计算资源的通信-计算重叠方法,DeepEP 大幅提升了 MoE 模型在训练和推理阶段的性能。 尤其值得关注的是对组限制门控算法、FP8低精度运算的支持。

DeepEP 当前完全支持 Hopper GPU 架构,主要在 InfiniBand 网络环境中测试,但理论上也兼容 RoCE (RDMA over Converged Ethernet)。随着社区的参与和贡献,我们可以期待 DeepEP 在更多硬件平台上的扩展支持。

我认为:这DeepEP的开源,犹如黑暗中的一支火炬,照亮了MoE模型高效通信的道路。它不仅仅是一个工具,更是一种开放共享的精神,是DeepSeek对社区的馈赠。然而,真正的价值在于使用者的手中,在于如何将其融入实际应用,发挥其潜力,推动AI技术的进步。期待DeepEP在开源社区中生根发芽,开出更加绚丽的花朵。

keywords, , #通信效率

© 版权声明
chatgpt4.0

相关文章

error: Content is protected !!