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() 來查看,每個後端都有其可選的依賴項。
一些最常用的後端包括
訓練和推論後端
| 後端 | 說明 | 
|---|---|
| 
 | 使用 TorchInductor 後端。 閱讀更多 | 
| 
 | 具有 AOT Autograd 的 CUDA 圖形。 閱讀更多 | 
| 
 | 在 CPU 上使用 IPEX。 閱讀更多 | 
| 
 | 使用 ONNX Runtime 在 CPU/GPU 上進行訓練。 閱讀更多 | 
僅限推論的後端
| 後端 | 說明 | 
|---|---|
| 
 | 使用 Torch-TensorRT 進行推論優化。需要在呼叫腳本中使用  | 
| 
 | 在 CPU 上使用 IPEX 進行推論。 閱讀更多 | 
| 
 | 使用 Apache TVM 進行推論優化。 閱讀更多 | 
| 
 | 使用 OpenVINO 進行推論優化。 閱讀更多 |