捷徑

torch.compiler

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

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

torch.compile 利用以下基礎技術

  • TorchDynamo (torch._dynamo) 是一個內部 API,它使用一個稱為框架評估 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 在本文檔中可能會互換使用。

如上所述,為了更快地執行您的工作流程,透過 TorchDynamo 執行的 torch.compile 需要一個後端,將擷取的圖形轉換為快速的機器程式碼。不同的後端可能會導致不同的優化提升。預設的後端稱為 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")

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

僅限推論的後端

後端

說明

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

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

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

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

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

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

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

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

文件

存取 PyTorch 的完整開發者文件

查看文件

教學課程

取得適用於初學者和進階開發者的深入教學課程

查看教學課程

資源

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

查看資源