torch.compiler.config¶
这是编译器的顶层配置模块,包含影响编译器栈所有部分的跨切面配置选项。
您可能还对每个组件的配置模块感兴趣,这些模块包含仅影响编译器特定部分的配置选项:
torch._dynamo.config
torch._inductor.config
torch._functorch.config
torch.fx.experimental.config
- torch.compiler.config.job_idOptional[str]=None
从语义上讲,这应该是一个唯一标识符,例如,一个训练作业。你可能会有同一个作业的多次尝试,例如,如果它被抢占或需要重新启动,但每次尝试都应该运行实质上相同的工作负载,使用相同的分布式拓扑。你可以通过环境变量设置,使用
TORCH_COMPILE_JOB_ID
。在实际操作中,这控制了与配置文件引导的优化相关持久状态的效应。PGO 状态可能会影响我们在 PyTorch 多次调用中进行编译的方式,例如,您第一次运行程序时,我们可能需要编译两次,因为我们正在发现哪些输入是动态的,然后 PGO 会保存此状态,以便后续调用只需编译一次,因为它们记得它是动态的。然而,此配置文件信息对您正在运行的工作负载敏感,因此在我们愿意重用此信息之前,我们需要您告知我们两个作业是相关的(即,是相同的工作负载)。值得注意的是,PGO 不会执行任何操作(即使显式启用),除非有有效的
job_id
。在某些情况下,PyTorch 可以配置为根据其运行的环境自动计算一个job_id
。配置文件总是按每个节点收集,因此不同的节点可能有不同的配置文件。如果您知道您的工作负载确实是 SPMD,您可以使用
torch._dynamo.config.enable_compiler_collectives
运行以确保节点在整个节点之间获得一致的配置文件。