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
  • 專案
  • 專案
  • 專案