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