快捷方式

torch.compiler

torch.compiler 是一個命名空間,透過這個命名空間,一些內部的編譯器方法會公開給使用者使用。這個命名空間中的主要功能是 torch.compile

torch.compile 是一個 PyTorch 函數,在 PyTorch 2.x 中引入,旨在解決 PyTorch 中精確圖形捕獲的問題,並最終使軟體工程師能夠更快地運行他們的 PyTorch 程式。torch.compile 是用 Python 撰寫的,它標誌著 PyTorch 從 C++ 到 Python 的轉變。

torch.compile 利用以下底層技術:

  • TorchDynamo (torch._dynamo) 是一個內部 API,它使用名為 Frame Evaluation API 的 CPython 功能來安全地捕獲 PyTorch 圖形。PyTorch 使用者可從外部使用的的方法會透過 torch.compiler 命名空間公開。

  • TorchInductor 是預設的 torch.compile 深度學習編譯器,它為多個加速器和後端生成快速程式碼。您需要使用後端編譯器才能透過 torch.compile 實現加速。對於 NVIDIA、AMD 和 Intel GPU,它利用 OpenAI Triton 作為關鍵構建模組。

  • AOT Autograd 不僅捕獲使用者層級的程式碼,還捕獲反向傳播,從而實現「提前」捕獲反向傳遞。這使得可以使用 TorchInductor 加速前向和後向傳遞。

注意

在某些情況下,術語 torch.compile、TorchDynamo、torch.compiler 可能會在本文件中互換使用。

如上所述,為了更快地運行您的工作流程,torch.compile 通過 TorchDynamo 需要一個後端,將捕獲的圖形轉換為快速機器程式碼。不同的後端可能會導致不同的優化增益。預設的後端稱為 TorchInductor,也稱為 *inductor*, TorchDynamo 有一個由我們的合作夥伴開發的支援後端列表,可以通過運行 torch.compiler.list_backends() 來查看,每個後端都有其可選的依賴項。

一些最常用的後端包括:

訓練 & 推論後端

後端

描述

torch.compile(m, backend="inductor")

使用 TorchInductor 後端。 閱讀更多

torch.compile(m, backend="cudagraphs")

具有 AOT Autograd 的 CUDA 圖形。 閱讀更多

torch.compile(m, backend="ipex")

在 CPU 上使用 IPEX。 閱讀更多

torch.compile(m, backend="onnxrt")

在 CPU/GPU 上使用 ONNX Runtime 進行訓練。 閱讀更多

僅用於推論的後端

後端

描述

torch.compile(m, backend="tensorrt")

使用 Torch-TensorRT 進行推論優化。需要在調用腳本中使用 import torch_tensorrt 來註冊後端。 閱讀更多

torch.compile(m, backend="ipex")

使用 IPEX 在 CPU 上進行推論。 閱讀更多

torch.compile(m, backend="tvm")

使用 Apache TVM 進行推論優化。 閱讀更多

torch.compile(m, backend="openvino")

使用 OpenVINO 進行推論優化。 閱讀更多

文件

取得 PyTorch 的完整開發人員文件

檢視文件

教學課程

取得初學者和進階開發人員的深入教學課程

檢視教學課程

資源

尋找開發資源並取得問題的解答

檢視資源