DeepSeek开源周Day2:DeepEP - 专为 MoE 模型设计的超高效 GPU 通信库

项目地址:https://github.com/deepseek-ai/DeepEP
开源日历:2025-02-24起 每日9AM(北京时间)更新,持续五天 (2/5)!

引言

在大模型训练中,混合专家模型(Mixture-of-Experts, MoE)因其动态路由和高效计算特性备受关注。然而,随着模型规模的扩大,GPU 间的数据通信成为关键瓶颈——尤其是在专家并行(Expert Parallelism, EP)场景中,数据需要在多个 GPU 间高效分发与合并。传统通信库往往难以兼顾高吞吐与低延迟,而 DeepEP 的诞生正是为了解决这一难题。


核心功能与设计理念

1. 什么是 DeepEP?

DeepEP 是由 DeepSeek 开源的高性能通信库,专为 MoE/EP 场景设计。其核心目标是通过优化 GPU 间数据传输,实现:

  • 训练加速:提升多 GPU 协作效率
  • 推理降延迟:支持实时推理任务(如 ChatGPT)
  • 资源高效利用:减少 GPU 闲置时间

2. 技术亮点解析

(1)域间带宽优化

针对 MoE 的非对称通信场景(如 NVLink 域到 RDMA 域)深度优化:

  • NVLink(节点内 GPU 互联):带宽达 160 GB/s
  • RDMA(跨节点 GPU 互联):带宽达 50 GB/s
    通过定制内核实现数据转发路径优化,避免带宽浪费。
(2)低精度计算支持
  • FP8 分发 + BF16 合并:在保证精度的同时减少 50% 显存占用
  • 动态精度切换:适应不同阶段的计算需求
(3)通信-计算重叠


通过 Hook 机制实现:

  • 前向传播时后台预加载数据
  • 反向传播时异步传输梯度
    关键优势:零额外 SM 资源占用,最大化 GPU 利用率

性能实测

测试环境

  • 硬件:NVIDIA H800 GPU + CX7 InfiniBand 400Gb/s RDMA 网卡
  • 软件:CUDA 12.3 + PyTorch 2.1

性能数据

常规模式(训练/预填充推理)
场景通信类型吞吐量
节点内(8卡)NVLink153 GB/s
跨节点(64卡)RDMA46 GB/s
低延迟模式(推理生成)
专家数延迟RDMA 带宽
8163 μs46 GB/s
128192 μs39 GB/s

注:在 128 token 批处理下,延迟仅增加 18%,展现极强的扩展性


架构设计与关键技术

1. 分层通信模型

  • 分发阶段:通过原子操作动态分配 token 到专家
  • 组合阶段:基于元数据快速聚合结果

2. 推理优化黑科技

def low_latency_dispatch(hidden_states, topk_idx):# 后台启动 RDMA 传输recv_hidden, hook = _buffer.low_latency_dispatch(...)# 立即返回控制权,计算与传输并行return recv_hidden, hook

通过 纯 RDMA 传输 + 双缓冲机制,实现:

  • 163 μs 端到端延迟
  • 零 CUDA 核占用

快速入门指南

1. 环境要求

组件版本要求
GPUHopper 架构(H100/H800)
Python3.8+
CUDA12.3+
PyTorch2.1+
网络NVLink + RDMA
  • CUDA安装指南
  • GPU-pytorch 安装指南

2. 安装步骤

# 安装定制版 NVSHMEM
git clone https://github.com/NVIDIA/nvshmem
cd nvshmem && git apply DeepEP/third-party/nvshmem.patch
make -j 16 && make install# 安装 DeepEP
NVSHMEM_DIR=/path/to/nvshmem python setup.py install

3. 基础使用示例

