• 教程 >
  • torch.compile 中的编译时缓存
快捷键

编译时缓存在 torch.compile

创建于:2025 年 4 月 1 日 | 最后更新:2025 年 4 月 1 日 | 最后验证:2024 年 11 月 5 日

作者:Oğuz Ulgen

简介

PyTorch 编译器提供了多种缓存选项以减少编译延迟。本指南将详细介绍这些选项,以帮助用户根据其用例选择最佳方案。

查看编译时缓存配置,了解如何配置这些缓存。

还请查看我们的缓存基准测试,PT CacheBench 基准测试。

前提条件 _

在开始此菜谱之前,请确保您有以下条件:

缓存方案 ¶

提供以下缓存服务:

  • 端到端缓存(也称为 Mega-Cache

  • TorchDynamoTorchInductorTriton 的模块化缓存

需要注意的是,缓存验证缓存工件使用时与相同的 PyTorch 和 Triton 版本以及相同的 GPU(当设备设置为 cuda 时)。

torch.compile 端到端缓存 ( Mega-Cache ) ¶

端到端缓存,以下简称#1,是寻找可便携缓存解决方案且可存储在数据库中、以后可能在不同机器上检索的理想选择。

#1 提供两个编译器 API:

  • torch.compiler.save_cache_artifacts()

  • torch.compiler.load_cache_artifacts()

预期的使用场景是在编译和执行模型之后,用户调用#1,它将以便携的形式返回编译器工件。之后,可能在不同的机器上,用户可以使用这些工件调用#2 以预先填充#3 缓存,从而加速缓存过程。

考虑以下示例。首先,编译并保存缓存工件。

@torch.compile
def fn(x, y):
    return x.sin() @ y

a = torch.rand(100, 100, dtype=dtype, device=device)
b = torch.rand(100, 100, dtype=dtype, device=device)

result = fn(a, b)

artifacts = torch.compiler.save_cache_artifacts()

assert artifacts is not None
artifact_bytes, cache_info = artifacts

# Now, potentially store artifact_bytes in a database
# You can use cache_info for logging

然后,您可以通过以下方式启动缓存:

# Potentially download/fetch the artifacts from the database
torch.compiler.load_cache_artifacts(artifact_bytes)

此操作将填充下一节中将要讨论的所有模块化缓存,包括 PGOAOTAutogradInductorTritonAutotuning

模块化缓存 TorchDynamoTorchInductor ,和 Triton

前述的 Mega-Cache 由可以无需用户干预即可使用的单个组件组成。默认情况下,PyTorch 编译器自带本地磁盘缓存,包括 TorchDynamoTorchInductorTriton 。这些缓存包括:

  • FXGraphCache :编译过程中使用的基于图的 IR 组件的缓存。

  • TritonCache :包含由 cubin 生成的 Triton 和其他缓存文件的 Triton 编译结果的缓存。

  • InductorCache :包含 FXGraphCacheTriton 缓存的捆绑包。

  • AOTAutogradCache : 缓存联合图工件。

  • PGO-cache : 缓存动态形状决策以减少重新编译次数。

所有这些缓存工件都写入到 TORCHINDUCTOR_CACHE_DIR ,默认情况下将类似于 /tmp/torchinductor_myusername

远程缓存 ¶

我们还提供远程缓存选项,供希望利用基于 Redis 的缓存的用户使用。查看编译时缓存配置,了解更多如何启用基于 Redis 的缓存信息。

结论 ¶

在本菜谱中,我们了解到 PyTorch Inductor 的缓存机制通过利用本地和远程缓存,显著降低了编译延迟,这些缓存在后台无缝运行,无需用户干预。


评分这个教程

© 版权所有 2024,PyTorch。

使用 Sphinx 构建,主题由 Read the Docs 提供。
//暂时添加调查链接

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源