torch.compiler.set_stance¶
- torch.compiler.set_stance(stance='default', *, skip_guard_eval_unsafe=False, force_backend=None)[源代码][源代码]¶
设置编译器的当前立场(stance)。可用作函数、上下文管理器或装饰器。请勿在 torch.compile 区域内使用此函数,否则将引发错误。
@torch.compile def foo(x): ... @torch.compiler.set_stance("force_eager") def bar(): # will not be compiled foo(...) bar() with torch.compiler.set_stance("force_eager"): # will also not be compiled foo(...) torch.compiler.set_stance("force_eager") # will also not be compiled foo(...) torch.compiler.set_stance("default") # will be compiled foo(...)
- 参数
stance (str) –
用于设置编译器立场。有效值包括:
“default”:默认立场,用于正常编译。
“force_eager”:忽略所有 torch.compile 指令。
“eager_on_recompile”:当需要重新编译时,以 eager 模式运行代码。如果存在对输入有效的缓存编译代码,则仍将使用该代码。
“fail_on_recompile”:重新编译函数时引发错误。
skip_guard_eval_unsafe –
一个仅运行区分性守卫(guards)的标志。注意 - 此标志不安全,仅应在您的设置满足以下条件时使用。
torch.compile 使用守卫系统来支持重新编译,并在运行时选择要运行的编译工件(compiled artifact)。这些守卫虽然高效,但会增加一些开销,这可能会影响需要优化以最大程度减少守卫处理时间的场景中的性能。此 API 使您能够禁用守卫评估,前提是您已使用足够多样的输入预热了编译模型。这一前提意味着,在预热阶段之后,将不需要进一步的重新编译。如果此前提失败,则存在静默产生错误结果的风险(因此 API 名称中包含“unsafe”一词)。
force_backend – 如果 stance 为“default”,则此参数可用于强制 torch.compile 使用特定后端。否则,将引发错误。