概要
- LLM推論の高速化 を目的とした 自動メガカーネル生成コンパイラMPK の紹介
- 従来手法の課題 (カーネル起動回数・通信分断)を 統合カーネル化で解決
- 単一・複数GPU環境両対応、最大6.7倍のレイテンシ短縮を実現
- タスクグラフ変換とメガカーネル実行 による高効率化
- 今後の展望 として最新GPU対応や動的ワークロードへの拡張を計画
LLM推論を高速化するメガカーネル自動生成コンパイラ「MPK」
- LLM(大規模言語モデル)推論のボトルネック は、複数のGPUカーネル起動や外部通信による ハードウェア非効率
- MPK は、これらの計算・通信を 単一メガカーネル に自動統合する コンパイラ兼ランタイムシステム
- Python数十行でLLMをメガカーネルに変換 可能、開発者の負担を大幅軽減
- カーネル起動オーバーヘッド排除、 計算・通信の重畳実行、 細粒度ソフトウェアパイプライニング を実現
- 単一GPUでも既存最適化実装より低レイテンシ、 GPU数増加で効果拡大
メガカーネル化の意義とMPKの優位性
- 単一カーネル起動 でモデル全体(計算・通信)を連続実行する「 メガカーネル設計」
- カーネル起動オーバーヘッド排除、 多層パイプライニング、 計算・通信重畳 による 最大6.7倍高速化 (マルチGPU時)
- 既存MLフレームワーク(PyTorch/Triton/TVM等)では統合カーネル生成不可
- 多様な専用カーネル(NCCL/FlashInfer等)の統合困難性 を 自動化 で解決
MPKコンパイラ:LLM計算グラフの最適タスクグラフ化
- LLM計算は計算グラフ(ノード=演算・通信、エッジ=依存関係)で表現
- 従来は各演算ごとにGPUカーネルを個別起動 → パイプライニング機会損失
- MPKは計算グラフを細粒度タスクグラフに自動変換
- 各タスク=GPU SM単位の計算・通信処理
- イベント=タスク間同期点
- タスクとイベントの依存関係を明示し 最大限の並列・重畳実行 を引き出す
- 部分的出力依存の通信(例:matmul→allreduce)を即時実行可能
- Mirageカーネルスーパーオプティマイザ による各タスクの高効率CUDA実装自動生成
MPKランタイム:タスクグラフのメガカーネル内実行
- GPU上で全タスクグラフを単一メガカーネル内で実行
- SM(ストリーミングマルチプロセッサ)をワーカーとスケジューラに静的割当
- ワーカー :各SMでタスクキューを順次実行し、完了時にイベント通知
- スケジューラ :アクティベート済イベントを検出し、依存タスクを起動
- 全体の同期・タスク遷移をカーネル内で完結 → タスク間オーバーヘッド1–2μs
- イベント駆動型実行 で計算・通信の重畳や多層パイプライニングを実現
- マルチGPUでも通信・計算の完全な重畳が可能
今後の展望と課題
- 最新GPUアーキテクチャ(NVIDIA Blackwell等)対応
- ワープ特化最適化 とメガカーネルモデルの統合が課題
- 動的ワークロード(Mixture-of-Experts等)対応
- 静的タスクグラフ から 動的制御フロー・条件分岐対応 への拡張を開発中
- 高度なスケジューリング・タスク割当
- 優先度・スループット最適化 等の応用(SLO対応推論やハイブリッドバッチ処理)
コミュニティへの呼びかけと情報源
- MPKはLLM推論基盤の新たなパラダイムシフト
- コード・ドキュメント・詳細情報 は公式GitHub(https://github.com/mirage-project/mirage)を参照
- フィードバック・コントリビューション・共同研究を歓迎