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不保证一个区域只会被编译一次。如果编译器检测到新的输入条件(形状、数据类型、设备、步幅、全局变量等)使得缓存的版本不再有效,它将透明地重新编译该区域。因此,使用它是安全的:正确性始终得到保证,而额外的编译成本仅在需要时才会产生。