torch.fx.experimental¶
警告
這些 API 仍處於實驗階段,如有變更,恕不另行通知。
torch.fx.experimental.symbolic_shapes¶
torch.fx.experimental.symbolic_shapes 提供了與我們的符號形狀推理系統互動的介面,該系統在 torch.compile 中被大量使用。 雖然這通常不被認為是公開 API,但在 PyTorch 中編寫框架程式碼以及 PyTorch 的擴充時(例如,在自訂運算子實作中),您可能需要使用這些 API 來適當地設定動態形狀支援。
| 控制如何為維度執行符號分配。 | |
| 對於客戶端:此維度的尺寸必須在「vr」內(指定下限和上限,包含-包含),並且必須是非負數,並且不應該是 0 或 1(但請參閱下面的 NB)。 | |
| 對於客戶端:沒有明確的約束;約束是由追蹤中的守衛隱含推斷出的任何內容。 | |
| 表示並決定輸入源之間各種相等性約束。 | |
| 指定如何在  | |
| 透過由  | |
| 透過 Source:Symbol 快取給出的符號上下文確定,在  | |
| 可追蹤張量子類別的給定內部張量的正確符號上下文可能與外部符號上下文不同。 | |
| 符號維度約束系統的自訂求解器。 | |
| 封裝了所有可能影響 FakeTensor 調度的形狀環境設定。 | |
| 擷取 int 的提示(基於在執行時觀察到的實際值)。 | |
| 用於檢查 SymInt 中的底層物件是否是具體值的工具程式。 | |
| 用於檢查 SymBool 中的底層物件是否是具體值的工具程式。 | |
| bool(free_symbols(val)) 的更快版本 | |
| 僅在我們可以判斷 a 為 True 時才返回 True,在此過程中可能會引入守衛。 | |
| 僅在我們可以判斷 a 為 False 時才返回 True,在此過程中可能會引入守衛。 | |
| 以與大小無關的方式對符號布林運算式執行守衛。 | |
| 評估多個引數的邏輯 OR,如果另一個引數確定為 True,則避免在未備份的 SymInt 上守衛。 | |
| 評估多個引數的邏輯 FALSE,如果另一個引數確定為 False,則避免在未備份的 SymInt 上守衛。 | |
| 類似於 ==,但在列表/元組上執行時,它將遞迴地測試相等性,並使用 sym_and 將結果連接在一起,而不進行守衛。 | |
| 應用約束,即傳入的 SymInt 必須介於最小值和最大值之間(包含-包含),而不會在 SymInt 上引入守衛(這意味著它可以用於未備份的 SymInt)。 | |
| 給定兩個 SymInt,約束它們,使它們必須相等。 | |
| 透過將布林運算式轉換為 lt / le 不等式,並將所有非常數項移到右側,來對其進行規範化。 | |
| 如果 x 可以簡化為常數並且為 true,則返回 True。 | |
| 測試兩個「中繼」值(通常是 Tensor 或 SymInt)是否具有相同的值,例如,在重新追蹤之後。 | |
| 在執行完虛擬張量傳播並產生 example_value 結果之後,遍歷 example_value 以尋找新繫結的未備份符號,並記錄它們的路徑以供稍後使用。 | |
| 假設我們正在重新追蹤先前具有虛擬張量傳播(因此有未備份的 SymInt)的預先存在的 FX 圖。 | |