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 使用特定後端。否則,將引發錯誤。