快捷方式

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 和英特尔 GPU,它利用 OpenAI Triton 作为关键构建块。

  • **AOT Autograd** 不仅捕获用户级代码,还捕获反向传播,从而导致“提前”捕获反向传播。这使得可以使用 TorchInductor 加速正向和反向传播。

注意

在某些情况下,术语 torch.compile、TorchDynamo、torch.compiler 在此文档中可能可以互换使用。

如上所述,要更快地运行工作流程,通过 TorchDynamo 的 torch.compile 需要将捕获的图形转换为快速机器代码的后端。不同的后端会导致不同的优化增益。默认后端称为 TorchInductor,也称为 *inductor*,TorchDynamo 有一个由我们的合作伙伴开发的支持的后端列表,可以通过运行 torch.compiler.list_backends() 查看,每个后端都有其可选的依赖项。

一些最常用的后端包括

训练和推理后端

后端

描述

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

使用 TorchInductor 后端。 了解更多

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

带有 AOT Autograd 的 CUDA 图形。 了解更多

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

在 CPU 上使用 IPEX。 了解更多

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

在 CPU/GPU 上使用 ONNX Runtime 进行训练。 了解更多

仅推理后端

后端

描述

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 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并获得您的问题的答案

查看资源