跳轉到主要內容
部落格

PyTorch 2.5 釋出部落格

作者: 2024 年 10 月 17 日2024 年 11 月 21 日暫無評論

我們很高興地宣佈釋出 PyTorch® 2.5(釋出說明)!此版本為 SDPA 提供了新的 cuDNN 後端,預設情況下為 H100 或更新 GPU 上的 SDPA 使用者提供加速。此外,torch.compile 的區域編譯提供了一種減少 torch.compile 冷啟動時間的方法,允許使用者編譯重複的 nn.Module(例如 LLM 中的 Transformer 層)而無需重新編譯。最後,TorchInductor CPP 後端透過 FP16 支援、CPP 封裝器、AOT-Inductor 模式和 max-autotune 模式等眾多增強功能提供了顯著的效能提升。

自 PyTorch 2.4 以來,此版本包含來自 504 位貢獻者的 4095 次提交。我們衷心感謝我們敬業的社群所做的貢獻。一如既往,我們鼓勵您試用這些功能並報告任何問題,以便我們改進 2.5。有關如何開始使用 PyTorch 2 系列的更多資訊,請訪問我們的入門頁面。

此外,請檢視我們與TorchRecTorchFix一起釋出的新生態系統專案。

Beta原型
SDPA 的 cuDNN 後端FlexAttention
torch.compile 區域編譯無需重新編譯編譯 Autograd
TorchDynamo 添加了對異常處理和 MutableMapping 型別的支援飛行記錄儀
TorchInductor CPU 後端最佳化CPU 上支援 GEMM 模板的 Max-autotune
Windows 上的 TorchInductor
針對 eager 模式和 TorchInductor CPP 後端在 CPU 路徑上支援 FP16
自動載入裝置擴充套件
增強的 Intel GPU 支援

*要檢視完整的公開功能提交列表,請點選此處

BETA 功能

[Beta] SDPA 的 cuDNN 後端

cuDNN“融合 Flash Attention”後端已用於 torch.nn.functional.scaled_dot_product_attention。在 NVIDIA H100 GPU 上,這比 FlashAttentionV2 可提供高達 75% 的加速。對於 H100 或更新 GPU 上 SDPA 的所有使用者,預設啟用此加速。

[Beta] torch.compile 區域編譯無需重新編譯

透過 torch._dynamo.config.inline_inbuilt_nn_modules 進行區域編譯無需重新編譯,該選項在 2.5+ 中預設為 True。此選項允許使用者編譯重複的 nn.Module(例如 LLM 中的 Transformer 層)而無需重新編譯。與編譯完整模型相比,此選項可以縮短編譯延遲,與完整模型編譯相比,效能下降 1%-5%。

有關更多資訊,請參閱教程

[Beta] TorchInductor CPU 後端最佳化

此功能推進了 Inductor 的 CPU 後端最佳化,包括 CPP 後端程式碼生成和帶自定義 CPU 核心的 FX 融合。Inductor CPU 後端支援常見資料型別和所有 Inductor IR 操作的向量化,以及靜態和符號形狀。它與 Linux 和 Windows OS 相容,並支援預設的 Python 封裝器、CPP 封裝器和 AOT-Inductor 模式。

此外,它還擴充套件了 GEMM 模板的 max-autotune 模式(在 2.5 中原型),提供了進一步的效能提升。後端支援各種 FX 融合,可降低為自定義核心,例如用於 Linear/Conv 操作和 SDPA 的 oneDNN。Inductor CPU 後端在三個基準測試套件(TorchBench、Hugging Face 和 timms)中始終實現效能加速,在測試的 193 個模型中,97.5% 的模型優於 eager 模式。

原型功能

[原型] FlexAttention

