SandAI-org/MagiCompiler

A plug-and-play compiler that delivers free-lunch optimizations for both inference and training.

何を解決するか

MagiCompilerは、大規模なTransformer系アーキテクチャにおけるメモリのボトルネックとオペレータのオーバーヘッドを解決します。単なる局所的なオペレータ最適化を越えて、データフローとメモリのシステムレベルの調整を提供し、トレーニングおよびマルチモーダル推論の両方で「メモリウォール」の影響を低減します。

仕組み

torch.compile の上に構築されたMagiCompilerは、実行ライフサイクルのグローバルマネージャーとして機能します。推論ではフルグラフキャプチャを使用してカーネルの融合を最大化し、トレーニングではFSDP対応のレイヤー単位のコンパイルにより、クロスオペレーションの融合を可能にしつつ、分散パラメーターシャーディングを透明に保ちます。また、H2D転送を計算と重ねる選択的オフロードポリシーと、計算負荷かメモリ負荷かに基づいて自動的にどの演算を保存するか再計算するかを決定するヒューリスティックなアクティベーション再計算戦略を実装しています。

対象ユーザー

大規模なTransformerモデルを扱う開発者や研究者、特にマルチモーダルフレームワークの実装や分散環境での大規模モデルトレーニングに取り組んでいる人向けです。

主な特徴

  • 統合フレームワーク: 推論(フルグラフキャプチャ)とトレーニング(FSDP対応コンパイル)の両方をサポート。
  • プラグアンドプレイ: @magi_compile@magi_register_custom_op といったシンプルなデコレータを使用して、既存モデルに最小限のコード変更で統合可能。
  • スマートオフロード: メモリ制約のある環境でパイプラインバブルを排除するための組み込み非同期オフロード。
  • 自動再計算: 手動チェックポイントの代わりに、ヒューリスティックベースのアクティベーション再計算によりピークメモリを低減。
  • インスペクションツール: magi_depyf を使用してコンパイルタイムラインやデコンパイルされたバイトコードのフローをデバッグ可能。

関連

  • プロジェクト
  • Dispatch
  • プロジェクト
  • プロジェクト
  • プロジェクト