microsoft/mscclpp

MSCCL++: A GPU-driven communication stack for scalable AI applications

解決的問題

MSCCL++ 是一個為 GPU 間通訊設計的 GPU 驅動通訊堆疊,旨在使 GPU 間通訊更加高效且可客製化。它解決了大型 AI 模型(如 LLM)等分散式 GPU 應用中的複雜性與效能瓶頸問題,其中標準的集合通訊函式庫在特定工作負載下(例如 LLM 推論中的提示處理與令牌取樣差異)可能並非最佳選擇。

工作原理

MSCCL++ 提供多層抽象系統,允許開發者在 GPU 內核中直接定義通訊邏輯。

  • 通道:使用「通道」作為 GPU 之間的點對點連接。這些通道在主機端定義,但在 GPU 內核中作為設備函數呼叫。
  • 通訊原語:提供單邊、零複製的同步與非同步原語(如 put()get()signal()flush()wait()),允許資料直接傳送到遠端 GPU,而無需遠端端對應的接收指令。
  • 通道類型:提供 PortChannel(使用主機端代理觸發 DMA 傳輸)與 MemoryChannel(使用 GPU 線程直接讀取/寫入遠端記憶體以實現更低延遲)。
  • 統一介面:抽象底層硬體,無論 GPU 是透過 NVLink、xGMI 或 InfiniBand 連接,或在同一節點或不同節點,皆提供相同的介面。

適用對象

適用於高效率分散式 AI 應用開發者、內核開發者,以及建構可擴展 AI 基礎設施的研究人員,例如開發 LLM 服務框架(如 SGLang、LMDeploy)或深度學習編譯器(如 TVM)的人員。

主要亮點

  • GPU 驅動:通訊可直接從 GPU 內核中觸發與管理。
  • 零複製傳輸:直接在使用者緩衝區之間傳輸資料,節省頻寬與記憶體。
  • 硬體無關:對本地與遠端節點上的 NVLink、xGMI 和 InfiniBand 提供統一抽象。
  • 可客製化代理:支援自訂主機端代理,以優化 GPU 觸發的處理方式。
  • Python 繫結:包含方便與基於 Python 的 AI 應用整合的介面。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案