import deep_ep# 初始化通信缓冲区
buffer = deep_ep.Buffer(group=dist.group.WORLD,num_nvl_bytes=1e9,  # NVLink 缓冲区 1GBnum_rdma_bytes=2e9   # RDMA 缓冲区 2GB
)# MoE 分发数据
recv_data, metadata = buffer.dispatch(input_tensor, expert_indices, num_experts=64
)# 执行专家计算
expert_output = experts[metadata.expert_id](recv_data)# 合并结果
combined_result = buffer.combine(expert_output)

高级调优建议

1. 网络配置优化

参数推荐值说明
​NVSHMEM_IB_SL​1-3隔离不同类型流量
自适应路由高负载时启用避免网络拥塞
拥塞控制关闭DeepSeek 实测无显著影响

2. SM 资源分配

# 设置 24 个 SM 专供通信
Buffer.set_num_sms(24)

通过动态调整 SM 数量,平衡计算与通信资源。


应用场景与案例

1. 千卡级训练加速

在 2048 卡集群中:

  • 线性扩展效率 >92%
  • 训练吞吐量提升 3.8 倍(对比 Megatron-LM)

2. 实时推理服务

  • 70B 参数 MoE 模型
  • 单请求延迟 <200 ms(端到端)
  • 吞吐量 1200 token/s

注意事项

  1. 硬件限制:目前仅支持 Hopper 架构 GPU
  2. PTX 指令:使用未公开指令 ld.global.nc.L1::no_allocate​ 实现极致性能,可通过 DISABLE_AGGRESSIVE_PTX_INSTRS=1​ 禁用
  3. 缓冲区管理:低延迟模式需预留更大 RDMA 缓冲区

开源生态

  • GitHub Star:开源 3 小时即破 2k
  • 生态整合:vLLM 等框架正在适配
  • 许可证:核心代码 MIT 许可,NVSHMEM 部分遵循 NVIDIA SLA

参考引用:

  1. Github - DeepEP
  2. 开源周第二天 - DeepEP
  3. DeepEP 详解,GPU压榨计划启动!
  4. DeepSeek开源周第二天-DeepEP
  5. DeepSeek最新开源DeepEP技术深入分析

专业术语解释

  • 混合专家模型(Mixture-of-Experts, MoE)
    一种将复杂任务分配给多个专家模块进行处理的模型架构。类似于一个大型项目被分解给多个专业团队分别完成。
  • 专家并行(Expert Parallelism, EP)
    一种在模型训练中多个专家模块同时进行计算的模式。类似于多个工作小组同时开展不同部分的工作。
  • 非对称通信场景
    指通信双方在数据传输量、传输方向或性能要求等方面存在差异的情况。类似于两人交流时一方说得多另一方说得少。
  • NVLink
    用于节点内 GPU 互联的高速通信技术,具有高带宽。类似于房间内不同家具之间的快速通道。
  • RDMA
    一种跨节点 GPU 互联的通信技术。类似于不同房间之间的快捷通道。
  • 数据转发路径优化
    对数据传输的路径进行改进以提高效率和减少浪费。类似于优化物流运输的路线。
  • FP8 分发 + BF16 合并
    数据分发和合并时采用的不同精度格式,以平衡精度和资源占用。类似于根据物品的重要性选择不同大小的盒子来装。
  • 通信-计算重叠
    让数据通信和计算过程同时进行,以提高效率。类似于一边做饭一边收拾厨房。
  • 分层通信模型
    将通信过程分为不同层次进行处理和优化的模型。类似于把一个大工程分为不同的施工阶段。
  • 双缓冲机制
    使用两个缓冲区交替工作来提高数据传输效率。类似于两个工人交替工作,一个工作时另一个准备。
  • SM 资源
    指 GPU 中的流多处理器(Streaming Multiprocessor)相关的资源。类似于工厂里的生产车间资源。

DeepEP 的推出标志着 MoE 训练进入新纪元。通过硬件级通信优化,它成功将 GPU 集群的潜力压榨到极致——正如网友所言:"这才是真正的 GPU 起飞!"。随着生态的完善,我们有理由期待更多千亿级模型将借此突破训练效率的边界。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26514.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

