欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > DeepSeek开源Day2:DeepEP技术详解

DeepSeek开源Day2:DeepEP技术详解

2025/3/10 14:09:25 来源:https://blog.csdn.net/weixin_43102784/article/details/146079567  浏览:    关键词:DeepSeek开源Day2:DeepEP技术详解

img

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)。

img

MoE 介绍(来源:中存算半导体)
为了与 DeepSeek-V3 论文中的组限制门控算法(group-limited gating algorithm)保持一致,DeepEP 针对非对称域带宽转发设计和优化通信内核(例如将数据从 NVLink 域转发到 RDMA 域)并提供高吞吐量,使其适用于训练和推理预填充任务。
DeepEP 主要适用于大模型训练,特别是需要 EP 的集群训练。通过提升通信信道的使用率,提升训练效率。

img

DeepEP 的安装要求如下:
1)Hopper 架构 GPU(看出来 DeepSeek 对 H 是真爱)
2)Python 3.8 或更高版本
3)CUDA 12.3 或更高版本
4)PyTorch 2.1 或更高版本
5)NVLink 与 RDMA(DeepEP 已通过 InfiniBand 网络的测试,并未在 RDMA 完全测试)

img

2 DeepEP 的关键技术与未来优化
DeepEP 具备以下关键技术:
1)高吞吐量、低延迟的 all-to-all GPU 内核,专门优化的分派和组合操作。确保数据在多个 GPU 之间快速传输,减少通信时间。
2)支持低比特操作,如 FP8 格式,显著降低计算和存储需求,提升整体效率。
3)针对非对称域带宽转发(如从 NVLink 域到 RDMA 域),提供优化内核,适合训练和推理 Prefill 任务。允许直接内存访问,减少 CPU 介入。DeepEP 的优化确保数据在不同域之间高效传输,特别适用于大规模混合卡的分布式训练。

img

CPU 等待 GPU 接收计数信号(来源:DeepSeek)
3 DeepEP 的原理与架构
3.1 从英伟达集群到 All-to-All 通信
V3/R1 的训练框架定制了高效的跨节点 All-to-All 通信内核,以充分利用 IB 和 NVLink 带宽,并节约流式多处理器(SM,(Stream Multiprocessor)。

img

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

img

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

img

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 竞争的背景下这种开源精神值得赞许。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词