我們引入了一個靈活的 API,只需幾行慣用的 PyTorch 程式碼即可實現各種注意力機制,例如滑動視窗、因果掩碼和 PrefixLM。此 API 利用 torch.compile 生成融合的 FlashAttention 核心,消除了額外的記憶體分配,並實現了與手寫實現相當的效能。此外,我們使用 PyTorch 的 autograd 機制自動生成反向傳播。此外,我們的 API 可以利用注意力掩碼中的稀疏性,從而顯著優於標準注意力實現。

有關更多資訊和示例,請參閱官方部落格文章Attention Gym

[原型] 編譯 Autograd

編譯 Autograd 是 PT2 棧的擴充套件,允許捕獲整個反向傳播。與 AOT 排程器追蹤的反向圖不同,編譯 Autograd 追蹤被推遲到反向執行時,這使其不受前向傳播圖中斷的影響,並允許它將反向鉤子記錄到圖中。

有關更多資訊,請參閱教程

[原型] 飛行記錄儀

飛行記錄儀是一種新的除錯工具,可幫助除錯卡住的任務。該工具透過在集體執行時持續捕獲有關集體的資訊來工作。一旦檢測到卡住的任務,這些資訊可用於快速識別行為不當的排名/機器以及程式碼堆疊跟蹤。

有關更多資訊,請參閱以下教程

[原型] CPU 上支援 GEMM 模板的 Max-autotune

torch.compile 中 Inductor CPU 後端的 Max-autotune 模式在編譯時分析操作的多種實現並選擇效能最佳的實現。這對於 GEMM 相關操作特別有用,它使用基於 C++ 模板的 GEMM 實現作為使用 oneDNN 和 MKL 庫的基於 ATen 方法的替代方案。我們支援 FP32、BF16、FP16 和 INT8,併為 x86 CPU 提供尾聲融合。我們發現 dynamo 基準測試套件的幾何平均速度提升高達 7%,LLM 推理的下一個 token 延遲提升高達 20%。

有關更多資訊,請參閱教程

[原型] Windows 上的 TorchInductor CPU

torch.compile 中的 Inductor CPU 後端現在可以在 Windows 上執行。我們目前支援適用於 Windows inductor 的 MSVC (cl)、clang (clang-cl) 和 Intel 編譯器 (icx-cl)。

有關更多詳細資訊,請參閱教程

[原型] 針對 eager 模式和 TorchInductor CPP 後端在 CPU 路徑上支援 FP16

Float16 是一種常用的縮減浮點型別,用於提高神經網路推理/訓練的效能。自此版本以來,CPU 路徑上對 eager 和 TorchInductor 都支援 float16。

[原型] 自動載入裝置擴充套件

PyTorch 現在支援對非樹裝置擴充套件的自動載入,透過消除手動匯入的需要來簡化整合。此功能透過 torch.backends 入口點啟用,透過確保無縫擴充套件載入來簡化使用,同時允許使用者在需要時透過環境變數停用它。

有關更多資訊,請參閱教程

[原型] 增強的 Intel GPU 支援

Intel GPU 支援增強現在可用於 Intel® 資料中心 GPU Max 系列和 Intel® 客戶端 GPU(內建 Intel® Arc™ 顯示卡的 Intel® 酷睿™ Ultra 處理器以及用於 dGPU 部件的 Intel® Arc™ 顯示卡),這將使您在 PyTorch 2.5 版本中更輕鬆地加速 Intel GPU 上的機器學習工作流。我們在此版本中還啟用了 PyTorch 在 Windows 上對 Intel® 客戶端 GPU 的初始支援。

  • 擴充套件了 PyTorch 硬體後端支援矩陣,包括 Intel 資料中心和客戶端 GPU。
  • SYCL* 核心的實現,以增強 Intel GPU 上 Aten 運算子的覆蓋範圍和執行,從而提高 PyTorch eager 模式的效能。
  • 增強了 torch.compile 的 Intel GPU 後端,以提高各種深度學習工作負載的推理和訓練效能。

這些功能可透過 PyTorch 預覽版和每晚二進位制 PIP 輪子獲得。有關 Intel GPU 支援的更多資訊,請參閱文件