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.pswp.cn/bicheng/72163.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72163.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72163.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTTP學習——————(四)TLS等加密算法

前文學習&#xff1a; 一、二、三 學習來源網站 &#xff1a; 極客時間 TLS 目的&#xff1a;身份驗證、保密性、完整性 解決問題&#xff1a; Record記錄協議——對稱加密 Handshake握手協議———1.驗證通訊雙方身份 2.交換加解密安全套件 3.協商加密參數 有密鑰交換算法…

FastExcel vs EasyExcel vs Apache POI:三者的全面對比分析

一、核心定位與歷史沿革 Apache POI&#xff08;1990s-&#xff09; 作為Java生態中最古老的Excel處理庫&#xff0c;提供對.xls/.xlsx文件的全功能支持。其核心價值在于對Excel規范的完整實現&#xff0c;包括單元格樣式、公式計算、圖表操作等深度功能。但存在內存消耗大&…

辛格迪客戶案例 | 鼎康生物電子合約系統(eSign)項目

01 案例企業 鼎康(武漢)生物醫藥有限公司于2013年06月19日成立 &#xff0c;是一家總部位于湖北武漢的CDMO公司&#xff0c;堅持以客戶為中心&#xff0c;以及時、經濟和高質量為服務導向。鼎康生物擁有先進的150,000平方英尺的生產廠房&#xff0c;生產設施位于中國武漢的Bio…

multer 依賴詳解

multer 是一個用于處理 multipart/form-data 類型表單數據的 Node.js 中間件&#xff0c;主要用于文件上傳。它基于 busboy 構建&#xff0c;使用起來非常方便。 一、安裝 npm install multer 二、基本使用 const express require("express");const multer req…

點云配準技術的演進與前沿探索:從傳統算法到深度學習融合(4)

4、點云配準面臨的挑戰與應對策略 4.1 點云配準面臨的主要挑戰 在點云配準的實際應用中&#xff0c;盡管已經取得了顯著的研究成果&#xff0c;但仍然面臨著諸多復雜而嚴峻的挑戰&#xff0c;這些挑戰嚴重制約了點云配準技術在更多領域的廣泛應用和深入發展。 在自動駕駛場景…

PostgreSQL10 物理流復制實戰:構建高可用數據庫架構!

背景 PostgreSQL 10 在高可用架構中提供了物理復制&#xff0c;也稱為流復制&#xff08;Streaming Replication&#xff09;&#xff0c;用于實現實例級別的數據同步。PostgreSQL 復制機制主要包括物理復制和邏輯復制&#xff1a;物理復制依賴 WAL 日志進行物理塊級別的同步&…

?算法OJ?位操作實戰【計數】(C++ 實現)

