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卡) | NVLink | 153 GB/s |
| 跨节点(64卡) | RDMA | 46 GB/s |
低延迟模式(推理生成)
| 专家数 | 延迟 | RDMA 带宽 |
|---|---|---|
| 8 | 163 μs | 46 GB/s |
| 128 | 192 μs | 39 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. 环境要求
| 组件 | 版本要求 |
|---|---|
| GPU | Hopper 架构(H100/H800) |
| Python | 3.8+ |
| CUDA | 12.3+ |
| PyTorch | 2.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
注意事项
- 硬件限制:目前仅支持 Hopper 架构 GPU
- PTX 指令:使用未公开指令 ld.global.nc.L1::no_allocate 实现极致性能,可通过 DISABLE_AGGRESSIVE_PTX_INSTRS=1 禁用
- 缓冲区管理:低延迟模式需预留更大 RDMA 缓冲区
开源生态
- GitHub Star:开源 3 小时即破 2k
- 生态整合:vLLM 等框架正在适配
- 许可证:核心代码 MIT 许可,NVSHMEM 部分遵循 NVIDIA SLA
参考引用:
- Github - DeepEP
- 开源周第二天 - DeepEP
- DeepEP 详解,GPU压榨计划启动!
- DeepSeek开源周第二天-DeepEP
-
DeepSeek最新开源DeepEP技术深入分析
专业术语解释
- 混合专家模型(Mixture-of-Experts, MoE)
一种将复杂任务分配给多个专家模块进行处理的模型架构。类似于一个大型项目被分解给多个专业团队分别完成。 - 专家并行(Expert Parallelism, EP)
一种在模型训练中多个专家模块同时进行计算的模式。类似于多个工作小组同时开展不同部分的工作。 - 非对称通信场景
指通信双方在数据传输量、传输方向或性能要求等方面存在差异的情况。类似于两人交流时一方说得多另一方说得少。 - NVLink
用于节点内 GPU 互联的高速通信技术,具有高带宽。类似于房间内不同家具之间的快速通道。 - RDMA
一种跨节点 GPU 互联的通信技术。类似于不同房间之间的快捷通道。 - 数据转发路径优化
对数据传输的路径进行改进以提高效率和减少浪费。类似于优化物流运输的路线。 - FP8 分发 + BF16 合并
数据分发和合并时采用的不同精度格式,以平衡精度和资源占用。类似于根据物品的重要性选择不同大小的盒子来装。 - 通信-计算重叠
让数据通信和计算过程同时进行,以提高效率。类似于一边做饭一边收拾厨房。 - 分层通信模型
将通信过程分为不同层次进行处理和优化的模型。类似于把一个大工程分为不同的施工阶段。 - 双缓冲机制
使用两个缓冲区交替工作来提高数据传输效率。类似于两个工人交替工作,一个工作时另一个准备。 - SM 资源
指 GPU 中的流多处理器(Streaming Multiprocessor)相关的资源。类似于工厂里的生产车间资源。
DeepEP 的推出标志着 MoE 训练进入新纪元。通过硬件级通信优化,它成功将 GPU 集群的潜力压榨到极致——正如网友所言:"这才是真正的 GPU 起飞!"。随着生态的完善,我们有理由期待更多千亿级模型将借此突破训练效率的边界。
相关文章:
DeepSeek开源周Day2:DeepEP - 专为 MoE 模型设计的超高效 GPU 通信库
项目地址:https://github.com/deepseek-ai/DeepEP 开源日历:2025-02-24起 每日9AM(北京时间)更新,持续五天 (2/5)! 引言 在大模型训练中,混合专家模型(Mixture-of-Experts, MoE)因其动…...
51单片机-串口通信编程
串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制盒中断控制。具体步骤如下: 确定T1的工作方式(编程TMOD寄存器)计算T1的初值,装载TH1\TL1启动T1(编程TCON中的TR1位…...
python实现基于文心一言大模型的sql小工具
一、准备工作 注册与登录: 登录百度智能云千帆控制台,注册并登录您的账号。 创建千帆应用: 根据实际需求创建千帆应用。创建成功后,获取AppID、API Key、Secret Key等信息。如果已有千帆应用,可以直接查看已有应用的AP…...
deepseek 导出导入模型(docker)
前言 实现导出导入deepseek 模型。deepseek 安装docker下参考 docker 导出模型 实际生产环境建议使用docker-compose.yml进行布局,然后持久化ollama模型数据到本地参考 echo "start ollama" docker start ollama#压缩容器内文件夹,然后拷贝…...
前言:什么是大模型微调
一、大模型微调的基础知识 1. 什么是大模型微调? 大模型微调(Fine-tuning)是指在预训练模型的基础上,针对特定的任务或数据集进行进一步训练的过程。预训练模型通常在大规模的通用数据上训练,具备广泛的语言理解和生…...
TCPDF 任意文件读取漏洞:隐藏在 PDF 生成背后的危险
在网络安全的世界里,漏洞就像隐藏在黑暗中的“定时炸弹”,稍有不慎就会引发灾难性的后果。今天,我们要聊的是一个与 PDF 生成相关的漏洞——TCPDF 任意文件读取漏洞。这个漏洞可能让攻击者轻松读取服务器上的敏感文件,甚至获取整个…...
unity学习53:UI的子容器:面板panel
目录 1 UI的最底层容器:canvas 1.1 UI的最底层容器:canvas 1.2 UI的合理结构 2 UI的子容器:面板panel 2.1 创建panel 2.2 面板的本质: image ,就是一个透明的图片,1个空容器 3 面板的属性 4 面板的…...
水环境水质在线监测系统解决方案
在当今社会,水资源作为人类生存和发展的基础性资源,其质量的优劣直接关系到生态平衡、人类健康以及社会经济的可持续发展。然而,随着工业化、城市化的快速推进,各类污染物不断排入水体,导致水环境面临严峻挑战。水环境…...
HBuilder X中,uni-app、js的延时操作及定时器
完整源码下载 https://download.csdn.net/download/luckyext/90430165 在HBuilder X中,uni-app、js的延时操作及定时器可以用setTimeout和setInterval这两个函数来实现。 1.setTimeout函数用于在指定的毫秒数后执行一次函数。 例如, 2秒后弹出一个提…...
BigDecimal线上异常解决方案:避免科学计数法输出的坑
文章目录 问题背景为什么BigDecimal会输出科学计数法?线上异常场景场景1:数据传递异常场景2:日志记录异常场景3:数据存储异常 解决方案1. 使用toPlainString()方法2. 设置格式化输出3. 自定义工具类 代码示例总结 在Java开发中&am…...
【C语言】指针笔试题
前言:上期我们介绍了sizeof与strlen的辨析以及sizeof,strlen相关的一些笔试题,这期我们主要来讲指针运算相关的一些笔试题,以此来巩固我们之前所学的指针运算! 文章目录 一,指针笔试题1,题目一…...
深入理解Redis:数据类型、事务机制及其应用场景
在当今快速发展的技术领域中,Redis作为一种高性能的内存数据库,已经被广泛应用于各种场景,从简单的缓存实现到复杂的数据处理任务。其灵活性和高效性主要来源于对多种数据结构的支持以及强大的功能特性,如事务处理、持久化选项、高…...
RGMII(Reduced Gigabit Media Independent Interface)详解
一、RGMII的定义与作用 RGMII(精简版千兆介质无关接口)是一种用于千兆以太网(1Gbps)的高效接口标准,旨在减少传统GMII接口的引脚数量,同时保持相同的传输速率。其核心作用包括: 减少引脚数量&a…...
学习Flask:Day 1:基础搭建
学习目标:完成第一个Flask应用 # app.py from flask import Flask app Flask(__name__)app.route(/) def home():return <h1>Hello Flask!</h1>app.route(/api/greet/<name>) def greet(name):return {message: fHello {name}!}if __name__ __…...
XTOM工业级蓝光三维扫描仪在笔记本电脑背板模具全尺寸检测中的高效精准应用
——某3C精密制造企业模具优化与质量管控案例 镁合金具有密度小、强度高、耐腐蚀性好等优点,成为笔记本电脑外壳主流材料。冲压模具作为批量生产笔记本电脑镁合金背板的核心工具,其精度直接决定了产品的尺寸一致性、结构可靠性与外观品质。微米级模具误…...
网络安全 机器学习算法 计算机网络安全机制
(一)网络操作系统 安全 网络操作系统安全是整个网络系统安全的基础。操作系统安全机制主要包括访问控制和隔离控制。 访问控制系统一般包括主体、客体和安全访问政策 访问控制类型: 自主访问控制强制访问控制 访问控制措施: 入…...
分享些常用的工具类
一、照片 1、Unsplash:https://unsplash.com/ 2、pixabay:https://pixabay.com/zh/ 二、壁纸 1、Wallpaper Engine 2、wallhaven:https://wallhaven.cc/ 3、极简壁纸:https://bz.zzzmh.cn/ 三、AI语音 1、微软Azure项目&…...
VUE四:Vue-cli
什么是Vue-cli vue-cli是官方提供的一个脚手架,用于快速生成一个vue的项目模板; 预先定义好的目录结构及基础代码,就好比咱们在创建 Maven项目时可以选择创建一个骨架项目,这个骨架项目就是脚手架,我们的开发更加的快速; 什么是web pack 本质上&#…...
以下是自定义针对 Vite + TypeScript 项目的完整路径别名配置流程:
以下是针对 Vite TypeScript 项目的完整路径别名配置流程: 1. 安装必要依赖 bash npm install -D types/node 2. 配置 vite.config.ts typescript // vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue import path from pat…...
LangGraph系列教程:基于状态构建上下文感知的AI系统
本文深入探讨LangGraph中的“状态”概念及其在AI工作流中的核心作用。通过基础状态(如计数器)和复杂状态(含消息历史)的定义,结合代码示例,演示如何通过函数式编程实现状态的不可变修改。然后进一步解析了如…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
