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

torch.compile 中的编译时缓存

创建于:2024 年 6 月 20 日 | 最后更新:2024 年 12 月 06 日 | 最后验证:2024 年 11 月 05 日

作者: Oguz UlgenSam Larsen

简介

PyTorch Inductor 实现了多个缓存以减少编译延迟。本食谱演示了如何在 torch.compile 中配置缓存的各个部分。

先决条件

在开始本食谱之前,请确保您已具备以下条件

Inductor 缓存设置

大多数这些缓存都是内存中的,仅在同一进程内使用,并且对用户是透明的。例外情况是存储编译后的 FX 图的缓存(FXGraphCache、AOTAutogradCache)。这些缓存允许 Inductor 在遇到具有相同 Tensor 输入形状(和相同配置)的相同图时,避免跨进程边界重新编译。默认实现将编译后的工件存储在系统临时目录中。一个可选功能还支持通过将这些工件存储在 Redis 数据库中,在集群内共享它们。

有一些设置与缓存,特别是 FX 图缓存相关。这些设置可以通过下面列出的环境变量访问,也可以在 Inductor 的配置文件中硬编码。

TORCHINDUCTOR_FX_GRAPH_CACHE

此设置启用本地 FX 图缓存功能,即通过将工件存储在主机的临时目录中。1 启用,任何其他值禁用它。默认情况下,磁盘位置是按用户名划分的,但用户可以通过指定 TORCHINDUCTOR_CACHE_DIR(如下所示)来启用跨用户名共享。

TORCHINDUCTOR_AUTOGRAD_CACHE

此设置扩展了 FXGraphCache,以在 AOTAutograd 级别而不是 Inductor 级别存储缓存结果。1 启用,任何其他值禁用它。默认情况下,磁盘位置是按用户名划分的,但用户可以通过指定 TORCHINDUCTOR_CACHE_DIR(如下所示)来启用跨用户名共享。TORCHINDUCTOR_AUTOGRAD_CACHE 需要 TORCHINDUCTOR_FX_GRAPH_CACHE 才能工作。相同的缓存目录存储 AOTAutogradCache(在 {TORCHINDUCTOR_CACHE_DIR}/aotautograd 下)和 FXGraphCache(在 {TORCHINDUCTOR_CACHE_DIR}/fxgraph 下)的缓存条目。

TORCHINDUCTOR_CACHE_DIR

此设置指定所有磁盘缓存的位置。默认情况下,该位置位于系统临时目录下的 torchinductor_<username> 中,例如 /tmp/torchinductor_myusername

请注意,如果未在环境中设置 TRITON_CACHE_DIR,则 Inductor 会将 Triton 缓存目录设置为相同的临时位置,位于 Triton 子目录下。

TORCHINDUCTOR_FX_GRAPH_REMOTE_CACHE

此设置启用远程 FX 图缓存功能。当前实现使用 Redis。1 启用缓存,任何其他值禁用它。以下环境变量配置 Redis 服务器的主机和端口

TORCHINDUCTOR_REDIS_HOST(默认为 localhostTORCHINDUCTOR_REDIS_PORT(默认为 6379

请注意,如果 Inductor 找到远程缓存条目,它会将编译后的工件存储在本地磁盘缓存中;该本地工件将在同一台机器上的后续运行中提供。

TORCHINDUCTOR_AUTOGRAD_REMOTE_CACHE

与 TORCHINDUCTOR_FX_GRAPH_REMOTE_CACHE 类似,此设置启用远程 AOT AutogradCache 功能。当前实现使用 Redis。1 启用缓存,任何其他值禁用它。以下环境变量配置 Redis 服务器的主机和端口:TORCHINDUCTOR_REDIS_HOST(默认为 localhostTORCHINDUCTOR_REDIS_PORT(默认为 6379

TORCHINDUCTOR_AUTOGRAD_REMOTE_CACHE` 依赖于 TORCHINDUCTOR_FX_GRAPH_REMOTE_CACHE 才能工作。相同的 Redis 服务器可以存储 AOTAutograd 和 FXGraph 缓存结果。

TORCHINDUCTOR_AUTOTUNE_REMOTE_CACHE

此设置启用 Inductor 自动调谐器的远程缓存。与远程 FX 图缓存一样,当前实现使用 Redis。1 启用缓存,任何其他值禁用它。上面列出的相同主机/端口环境变量适用于此缓存。

TORCHINDUCTOR_FORCE_DISABLE_CACHES

将此值设置为 1 以禁用所有 Inductor 缓存。此设置对于诸如实验冷启动编译时间或强制重新编译以进行调试等任务非常有用。

结论

在本食谱中,我们了解到 PyTorch Inductor 的缓存机制通过利用本地和远程缓存显着减少了编译延迟,这些缓存机制在后台无缝运行,无需用户干预。此外,我们还探讨了各种设置和环境变量,用户可以使用这些设置和环境变量根据其特定需求配置和优化这些缓存功能。


评价本教程

© 版权所有 2024, PyTorch。

使用 Sphinx 构建,主题由 theme 提供,Read the Docs 提供支持。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

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

查看教程

资源

查找开发资源并获取问题解答

查看资源