跳轉到主要內容
部落格

PyTorch 2.8 釋出部落格

作者: 2025 年 8 月 6 日暫無評論

PyTorch 2.8 Release

我們很高興宣佈 PyTorch® 2.8 釋出(釋出說明)!此版本包括: 

  • 面向第三方 C++/CUDA 擴充套件的有限穩定 libtorch ABI
  • 在 Intel CPU 上使用原生 PyTorch 進行高效能量化 LLM 推理
  • Wheel 變體,一種釋出平臺相關 wheel 併為給定平臺選擇最合適包變體的機制。注意:此功能處於實驗階段,旨在進入 Python 上游,但相容性不作保證。請分享反饋意見。 
  • 在 ROCm 7 上增加了對新 gfx950 架構的功能支援。具體來說,對於 TorchInductor 和 AOTInductor Composable Kernel 後端,支援 max-autotune 的 (matmul, addmm, conv2d, bmm, _scaled_mm) 模板。
  • 用於編譯和匯出模型的控制流運算子(`cond`、`while_loop`、`scan`、`associative_scan` 和 `map`)。
  • Inductor CUTLASS 後端支援 torch.compile 和 AOTInductor,以及 GEMM(如 mm、fp8 mm、addmm 和 bmm)。

以及更多內容!詳見下文。

自 PyTorch 2.7 以來,此版本由  4164 次提交和 585 位貢獻者組成。我們衷心感謝我們敬業的社群所做的貢獻。一如既往,我們鼓勵您嘗試這些功能並報告任何問題,以便我們改進 2.8。有關 PyTorch 2 系列入門的更多資訊,請訪問我們的 入門頁面。

API-不穩定功能

[API-不穩定] torch::stable::Tensor 

您是否使用或維護帶有 torch 的第三方 C++/CUDA 擴充套件?每當 PyTorch 釋出新版本(例如本次版本)時,您可能需要重新構建所有 wheel。如果這些擴充套件可以依賴一組有限的 API,您就不必再這樣做了!我們已經開始構建有限的穩定 libtorch ABI,現在在 2.8 中,我們提供了用於庫註冊 (STABLE_TORCH_LIBRARY) 和 Tensor 物件 (torch::stable::Tensor) 的 API。依賴於此穩定 API 子集的擴充套件將與 libtorch 穩定,這意味著可以使用一個 torch 版本構建該擴充套件,並使用另一個 torch 版本執行。我們正在繼續擴充套件此穩定有限 API 子集,您可以在此處檢視一個示例 libtorch 穩定擴充套件。 

[API-不穩定] 使用原生 PyTorch 在英特爾 CPU 上實現高效能量化 LLM 推理

LLM 的量化可以節省儲存、記憶體並減少推理延遲,因此它是一種流行的 LLM 部署技術。此功能使用原生 PyTorch 在最新的英特爾 CPU 平臺上提供 LLM 的高效能量化推理。支援的配置包括 A16W8、DA8W8 和 A16W4 等。

torch.compile 量化模型時,我們將量化 GEMM 的模式降低為基於模板的高效能 GEMM 核心,並在 Inductor 中使用 max-autotune。藉助此功能,PyTorch 原生堆疊的效能可以在單個英特爾 CPU 裝置上接近峰值效能,這使 PyTorch 使用者能夠以原生體驗和良好效能執行低精度 LLM 推理。更多詳情可在 RFC中找到。 

[API-不穩定] 實驗性 Wheel 變體支援

當前用於區分 Python Wheel 的機制(即 Python ABI 版本、作業系統、CPU 架構和構建 ID)不足以應對現代硬體多樣性,尤其是對於需要專業化依賴項的環境,例如高效能計算、硬體加速軟體(GPU、FPGA、ASIC 等)等。

此版本引入了 Wheel 變體,這是一種釋出平臺相關 wheel 併為給定平臺選擇最合適包變體的機制。它們包括: 

  • 一個系統,支援同一 Python 包版本的多個 wheel,透過硬體特定屬性進行區分。
  • 一個提供商外掛系統,動態檢測平臺屬性並推薦最合適的 wheel。

此實驗版本附帶自動且透明的 NVIDIA CUDA 平臺檢測,包括 GPU 和 CUDA 驅動程式檢測,併為機器安裝最合適的軟體包。

注意:此功能處於實驗階段(請參閱此處 RFC),旨在進入 Python 上游,但相容性不作保證。請牢記這一點並分享反饋。 有關 PyTorch 封裝未來的更多詳細資訊以及 8 月 14 日的 2.8 釋出即時問答,將在即將釋出的部落格中提供!(請參閱連結)

今天就來試試吧:

Linux x86 和 aarch64,MacOS

curl -LsSf https://astral.sh/uv/install.sh | INSTALLER_DOWNLOAD_URL=https://wheelnext.astral.sh sh

Windows x86: 