密码学(哈希函数)

4.1 Hash函数与数据完整性 数据完整性&#xff1a; 检测传输消息&#xff08;加密或未加密&#xff09;的修改。 密码学Hash函数&#xff1a; 构建某些数据的简短“指纹”&#xff1b;如果数据被篡改&#xff0c;则该指纹&#xff08;以高概率&#xff09;不再有效。Hash函数…

网络流算法: Edmonds-Karp算法

图论相关帖子 基本概念图的表示: 邻接矩阵和邻接表图的遍历: 深度优先与广度优先拓扑排序图的最短路径:Dijkstra算法和Bellman-Ford算法最小生成树二分图多源最短路径强连通分量欧拉回路和汉密尔顿回路网络流算法: Edmonds-Karp算法网络流算法: Dinic算法 环境要求 本文所用…

R语言+AI提示词:贝叶斯广义线性混合效应模型GLMM生物学Meta分析

全文链接&#xff1a;https://tecdat.cn/?p40797 本文旨在帮助0基础或只有简单编程基础的研究学者&#xff0c;通过 AI 的提示词工程&#xff0c;使用 R 语言完成元分析&#xff0c;包括数据处理、模型构建、评估以及结果解读等步骤&#xff08;点击文末“阅读原文”获取完整代…

深度学习简介

目录 一、剖析&#xff0c;什么是深度学习&#xff1f;二、深度学习人工神经网络、机器学习、人工智能关系三、深度学习的发展3.1 从感知机到人工神经网络1. 早期发展2. 陷入低谷3. 短暂复兴4. 再次受挫5. 深度突破 3.2 深度学习时代1. 语音领域突破2. 大规模图像数据库3. Alex…

进行性核上性麻痹患者的生活护理指南

进行性核上性麻痹是一种神经系统退行性疾病&#xff0c;合理的生活护理能有效改善症状&#xff0c;提高生活质量。 居家环境要安全。移除地面杂物&#xff0c;铺设防滑垫&#xff0c;安装扶手&#xff0c;降低跌倒风险。在浴室、厨房等湿滑区域要特别加强防护措施。建议在床边、…

【数据结构】链表与顺序表的比较

链表和顺序表是两种常见的数据结构&#xff0c;各有优缺点&#xff0c;适用于不同的场景。 ### 顺序表&#xff08;数组&#xff09; 顺序表在内存中连续存储元素&#xff0c;支持随机访问。 **优点&#xff1a;** 1. **随机访问**&#xff1a;通过索引直接访问元素&#xf…

osgEarth安装总结

第一步&#xff1a;安装OSG 直接通过git下载源码&#xff0c;使用cmake进行编译&#xff0c; git clone --depth 1 https://github.com/openscenegraph/OpenSceneGraph.git mkdir build cd build cmake .. make sudo make isntall编译过程中缺什么库&#xff0c;就安装什么库 …

网络安全-使用DeepSeek来获取sqlmap的攻击payload

文章目录 概述DeepSeek使用创建示例数据库创建API测试sqlmap部分日志参考 概述 今天来使用DeepSeek做安全测试&#xff0c;看看在有思路的情况下实现的快不快。 DeepSeek使用 我有一个思路&#xff0c;想要测试sqlmap工具如何dump数据库的&#xff1a; 连接mysql数据库&#…

25物理学研究生复试面试问题汇总 物理学专业知识问题很全! 物理学复试全流程攻略 物理学考研复试调剂真题汇总

正在为物理考研复试专业面试发愁的你&#xff0c;是不是不知道从哪开始准备&#xff1f; 学姐告诉你&#xff0c;其实物理考研复试并没有你想象的那么难&#xff01;只要掌握正确的备考方法&#xff0c;稳扎稳打&#xff0c;你也可以轻松拿下高分&#xff01;今天给大家准备了…

KTV点歌系统

