跳轉到主要內容
部落格

PyTorch 2.3 釋出部落格

作者: 2024 年 4 月 24 日2024 年 11 月 13 日無評論

我們很高興地宣佈 PyTorch® 2.3 已釋出(釋出說明)!PyTorch 2.3 支援 torch.compile 中的使用者定義 Triton 核心,允許使用者將其自己的 Triton 核心從 Eager 模式遷移,而不會遇到效能下降或圖中斷。張量並行性改進了使用原生 PyTorch 函式訓練大型語言模型的體驗,這已透過 1000 億引數模型的訓練執行得到驗證。此外,半結構化稀疏性將半結構化稀疏性實現為張量子類,與密集矩陣乘法相比,觀察到的速度提升高達 1.6 倍。

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

Beta原型效能改進
torch.compile 中的使用者定義 Triton 核心torch.export 添加了新的 API 來指定 dynamic_shapes僅權重量化引入到 Inductor CPU 後端
PyTorch 分散式中的張量並行性非同步檢查點生成
支援半結構化稀疏性

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

Beta 功能

[Beta] torch.compile 中使用者定義 Triton 核心的支援

允許包含 Triton 核心的 PyTorch 程式碼使用 torch.compile 本地執行。這使使用者能夠將包含 Triton 核心的程式碼從 Eager PyTorch 遷移到 torch.compile,而不會遇到效能下降或圖中斷。原生支援還為 Torch Inductor 提供了預編譯使用者定義 Triton 核心的機會,並更好地組織 Triton 核心周圍的程式碼,從而實現進一步最佳化。

您可以在此教程中找到有關如何在 torch.compile 中利用使用者定義 Triton 核心的更多資訊。

[Beta] 張量並行性引入了更高效的 LLM 訓練方式

張量並行 API 促進了跨 GPU/主機進行各種張量操作,並與 FSDP 整合以實現 2D 並行性(跨裝置的張量並行性 + 跨主機的資料並行性)。它還提供了一個低階 API,用於構建更高級別的張量並行 API。此 API 已驗證支援訓練引數超過 1000 億的 Transformer 模型。

您可以在此教程中找到有關如何在工作流中利用此功能的更多資訊。

[Beta] 半結構化稀疏性為使用者提供了一種利用加速稀疏推理和記憶體節省的方法

torch.sparse.SparseSemiStructuredTensor 將半結構化稀疏性實現為張量子類,與密集矩陣乘法相比,觀察到的速度提升高達 1.6 倍。

特別是,它增加了

  • 對量化可組合性的額外支援(混合資料型別、去量化融合)
  • 更新了 cuSPARSELt 和 CUTLASS 核心
  • torch.compile 支援

您可以在此處找到有關如何利用半結構化稀疏性的更多資訊。

原型功能

[原型] torch.export 添加了新的 API 來指定 dynamic_shapes

您現在可以使用 torch.export.Dim 來更好地表示動態形狀,使開發人員能夠指定範圍(最小值和最大值),這些範圍可以在不同的輸入維度之間重複使用,這些維度被約束為相等。

要了解有關 torch.export.Dim 以及如何使用它來表達更有趣的關係(例如線性算術表示式)的更多資訊,請檢視此處的教程。

[原型] 非同步檢查點生成

非同步檢查點生成允許使用者在生成檢查點時繼續其訓練迴圈,從而基本解除安裝了大部分檢查點成本。

您可以透過此示例瞭解如何在自己的工作流中利用此功能。

效能改進

[原型] 僅權重量化引入到 Inductor CPU 後端

PyTorch 2.3 增強了 torch Inductor CPU 後端的 LLM 推理效能。gpt-fast 專案為使用 torch.compile 的 Transformer 文字生成提供了簡單高效的 PyTorch 原生加速。在 2.3 之前,僅支援 CUDA 裝置,此功能透過為 int4 和 int8 僅權重量化線性提供高度最佳化的核心來支援 CPU 對應功能。

有關此功能或如何利用此功能的更多資訊,請參閱 gpt-fast README