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

torch.compile 中进行编译时缓存

作者:Oguz UlgenSam Larsen

简介

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

先决条件

在开始此食谱之前,请确保您具备以下知识

Inductor 缓存设置

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

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

TORCHINDUCTOR_FX_GRAPH_CACHE

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

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_AUTOTUNE_REMOTE_CACHE

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

TORCHINDUCTOR_FORCE_DISABLE_CACHES

将此值设置为 1 以禁用所有 Inductor 缓存。此设置对于诸如尝试冷启动编译时间或强制重新编译以进行调试之类的任务很有用。

结论

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

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源