收藏关注不迷路&#xff01;&#xff01; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff08;免费咨询指导选题&#xff09;&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;希望帮助更多…

开源绝版经典小游戏合集

随着生活节奏的日益加快&#xff0c;我们常常需要一些小游戏来缓解疲惫的身心。过去&#xff0c;Windows 7自带的扫雷、蜘蛛纸牌等小游戏深受大家喜爱&#xff0c;但随着系统的更新换代&#xff0c;这些经典游戏逐渐淡出了人们的视野。我也曾花费不少时间寻找这些游戏&#xff…

【AI Coding】Windsurf:【Prompt】全局规则与项目规则「可直接使用」

先看效果 这是在windsurf中与ai对话的反馈 为什么要写这个规则&#xff08;Prompt&#xff09; 写的这份针对windsurf的全局规则&#xff0c;详细的涵盖了前端的各个方向&#xff1a;技术栈、测试、工程、性能优化、回答规范 通过提前预设一些关键词&#xff0c;可以提高回答…

传输层协议TCP

TCP全称为 传输控制协议(Transmission Control Protocol)&#xff0c;就是要对数据的传输进行一个详细的控制。 TCP协议段格式 源端口&#xff1a;发送方的端口号&#xff0c;用来标识发送端的应用程序或进程。 目标端口&#xff1a;接收方的端口号&#xff0c;用来标识接收端…

SpringBoot 日志 与 门面模式(外观模式)

日志的使用 先引入日志对象&#xff0c;注意是 引入的是 org.slf4j 这个包下的 Logger 在传参上&#xff1a;可以传入类名&#xff0c;或者一个字符串&#xff0c;该参数表示日志名称 例如如果传入 “aaaa”&#xff0c;那么日志的名称就是 aaaa RequestMapping("/log&…

【MySQL篇】数据类型

目录 前言&#xff1a; 1&#xff0c;数据类型的分类 ​编辑 2 &#xff0c;数值类型 2.1 tinyint类型 2.2 bit类型 2.3 小数类型 2.3.1 float类型 2.3.2 decimal类型 3&#xff0c;字符串类型 3.1 char 3.2 varchar 3.3 char与varchar的比较 3.4日期和时间类型 3.5 …

网络类型及数据链路层协议

网络类型的分类&#xff1a; p2p----point to point---点到点网络MA---Multi-Access---多点接入网络 BMA--- Broadcast Multi-Access Network ---广播型多点接入网络NBMA--- Non-Broadcast Multi-Access Network ---非广播型多点接入网络 数据链路层协议&#xff1a; MA网络…

序列化选型:字节流抑或字符串

序列化既可以将对象转换为字节流&#xff0c;也可以转换为字符串&#xff0c;具体取决于使用的序列化方式和场景。 转换为字节流 常见工具及原理&#xff1a;在许多编程语言中&#xff0c;都有将对象序列化为字节流的机制。例如 Python 中的 pickle 模块、Java 中的对象序列化…

企业微信里可以使用的企业内刊制作工具,FLBOOK

如何让员工及时了解公司动态、行业资讯、学习专业知识&#xff0c;并有效沉淀企业文化&#xff1f;一份高质量的企业内刊是不可或缺的。现在让我来教你该怎么制作企业内刊吧 1.登录与上传 访问FLBOOK官网&#xff0c;注册账号后上传排版好的文档 2.选择模板 FLBOOK提供了丰富的…

Java 大视界 -- Java 大数据在智能安防入侵检测与行为分析中的应用(108)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

Spring IoC

前言: 我们介绍下Spring. 通过前⾯的学习, 我们知道了Spring是⼀个开源框架, 他让我们的开发更加简单. 他⽀持⼴泛的应⽤场景, 有着活跃⽽庞⼤的社区, 这也是Spring能够⻓久不衰的原因. 这么说可能还是很抽象.用一句话概括就是Spring就是一个包含了众多工具和方法的IoC容器. 所…