評價此頁

torch.compiler#

創建於: 2023年7月28日 | 最後更新於: 2025年7月28日

torch.compiler 是一個名稱空間,其中一些內部編譯器方法被暴露給使用者使用。該名稱空間中的主要函式和特性是 torch.compile

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

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

  • TorchDynamo (torch._dynamo) 是一個內部 API,它使用 CPython 的一個名為 Frame Evaluation API 的特性來安全地捕獲 PyTorch 圖。對 PyTorch 使用者暴露的外部方法透過 torch.compiler 名稱空間提供。

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

  • AOT Autograd 不僅捕獲使用者級程式碼,還捕獲反向傳播,從而“提前”捕獲反向傳播。這使得 TorchInductor 能夠加速前向和後向傳播。

要更好地理解 torch.compile 如何在您的程式碼上進行追蹤,或要了解更多關於 torch.compile 的內部機制,請參考 torch.compile 程式設計模型

注意

在某些情況下,術語 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")

CUDA 圖與 AOT Autograd。閱讀更多

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

在 CPU 上使用 IPEX。閱讀更多

僅推理後端

後端

描述

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 後端供應商的操作指南