powershell -ExecutionPolicy Bypass -c “$env:INSTALLER_DOWNLOAD_URL=‘https://wheelnext.astral.sh’; irm https://astral.sh/uv/install.ps1 | iex

[API-不穩定] Inductor CUTLASS 後端支援 

CUTLASS 是 Nvidia 的一個僅標頭檔案庫,可生成具有靈活融合能力的高效能 GEMM。它包括能夠例項化數千個核心的 GEMM 模板,這些核心可以獨立於問題形狀進行編譯,並在不同形狀下表現出不同級別的效能。

TorchInductor 透過預編譯核心、本地快取它們並進行基準測試,在模型編譯期間為給定問題形狀選擇最佳核心,從而自動化模型中所有 GEMM 的自動調優過程。生成的核心效能卓越,對於某些形狀,在生產工作負載中,bmm 和 fp8 核心的效能比 triton/cublas 高出 10% 和 16%。CUTLASS 後端同時支援 torch.compile 和 AOTInductor,以及 mm、fp8 mm、addmm 和 bmm 等 GEMM。欲瞭解更多資訊,請參閱 PyTorch Compiler YouTube 系列中的此影片

[API-不穩定] Inductor CUDAGraph 圖分割槽

對於僅包含 CUDA 核心的函式,CUDAGraph 可以減少 CPU 啟動開銷,通常能帶來良好的效能。然而,函式中的複雜性可能會阻礙 CUDAGraph 的使用,因為它不支援某些流行的操作(例如,CPU 操作、裝置複製、CUDAGraph 不安全自定義操作)。圖分割槽是一種編譯器解決方案,可以自動拆分這些操作,重新排序操作以減少分割槽數量,並對單個分割槽進行 CUDAGraph 化。

[API-不穩定] `torch.compile` 分層編譯

指示 torch.compile被標記的操作集形成一個巢狀的編譯區域(通常在完整模型中重複),其程式碼可以一次編譯並安全重用。在 torch.compile 跟蹤期間,編譯器將 `nested_compile_region` 應用於分層編譯:它在第一次遇到標記區域時發出最佳化程式碼,並在隨後的每次呼叫中重新發出之前編譯的程式碼。這可以顯著減少深度堆疊、結構相同的元件(如大型語言模型 (LLM) 的 transformer 層)的整體編譯時間。

[API-不穩定] 控制流運算子庫

使用者可以使用五個控制流運算子:`cond`、`while_loop`、`scan`、`associative_scan` 和 `map` 來表達模型中的複雜控制流。它們提供了以下能力: 

  1. 編譯或匯出具有資料依賴控制流的模型,其中執行路徑取決於僅在執行時可用的張量值。 
  2. 避免由動態形狀依賴控制流引起的重新編譯,其中迴圈計數或條件隨張量大小而變化。
  3. 透過防止大型計算圖的大小因迴圈展開而線性增長來最佳化它們,從而減少編譯時間。該庫主要側重於推理和匯出。 

也支援訓練,`while_loop` 除外,它將在 2.9 版本中支援。

[API-不穩定] PyTorch 分散式檢查點中的 HuggingFace SafeTensors 支援

PyTorch 分散式檢查點 (DCP) 正在解決互操作性障礙,以確保 HuggingFace safetensors 等流行格式能夠與 PyTorch 生態系統良好協作。由於 HuggingFace 已成為推理和微調領域的主流格式,DCP 添加了支援,可以以 SafeTensors 格式儲存、載入和重新分片檢查點。

[API-不穩定] PyTorch CPP 擴充套件 API 中的 SYCL 支援

此功能允許使用者為 Intel GPU 平臺實現新的自定義運算子,作為可透過 PyTorch XPU 裝置後端訪問的 SYCL 核心。SYCL 是 Khronos Group 開發的開放標準,允許開發人員使用標準 C++ 程式設計異構架構。目前,此功能適用於 Linux 使用者。請參閱此處教程

[API-不穩定] XPU 裝置上的 A16W4

此功能允許使用者利用 A16W4 僅權重量化,在 Intel GPU 上使用 TorchAO 執行 LLM 推理,以減少記憶體消耗並提高推理速度。它支援 BF16 和 FP16 啟用,並且允許使用者根據特定場景的精度要求在 RTN (Rounding-to-Nearest) 或 AWQ (Automatic Weight Quantization) 方法之間進行選擇。

[API-不穩定] Intel GPU 分散式後端 (XCCL)

 XCCL 是適用於英特爾 GPU 的分散式後端,允許使用者在 XPU 裝置上啟用各種分散式訓練正規化,例如 DDP (DistributedDataParallel)、FSDP (FullyShardedDataParallel)、PP (pipeline parallelism) 和 TP (tensor parallelism)。XCCL 後端提供了 PyTorch 中定義的所有通訊操作,例如 allreduce、allgather 和 reducescatter。XCCL 後端可以透明地應用於 XPU 裝置,或在 PyTorch 程序組初始化期間明確指定為“xccl”。請參閱此處教程