AI News HubLIVE
站内改写

mKernel:多GPU、多節點融合核心庫,實現GPU驅動通訊

加州大學伯克利分校UCCL團隊釋出mKernel,將節點內NVLink、節點間RDMA和密集計算融合到單個持久CUDA核心中,旨在減少AI工作負載中的通訊開銷。研究顯示通訊可佔用前向傳播43.6%和訓練總時間32%的時間。mKernel提供五種融合核心,支援ConnectX-7和AWS EFA後端。

文章情報

工程師進階

要點

  • mKernel將節點內NVLink、節點間RDMA和計算融合到單個持久CUDA核心中
  • 通訊開銷在MoE模型中最高可佔執行時間的47%
  • 提供五種融合核心:AllGather+GEMM、GEMM+AllReduce、MoE Dispatch+GEMM、Ring Attention和GEMM+ReduceScatter
  • 基於libibverbs實現GPU發起的RDMA,不依賴NCCL或NVSHMEM

為什麼重要

這條新聞值得關注,因為mKernel將節點內NVLink、節點間RDMA和計算融合到單個持久CUDA核心中。

技術影響

可能影響模型選型、推理成本、產品能力和評測基準。

GPU通訊開銷是生產級AI工作負載中可衡量的瓶頸。根據mKernel專案引用的資料,通訊可佔用前向傳播的43.6%和端到端訓練時間的32%。在流行的混合專家(MoE)模型中,裝置間通訊可佔總執行時間的47%。加州大學伯克利分校的UCCL專案團隊釋出了mKernel,這是一個持久CUDA核心庫,將節點內NVLink通訊、節點間RDMA和計算融合到單個核心中。

問題:主機驅動通訊

多GPU通訊的標準模型是主機驅動的:CPU執行控制路徑並呼叫NCCL或NVSHMEM等庫。該庫發出跨GPU的集合操作(如AllReduce、AllGather等)。計算和通訊在獨立的CUDA流上執行,並在核心邊界處重疊。

研究團隊指出該方法的兩個問題:

(1)CPU未隨GPU計算能力擴充套件。GB300 NVL72機架整合了72個Blackwell Ultra GPU和36個Grace CPU,提供720 PFLOP/s FP8/FP6、1.44 EFLOP/s FP4 Tensor Core效能和130 TB/s的全對全機架內NVLink頻寬。在這些速度下,微秒級的主機編排開銷(如cudaLaunchKernel呼叫、CPU側“所有寫入完成”檢查、流間事件)直接表現為流水線氣泡。

(2)主機驅動系統在粗粒度核心邊界處重疊計算和通訊。無法從主機側實現瓦片或塊級別的細粒度重疊。

替代方案是GPU驅動通訊:GPU自身觸發傳輸,通訊與計算融合到同一核心中。大多數現有的融合核心庫在單個節點或單個GPU內執行。mKernel針對多節點情況。

mKernel的功能

mKernel是一個持久CUDA核心庫。每個核心將節點內NVLink通訊、節點間RDMA和密集計算融合到單個核心中。

  • 多GPU+多節點,一個核心:節點內NVLink和節點間RDMA都位於同一持久核心內。
  • 細粒度核心內重疊:計算和通訊在瓦片/塊粒度上重疊,涵蓋節點內和節點間GPU通訊。
  • 持久核心與SM專用化:CTA自行分配角色:計算、內部通訊、傳送、歸約。每個角色專用的SM數量可按形狀調整。
  • 基於libibverbs的GPU驅動網路:mKernel使用GPU發起的RDMA寫入,不依賴NCCL或NVSHMEM。通訊後端從頭編寫以最大化效能並支援異構網路裝置。

五種融合核心

| 核心 | 融合內容 | 描述 | |------|----------|------| | AllGather + GEMM | AllGather → GEMM | 每個rank持有A的一個分片。當rank透過NVLink/RDMA收集其他rank的分片時,本地GEMM在瓦片到達時立即消費。 | | GEMM + AllReduce | GEMM → AllReduce | 在單次啟動中計算C = A @ B並跨所有rank歸約部分輸出。輸出瓦片一旦產生就被推入歸約樹。 | | MoE Dispatch + GEMM | All-to-All分發 → 分組GEMM | 將MoE令牌路由到其專家rank(節點內NVLink + 節點間all-to-all),並在同一核心中執行按專家分組的GEMM。令牌到達後立即處理,無需暫存緩衝區往返。 | | Ring Attention | Ring KV交換 → FlashAttention | 跨rank的序列並行注意力。每一步在環上旋轉KV塊,同時本地FlashAttention消費先前接收的塊。計算和環傳送/接收在單個持久核心內併發執行。 | | GEMM + ReduceScatter | GEMM → ReduceScatter | 計算C = A @ B並對輸出進行reduce-scatter。每個輸出瓦片一旦產生就被歸約並轉發到其所屬的rank。 |

評估設定

研究團隊在兩個2節點×8-H200叢集上評估mKernel,它們僅在節點間網路方面不同:

  • AWS EFA:2節點×8 H200,節點內NVLink,節點間AWS EFA/SRD,每節點16×200 Gb/s EFA。
  • ConnectX-7:2節點×8 H200,節點內NVLink,節點間InfiniBand,每節點8×400 Gb/s NVIDIA ConnectX-7。

mKernel與NCCL、Triton-distributed、Flux、Mercury、MagiAttention、Transformer-Engine和ring-flash-attention進行了基準測試。團隊指出更大規模的基準測試仍在進行中。

後端與要求

mKernel支援兩個網路後端:

| 後端 | 宏 | 傳輸 | 執行環境 | |------|------|------|----------| | CX7 | INTERNODE_BACKEND_IBVERBS | libibverbs RC | ConnectX-7 / InfiniBand / RoCE | | EFA | INTERNODE_BACKEND_EFA | libibverbs + efadv (SRD) | AWS p5/p5e (H200, EFA) |

兩個後端共享相同的主機側API和相同的GPU核心。僅代理/會話實現不同(CX7使用session.h,EFA使用session_efa.h)。要求:NVIDIA Hopper GPU(預設構建目標sm_90a)、CUDA 12.9、帶有PyTorch的Python。CX7後端需要libibverbs開發標頭檔案和庫。EFA後端需要AWS EFA安裝,包含libfabric、libibverbs、efadv,預設EFA_HOME=/opt/amazon/efa。

路線圖與關鍵要點

mKernel目前提供五種融合核心,支援ConnectX-7和AWS EFA後端。未來計劃包括:

  • 完整異構加速器/NIC支援,包括拓撲感知發現、放置、路由
  • 節點間megakernel:將多個融合步驟摺疊成一個覆蓋transformer層的單個megakernel
  • Blackwell GPU支援

關鍵要點:

  • mKernel將節點內NVLink、節點間RDMA和計算融合到單個持久CUDA核心中。
  • 根據引用資料,MoE模型中通訊開銷最高佔執行時間的47%。
  • 包含五種核心:AllGather+GEMM、GEMM+AllReduce、MoE Dispatch+GEMM、Ring Attention和GEMM+ReduceScatter。
  • GPU發起的RDMA直接透過libibverbs實現,不依賴NCCL或NVSHMEM。
  • 目前需要Hopper GPU(sm_90a)和ConnectX-7或AWS EFA網路;Blackwell支援已在路線圖中。

更多詳情請檢視倉庫和技術細節。