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