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