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 以三個主要階段運作:

  1. 取得:解析 Python 字節碼,將模型轉換為線性 Python 程式(其中介表示)。
  2. 轉換:對此 IR 應用一組轉換,以處理分散式運算、改變數值精度或修改計算圖。
  3. 執行:將結果的追蹤路由至各種執行器,包括融合引擎(如 NVFusertorch.compile)、專用函式庫(cuDNN SDPA、TransformerEngine)、自訂 Triton/CUDA 內核,或標準的 PyTorch 急速操作。

適用對象

適用於需要最大化 PyTorch 模型效能的開發者與研究人員,特別是那些在 NVIDIA 硬體(包含 Blackwell)上處理 LLM 或其他大型模型的人,以及希望以可檢視且可擴展的方式應用量化、混合精度與分散式策略的人。

主要亮點

  • 效能提升:可使 PyTorch 模型運行速度提升高達 40%。
  • 靈活精度:支援 FP4、FP6、FP8 以及混合精度策略。
  • 分散式擴展:內建支援張量平行(TP)、流水線平行(PP)與資料平行(DP)。
  • 可檢視的 IR:使用 Python 風格的中介表示,允許使用者對運算進行效能分析、映射至內核,並互動式檢查程式。
  • 可組合的配方:可將優化打包為配方,方便在不同模型家族之間移植。
  • 支援 CUDAGraphs:包含透過 CUDAGraphs 減少 CPU 開銷的外掛。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案