评价此页

torch.compiler.nested_compile_region#

torch.compiler.nested_compile_region(fn=None)[source]#

指示 ``torch.compile`` 将标记的操作集视为一个嵌套编译区域(在完整模型中通常会重复出现),该区域的代码可以编译一次并安全复用。 nested_compile_region 也可以用作装饰器。

``torch.compile`` 跟踪期间,编译器将应用分层编译nested_compile_region:它会在第一次遇到标记区域时发出优化代码,并在后续每次调用时重新发出(或“盖印”)先前编译的代码。对于像大型语言模型(LLM)的 transformer 层这样深度堆叠、结构相同的组件,这可以大大减少整体编译时间。

torch.compile 上下文之外(即在标准 eager 执行中),此调用将不起作用,因此现有工作流程保持不变。

请注意,nested_compile_region **不**保证一个区域只会被编译一次。如果编译器检测到新的输入条件(形状、dtype、设备、步幅、全局变量等)使得缓存版本无法安全复用,它将透明地重新编译该区域。因此,使用它是安全的:正确性始终得到保证,并且只有在需要时才会产生额外的编译成本。