DeepSeek开源Day2:DeepEP技术详解

2 月 24 日,DeepSeek 启动 "开源周",第二个开源的代码库为 DeepEP。很好,又挤了一段有硬件基因的牙膏出来。H100/H800 绝对是 DeepSeek 的小心肝。
1 DeepEP 简介

DeepEP 是由 deepseek-ai (深度求索)开发的一个开源项目。DeepEP 针对混合专家(MoE)+ 专家并行(EP)模型架构设计的通信库。MoE 是由多个专家子网络组成的大模型,通过门控网络决定输入分配给哪个专家。

DeepEP 提供高吞吐量和低延迟的 all-to-all GPU 内核,包括 MoE 分发(dispatch)和合并(combine)。该库支持 FP8 等低精度运算,特别适用于 DeepSeek 系列模型(如 DeepSeek-V2、V3 和 R1)。

MoE 介绍(来源:中存算半导体)

为了与 DeepSeek-V3 论文中的组限制门控算法(group-limited gating algorithm)保持一致,DeepEP 针对非对称域带宽转发设计和优化通信内核(例如将数据从 NVLink 域转发到 RDMA 域)并提供高吞吐量,使其适用于训练和推理预填充任务。

DeepEP 主要适用于大模型训练,特别是需要 EP 的集群训练。通过提升通信信道的使用率,提升训练效率。

DeepEP 的安装要求如下:

1)Hopper 架构 GPU(看出来 DeepSeek 对 H 是真爱)

2)Python 3.8 或更高版本

3)CUDA 12.3 或更高版本

4)PyTorch 2.1 或更高版本

5)NVLink 与 RDMA(DeepEP 已通过 InfiniBand 网络的测试,并未在 RDMA 完全测试)

2 DeepEP 的关键技术与未来优化

DeepEP 具备以下关键技术:

1)高吞吐量、低延迟的 all-to-all GPU 内核,专门优化的分派和组合操作。确保数据在多个 GPU 之间快速传输,减少通信时间。

2)支持低比特操作,如 FP8 格式,显著降低计算和存储需求,提升整体效率。

3)针对非对称域带宽转发(如从 NVLink 域到 RDMA 域),提供优化内核,适合训练和推理 Prefill 任务。允许直接内存访问,减少 CPU 介入。DeepEP 的优化确保数据在不同域之间高效传输,特别适用于大规模混合卡的分布式训练。

CPU 等待 GPU 接收计数信号(来源:DeepSeek)
3 DeepEP 的原理与架构
3.1 从英伟达集群到 All-to-All 通信

V3/R1 的训练框架定制了高效的跨节点 All-to-All 通信内核,以充分利用 IB 和 NVLink 带宽,并节约流式多处理器(SM,(Stream Multiprocessor)。

传统的基于 NVSwitch 的 All-to-All 通信结构(来源:互联网)

通信内核(通信 SM 控制代码)的实现与 MoE 门控算法和集群网络拓扑是按照软硬件协同的思路来进行设计的。具体来说,在集群中,跨节点 GPU 与 IB 完全互连,节点内(单台服务器内)通信通过 NVLink 完成。NVLink 提供 160 GB/s 的带宽,约是 IB 的 3.2 倍 (50 GB/s)。

All-to-All 通信(来源:中存算半导体)

DeepSeek 还采用了 warp(线程束)专用化技术,将 20 个 SM 划分为 10 个通信信道。

1)在调度过程中,(a)IB 发送、(b)IB 到 NVLink 转发、(c) NVLink 接收由相应的 warp 处理。分配给每个通信任务的 warp 数量会根据所有 SM 的实际工作负载动态调整。

2)在合并过程中,(1) NVLink 发送、(2)NVLink 到 IB 的转发和累积、(3)IB 接收和累积也由动态调整的 warp 处理。

3)dispatching 和 combining kernel 都与计算流重叠,采用定制的 PTX(Parallel Thread Execution)指令以自动调整通信块大小,减少了对 L2 缓存的使用和对其他 SM 的干扰。
3.2 DeepEP 架构

