torch.compiler¶
torch.compiler
是一个命名空间,一些内部编译器通过该命名空间
方法供用户使用。main 函数和
此命名空间为 。torch.compile
torch.compile
是 PyTorch 2.x 中引入的 PyTorch 函数,旨在
解决 PyTorch 中精确捕获图的问题,最终启用
软件工程师更快地运行他们的 PyTorch 程序。 是
用 Python 编写的,它标志着 PyTorch 从 C++ 到 Python 的过渡。torch.compile
torch.compile
利用以下底层技术:
TorchDynamo (torch._dynamo) 是一个使用 CPython 的内部 API 功能调用了帧评估 API,以安全地捕获 PyTorch 图形。 将显示 PyTorch 用户可从外部使用的方法 通过命名空间。
torch.compiler
TorchInductor 是默认的深度学习编译器 为多个加速器和后端生成快速代码。你 需要使用后端编译器来使加速成为可能。对于 NVIDIA、AMD 和 Intel GPU,它利用 OpenAI Triton 作为关键 积木。
torch.compile
torch.compile
AOT Autograd 不仅捕获用户级代码,还捕获反向传播、 这会导致“提前”捕获向后传递。这使得 使用 TorchInductor 进行正向和向后传递的加速度。
注意
在某些情况下,术语 TorchDynamo 在本文档中可以互换使用。torch.compile
torch.compiler
如上所述,为了更快地运行工作流程,请通过
TorchDynamo 需要一个后端,用于将捕获的图形转换为快速的
机器代码。不同的后端可以带来不同的优化收益。
默认后端称为 TorchInductor,也称为 inductor,
TorchDynamo 有一个由我们的合作伙伴开发的受支持后端列表,
可以通过运行每个
及其可选依赖项。torch.compile
torch.compiler.list_backends()
一些最常用的后端包括:
训练和推理后端
后端 |
描述 |
---|---|
|
使用 TorchInductor 后端。阅读更多 |
|
使用 AOT Autograd 的 CUDA 图形。阅读更多 |
|
在 CPU 上使用 IPEX。阅读更多 |
|
使用 ONNX 运行时在 CPU/GPU 上进行训练。阅读更多 |
仅推理后端
后端 |
描述 |
---|---|
|
使用 Torch-TensorRT 进行推理优化。Requires 在调用脚本中注册 backend。阅读更多 |
|
使用 IPEX 在 CPU 上进行推理。阅读更多 |
|
使用 Apache TVM 进行推理优化。阅读更多 |
|
使用 OpenVINO 进行推理优化。阅读更多 |