评价此页

torch.compiler.config#

创建于: 2024年11月01日 | 最后更新于: 2025年06月11日

这是编译器的高层配置模块,其中包含影响编译器堆栈所有部分的通用配置选项。

您也可能对特定组件的配置模块感兴趣,这些模块包含仅影响编译器特定部分的配置选项。

  • torch._dynamo.config

  • torch._inductor.config

  • torch._functorch.config

  • torch.fx.experimental.config

torch.compiler.config.job_id: Optional[str] = None#

从语义上讲,这应该是一个唯一标识例如训练作业的标识符。同一作业可能会有多个尝试,例如,如果作业被中断或需要重新启动,但每次尝试都应运行实质上相同的 the same distributed topology 的工作负载。您可以通过环境变量 TORCH_COMPILE_JOB_ID 来设置此项。

在操作上,这会控制剖面图引导优化相关持久化的影响。PGO 状态会影响我们在多次调用 PyTorch 时如何执行编译,例如,第一次运行程序时,我们可能会编译两次以发现哪些输入是动态的,然后 PGO 将保存此状态,因此后续调用只需要编译一次,因为它们会记住它是动态的。然而,此剖面信息对您运行的工作负载很敏感,因此我们需要您告诉我们两个作业是 *相关* 的(即,是同一个工作负载),我们才愿意重用这些信息。特别是,除非有有效的 job_id,否则 PGO 不起任何作用(即使显式启用)。在某些情况下,PyTorch 可以配置为根据其运行的环境自动计算 job_id

剖面图始终是按 rank 收集的,因此不同的 rank 可能会有不同的剖面图。如果您知道您的工作负载是真正的 SPMD,您可以运行 torch._dynamo.config.enable_compiler_collectives 以确保所有 rank 上的节点获得一致的剖面图。