microsoft/mscclpp
MSCCL++: A GPU-driven communication stack for scalable AI applications
何を解決するか
MSCCL++ は、GPU間通信をより効率的かつカスタマイズ可能にするために設計された GPU ベースの通信スタックです。大規模な AI モデル(特に LLM)における分散 GPU アプリケーションの複雑さとパフォーマンスのボトルネックに対処します。標準的な集約通信ライブラリでは、特定のワークロード(例:LLM 推論におけるプロンプト処理とトークンサンプリングの違い)に対して最適でない場合があります。
仕組み
MSCCL++ は、開発者が GPU カーネル内に直接通信ロジックを定義できる多層抽象化システムを提供します。
- チャンネル: GPU間のピアツーピア接続として「チャンネル」を使用します。ホスト側で定義されますが、GPU カーネル内でデバイス関数として呼び出されます。
- 通信プリミティブ: 1サイド、0コピーの同期および非同期プリミティブ(
put()、get()、signal()、flush()、wait()など)を提供し、リモート側に受信命令が不要な状態でデータを送信できます。 - チャンネルタイプ:
PortChannel(ホスト側プロキシを使用して DMA トランスファをトリガー)とMemoryChannel(GPU スレッドがリモートメモリを直接読み書きして低レイテンシを実現)を提供します。 - 統一インターフェース: ハードウェアの違いを抽象化し、NVLink、xGMI、InfiniBand に関係なく、同じインターフェースを提供します。同じノード内でも異なるノード間でも動作します。
対象ユーザー
高性能な分散 AI アプリケーション、カーネル開発者、スケーラブルな AI インフラを構築する研究者向けです。特に、LLM サービングフレームワーク(例:SGLang、LMDeploy)やディープラーニングコンパイラ(例:TVM)を開発している方々に適しています。
特徴
- GPU駆動型: 通信は GPU カーネル内から直接トリガーおよび管理できます。
- 0コピー転送: ユーザーバッファ間で直接データを転送し、帯域幅とメモリを節約します。
- ハードウェア非依存: ローカルおよびリモートノード間で NVLink、xGMI、InfiniBand に対して統一された抽象化を提供します。
- カスタムプロキシ対応: GPUトリガーの処理を最適化するカスタムホストプロキシをサポートします。
- Pythonバインディング: Pythonベースの AI アプリケーションとの統合を容易にするインターフェースを提供します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト