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