191. Number of 1 Bits Given a positive integer n, write a function that returns the number of set bits in its binary representation (also known as the Hamming weight). int hammingWeight(uint32_t n) {int count 0;while (n) {count n & 1; // 檢查最低位…

從二維隨機變量到多維隨機變量

二維隨機變量 設 X X X和 Y Y Y是定義在同一樣本空間 Ω \varOmega Ω上的兩個隨機變量&#xff0c;稱由它們組成的向量 ( X , Y ) (X, Y) (X,Y)為二維隨機變量&#xff0c;亦稱為二維隨機向量&#xff0c;其中稱 X X X和 Y Y Y是二維隨機變量的分量。 采用多個隨機變量去描述…

RabbitMQ系列(一)架構解析

RabbitMQ 架構解析 RabbitMQ 是一個基于 AMQP 協議的開源消息中間件&#xff0c;其核心架構通過多組件協作實現高效、可靠的消息傳遞。以下是其核心組件與協作流程的詳細說明&#xff1a; 一、核心組件與功能 Broker&#xff08;消息代理服務器&#xff09; RabbitMQ 服務端核…

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_list_init

ngx_list_init 定義在 src\core\ngx_list.h static ngx_inline ngx_int_t ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n, size_t size) {list->part.elts ngx_palloc(pool, n * size);if (list->part.elts NULL) {return NGX_ERROR;}list->par…

Linux切換Python版本

1、更新apt sudo apt update2、查詢python安裝路徑 which python 或者which python33、查詢安裝版本 # 查看所有以 "python" 開頭的命令&#xff08;包括版本號&#xff09; ls -l 安裝路徑* 例如 ls -l /usr/bin/python*4、修改軟連接 udo unlink /usr/bin/pyt…

Spring Cloud之注冊中心之Nacos的使用

目錄 Naacos 服務注冊/服務發現 引?Spring Cloud Alibaba依賴 引入Nacos依賴 引入Load Balance依賴 配置Nacos地址 服務端調用 啟動服務 Naacos Nacos是Spring Cloud Alibaba的組件, Spring Cloud Alibaba遵循Spring Cloud中定義的服務注冊, 服務發現規范. 因此使?Na…

使用通義萬相Wan2.1進行視頻生成

使用通義萬相Wan2.1進行視頻生成 源代碼準備運行環境準備創建Python虛擬環境并激活安裝依賴包 模型下載生成視頻官網的視頻生成例子簡單描述場景視頻生成示例詳細描述場景視頻生成示例 最近通義萬相開源了其視頻生成模型。模型有兩個版本&#xff0c;一個是1.3B的&#xff0c;一…

鴻蒙HarmonyOS 開發簡介

鴻蒙開發入門教程 一、技術簡介 鴻蒙操作系統&#xff08;HarmonyOS&#xff09;是面向萬物互聯時代的全場景分布式操作系統&#xff0c;具備分布式軟總線、分布式數據管理、分布式任務調度等核心能力&#xff0c;能讓設備間實現無縫連接與協同&#xff0c;為用戶提供統一、流…

docker和containerd從TLS harbor拉取鏡像

私有鏡像倉庫配置了自簽名證書&#xff0c;https訪問&#xff0c;好處是不需要處理免費證書和付費證書帶來的證書文件變更&#xff0c;證書文件變更后需要重啟服務&#xff0c;自簽名證書需要將一套客戶端證書存放在/etc/docker/cert.d目錄下&#xff0c;或者/etc/containerd/c…

linux ununtu通過nginx-1.6.2.tar.gz安裝nginx并安裝在自定義目錄XXX下 的步驟

Ubuntu 下通過源碼安裝 Nginx 1.6.2 到自定義目錄 /home/aot/nginx 的步驟 以下是將 Nginx 1.6.2 源碼包離線安裝到自定義目錄的詳細流程&#xff0c;包含依賴管理、編譯配置和服務管理&#xff1a; 一、準備工作 1. 下載源碼包和依賴&#xff08;需聯網環境準備&#xff09;…

C++ 變量的輸入輸出教程

一、變量的基本概念 在 C 中&#xff0c;變量是用于存儲數據的命名內存位置。在使用變量之前&#xff0c;需要先聲明它的類型和名稱&#xff0c;這樣編譯器才能為其分配適當大小的內存空間。例如&#xff1a; int age; // 聲明一個整型變量 age double salary; // 聲明一個…

React底層常見的設計模式

在React中&#xff0c;常見的設計模式為開發者提供了結構化和可重用的解決方案&#xff0c;有助于提高代碼的可維護性和可擴展性。以下是對React中幾種常見設計模式的詳細解析&#xff0c;并附上示例代碼和注釋&#xff1a; 1. 容器組件與展示組件模式&#xff08;Container/P…

【MATLAB例程】三維下的IMM(交互式多模型),模型使用CV(勻速)和CA(勻加速)

給出三維下的交互式多模型&#xff08;IMM&#xff09;matlab例程&#xff0c;模型使用勻速運動CV和勻加速運動CA&#xff0c;濾波使用EKF&#xff08;擴展卡爾曼濾波&#xff09; 文章目錄 代碼運行結果程序結構 代碼講解模型定義&#xff1a;軌跡生成&#xff1a;IMM核心流程…

物理內存組織與分配的核心概念

在 Linux 內核內存管理&#xff08;尤其是 Buddy System 伙伴系統&#xff09;中&#xff0c;node、zone、type 和 order 是描述物理內存組織與分配的核心概念。以下是它們的詳細解釋&#xff1a; 1. Node&#xff08;NUMA 節點&#xff09; 定義&#xff1a; 在 NUMA&#xf…