DeepEP 的架构设计围绕 MoE 模型的通信需求展开,包含以下关键组件:
1)常规内核 :GPU 缓存管理、forward 和 backward dispatch、forward 和 backwardcombine 的函数,分别用于常规内核操作,支持训练和推理的计算流程。
2)低延迟内核 :专为推理解码设计,专门操作 NVLink/Infiniband 或 RDMA 技术,减少通信延迟,适合实时通信。
3)通信 - 计算重叠调度 :减少 SM(Streaming Multiprocessors)资源占用,提升算力利用率。
4 DeepEP 代码结构分析

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

DeepEP 目录包含以下关键文件和目录:

third-party/ : 包含 NVSHMEM 相关文件,如 README.md(安装指南)和 nvshmem.patch(补丁文件),用于管理外部依赖。

figures/ : 存储示意图,帮助理解技术实现。

tests/ : 包含测试脚本,如 test_intranode.py(节点内测试)、test_internode.py(节点间测试)和 test_low_latency.py(低延迟测试),以及 utils.py(工具函数)。

setup.py : 用于构建和安装 DeepEP 库。

LICENSE : 采用 MIT 许可,部分文件受 NVSHMEM SLA(Software License Agreement)限制,有可能影响开源使用。

csrc/ : 包含 C++ 源代码,内有 kernels / 子目录,如 ibgda_device.cuh,用于内核实现。

deep_ep.cpp 用于管理 CUDA 内存和执行分布式通信任务:针对非对称域通信分别设计了 num_nvl_bytes 和 num_rdma_bytes。low_latency_mode 可配置低延迟模式。

ibgda_device.cuh 实现了与 NVSHMEM(NVIDIA 共享内存库)相关的 IBGDA(InfiniBand General Data Access)设备功能。

runtime.cu 用于在 CUDA 环境下,节点内和节点间 runtime 实现,通信的同步和初始化操作。
5 DeepEP 的未来优化

DeepEP 目前仍处于早期阶段,最新提交日期为 2025 年 2 月 25 日,初始提交包含 32 个文件,8461 行新增代码。

预计 DeepEP 未来将进一步进行如下优化:

1)性能优化:进一步提升通信效率,特别是在更大规模模型或新硬件架构上的支持,如更多 GPU 类型或新型网络技术,以适应不断增长的计算需求。

2)硬件兼容性扩展:可能支持更多硬件平台,如 AMD Instinct GPU,扩大应用范围。

3)与其他开源框架集成:可能与更多 AI 框架或库集成,进一步提升兼容性和开发便利性。

求。

2)硬件兼容性扩展:可能支持更多硬件平台,如 AMD Instinct GPU,扩大应用范围。

3)与其他开源框架集成:可能与更多 AI 框架或库集成,进一步提升兼容性和开发便利性。

DeepEP 作为 DeepSeek 技术栈的重要组成部分,展示了在 MoE 模型通信优化上的创新潜力。其开源代码为促进全球高效训练和推理提供了坚实基础,未来可能在性能优化和硬件兼容性上进一步扩展。在全球 AI 竞争的背景下这种开源精神值得赞许。

相关推荐
时序数据说4 小时前
通过Linux系统服务管理IoTDB集群的高效方法
大数据·linux·运维·数据库·开源·时序数据库·iotdb
opentrending11 小时前
Github 热点项目 Cursor开源代替,AI代理+可视化编程!支持本地部署的隐私友好型开发神器。
人工智能·开源·github
攻城狮7号1 天前
小米 MiMo 开源:7B 参数凭什么 “叫板” AI行业巨头?
人工智能·ai·开源·mimo·小米ai
编程乐趣1 天前
推荐一组WPF自定义控件开源项目
开源
程序员小杰@1 天前
✨WordToCard使用分享✨
前端·人工智能·开源·云计算
OpenLoong 开源社区1 天前
技术视界 | 青龙机器人训练地形详解(一):如何创建一个地形
人工智能·机器人·开源·人形机器人·openloong
饺子大魔王的男人1 天前
开源照片管理系统PhotoPrism的容器化部署与远程管理配置
开源
DisonTangor1 天前
LLaMA-Omni 2:基于 LLM 的自回归流语音合成实时口语聊天机器人
人工智能·开源·aigc·音视频·llama
说私域1 天前
数字化驱动下的智慧物流与零售创新:全流程无人仓与定制开发开源AI智能名片S2B2C商城小程序的协同实践
人工智能·小程序·开源·零售
hvinsion1 天前
【Python开源】深度解析:一款高效音频封面批量删除工具的设计与实现
python·开源·音视频