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() 來檢視,每個後端都有其可選的依賴項。
一些最常用的後端包括:
訓練和推理後端
後端 |
描述 |
|---|---|
|
使用 TorchInductor 後端。閱讀更多 |
|
CUDA 圖與 AOT Autograd。閱讀更多 |
|
在 CPU 上使用 IPEX。閱讀更多 |
僅推理後端
後端 |
描述 |
|---|---|
|
使用 Torch-TensorRT 進行推理最佳化。需要 |
|
在 CPU 上使用 IPEX 進行推理。閱讀更多 |
|
使用 Apache TVM 進行推理最佳化。閱讀更多 |
|
使用 OpenVINO 進行推理最佳化。閱讀更多 |
閱讀更多#
PyTorch 使用者入門
- 入門指南
- torch.compiler API 參考
- torch.compiler.config
- 用於細粒度跟蹤的 TorchDynamo API
torch.compile具有不同的 autograd 語義- AOTInductor:對 Torch.Export 匯出模型的預先編譯
- TorchInductor GPU 效能分析
- 效能分析以理解 torch.compile 的效能
- 查詢圖中斷:“Torch-Compiled Region” 和 “CompiledFunction”
- 常見問題
- torch.compile 故障排除
- PyTorch 2.0 效能儀表盤
- TorchInductor 和 AOTInductor 來源跟蹤
`torch.compile` 程式設計模型
面向 PyTorch 開發者的深度探討
面向 PyTorch 後端供應商的操作指南