DeepSeek开源周第二弹发布,第一个用于MoE模型训练和推理的开源EP通信库,发布不到2小时,GitHub Star数达 4.5K。
项目开源地址为:GitHub - deepseek-ai/DeepEP: DeepEP: an efficient expert-parallel communication library
DeepEP是为混合专家(MoE)和专家并行(EP)量身定制的通信库,其提供高吞吐量且低延迟的全对全GPU内核,这些内核也被称为MoE调度与合并。
DeepEP 是一个专为专家混合模型(Mixture-of-Experts, MoE)和专家并行(Expert Parallelism, EP)设计的通信库。它提供了高吞吐量和低延迟的全对全(all-to-all)GPU内核,这些内核也被称为MoE分发(dispatch)和合并(combine)。该库还支持低精度操作,包括FP8。
为了与DeepSeek-V3论文中提出的组限门控算法(group-limited gating algorithm)保持一致,DeepEP 提供了一组针对非对称域带宽转发优化的内核,例如将数据从NVLink域转发到RDMA域。这些内核具有高吞吐量,使其适用于训练和推理预填充任务。此外,它们还支持流式多处理器(Streaming Multiprocessors, SM)数量控制。
对于对延迟敏感的推理解码任务,DeepEP 包含了一组采用纯RDMA的低延迟内核,以最小化延迟。该库还引入了一种基于钩子(hook-based)的通信-计算重叠方法,该方法不占用任何SM资源。
DeepEP 的主要功能与解决的问题
在大模型训练或推理过程中,数据需要在不同的 GPU 之间来回传输,比如:
- 训练时:需要把数据分发给不同的“专家”(Experts),然后再合并计算结果。
- 推理时:需要快速找到合适的专家并获取结果,不能有太多延迟。
普通的 GPU 传输速度有限,特别是多个 GPU 之间的通信会变慢,影响计算效率。DeepEP 就是为了解决这个问题,让数据传输更快、计算更高效,主要通过以下几种方式:
- 让 GPU 之间传输更快
- 优化了 NVLink(同一台机器里的 GPU 传输)和 RDMA(不同机器之间的 GPU 传输,让数据能够更快地在多个 GPU 之间传输,不会卡住。
- 减少推理时的延迟
- 使用特殊的 RDMA 技术,可以显著降低推理过程中的通信延迟,特别适合大模型的实时推理(比如 ChatGPT 这种)。
- 计算和传输可以同时进行
- DeepEP 提供了一种 hook 机制,使 GPU 可以一边计算,一边传输数据,不会让计算任务因为数据传输而被阻塞,不让GPU在后面偷偷摸鱼。
✅ 总结一句话:DeepEP让训练和推理更快,通过优化 GPU 传输、降低推理延迟、并行计算和传输,极大提升大规模 MoE 训练和推理的效率!
具体性能方面
带有NVLink和RDMA转发的常规内核
我们在H800(约160 GB/s NVLink最大带宽)上测试了常规内核,每台设备连接了一个CX7 InfiniBand 400 Gb/s RDMA网卡(约50 GB/s最大带宽)。我们遵循DeepSeek-V3/R1的预训练设置(每批次4096个token,7168个隐藏单元,top-4组,top-8专家,FP8分发和BF16合并)。
纯RDMA的低延迟内核
我们在H800上测试了低延迟内核,每台设备连接了一个CX7 InfiniBand 400 Gb/s RDMA网卡(约50 GB/s最大带宽)。我们遵循典型的DeepSeek-V3/R1生产环境设置(每批次128个token,7168个隐藏单元,top-8专家,FP8分发和BF16合并)。
让广大网友称赞不绝,直呼你们才是真正的OpenAI!!
安装和使用
要用 DeepEP,需要:
- Hopper 架构的 GPU(比如 H100 / H800)
- Python 3.8+
- CUDA 12.3+
- PyTorch 2.1+
- NVLink + RDMA 设备
具体的项目开发和启动可以参见项目官方文档 GitHub - deepseek-ai/DeepEP: DeepEP: an efficient expert-parallel communication library
结语:深度探索开源宇宙DeepSeek还有三弹重磅发布
从带飞GPU推理速度的FlashMLA到开源EP通信库,DeepSeek开源周第二大重磅发布再次点燃AI圈的热情。本周后续,DeepSeek还将开源三个代码库,或许会与AI算法优化、模型轻量化、应用场景拓展等相关,涵盖多个关键领域。
期待接下来的三场技术盛宴,向开源者们致敬!
如果你喜欢本文,欢迎点赞,并且关注我们的微信公众号:Python技术极客,我们会持续更新分享 Python 开发编程、数据分析、数据挖掘、AI 人工智能、网络爬虫等技术文章!让大家在Python 技术领域持续精进提升,成为更好的自己!
添加作者微信(coder_0101),拉你进入行业技术交流群,进行技术交流!!