Lightning-AI/lightning-thunder
PyTorch compiler that accelerates training and inference. Get built-in optimizations for performance, memory, parallelism, and easily write your own.
解決的問題
Thunder 是一個為 PyTorch 設計的源到源編譯器,旨在簡化深度學習模型在訓練與推論方面的優化流程。它透過提供一種透明的方式來應用效能增強,彌補「未優化」的 PyTorch 急速模式與高度優化執行之間的差距,避免傳統編譯器的不透明性。
工作原理
Thunder 以三個主要階段運作:
- 取得:解析 Python 字節碼,將模型轉換為線性 Python 程式(其中介表示)。
- 轉換:對此 IR 應用一組轉換,以處理分散式運算、改變數值精度或修改計算圖。
- 執行:將結果的追蹤路由至各種執行器,包括融合引擎(如
NVFuser或torch.compile)、專用函式庫(cuDNN SDPA、TransformerEngine)、自訂 Triton/CUDA 內核,或標準的 PyTorch 急速操作。
適用對象
適用於需要最大化 PyTorch 模型效能的開發者與研究人員,特別是那些在 NVIDIA 硬體(包含 Blackwell)上處理 LLM 或其他大型模型的人,以及希望以可檢視且可擴展的方式應用量化、混合精度與分散式策略的人。
主要亮點
- 效能提升:可使 PyTorch 模型運行速度提升高達 40%。
- 靈活精度:支援 FP4、FP6、FP8 以及混合精度策略。
- 分散式擴展:內建支援張量平行(TP)、流水線平行(PP)與資料平行(DP)。
- 可檢視的 IR:使用 Python 風格的中介表示,允許使用者對運算進行效能分析、映射至內核,並互動式檢查程式。
- 可組合的配方:可將優化打包為配方,方便在不同模型家族之間移植。
- 支援 CUDAGraphs:包含透過 CUDAGraphs 減少 CPU 開銷的外掛。
相關
- 專案
- 專案
- 專案
- 專案
- 專案