torch.fx.experimental#
创建于: Feb 07, 2024 | 最后更新于: Dec 05, 2025
警告
这些 API 是实验性的,可能会在不另行通知的情况下更改。
- class torch.fx.experimental.sym_node.DynamicInt(val)[源代码]#
用于标记 torch.compile 中动态整数的用户 API。旨在同时兼容编译和即时模式。
使用示例
fn = torch.compile(f) x = DynamicInt(4) fn(x) # compiles x as a dynamic integer input; returns f(4)
torch.fx.experimental.sym_node#
torch.fx.experimental.symbolic_shapes#
控制如何为维度执行符号分配。 |
|
对于客户端:该维度的大小必须在 'vr' (指定包含-包含的上下界) 范围内,并且必须是非负的,不应为 0 或 1 (但参见下面的注)。 |
|
对于客户端:没有明确的约束;约束是根据跟踪中的 guard 隐式推断出的任何约束。 |
|
表示和决定输入源之间各种形式的相等约束。 |
|
指定如何在 |
|
通过 |
|
通过符号源:符号的缓存,通过 symbolic_context 确定,在 |
|
给定一个可跟踪的张量子类的正确符号上下文可能与外部符号上下文不同。 |
|
用于符号维度上约束系统的自定义求解器。 |
|
封装了所有可能影响 FakeTensor 分派的 shape env 设置。 |
|
此类用于多图编译上下文,在这些上下文中,我们会生成多个专门化的图并在运行时分派到适当的图。 |
|
检索一个整数的提示(基于运行时观察到的底层真实值)。 |
|
用于检查 SymInt 中底层对象是否为具体值的工具函数。 |
|
用于检查 SymBool 中底层对象是否为具体值的工具函数。 |
|
用于检查 SymInt 中底层对象是否为具体值的工具函数。 |
|
bool(free_symbols(val)) 的更快版本 |
|
bool(free_unbacked_symbols(val)) 的更快版本 |
|
尝试对 a 进行 guard,如果遇到数据依赖错误,则直接返回 true。 |
|
尝试对 a 进行 guard,如果遇到数据依赖错误,则直接返回 false。 |
|
以大小无关的方式对符号布尔表达式执行 guard。 |
|
与 and 类似,但用于符号表达式,不进行布尔值转换。 |
|
类似于 ==,但当在列表/元组上运行时,它将递归地测试相等性并使用 sym_and 将结果连接起来,而无需 guarding。 |
|
与 or 类似,但用于符号表达式,不进行布尔值转换。 |
|
应用约束,使传入的 SymInt 位于 min-max 包含-包含之间,而**不**在 SymInt 上引入 guard(意味着它可以用于未支持的 SymInts)。 |
|
给定两个 SymInts,约束它们必须相等。 |
|
规范化布尔表达式,将其转换为 lt / le 不等式,并将所有非常量项移到右侧。 |
|
如果 x 可以简化为常量且为 true,则返回 True。 |
|
如果 x 可以简化为常量且为 False,则返回 True。 |
|
用户代码友好的工具函数,用于检查值是静态的还是动态的。 |
|
测试两个“元”值(通常是 Tensor 或 SymInt)是否具有相同的值,例如,在重新跟踪后。 |
|
在运行 fake tensor 传播并产生 example_value 结果后,遍历 example_value 以查找新绑定的未支持符号,并记录其路径以供将来使用。 |
|
假设我们正在重新跟踪先前具有 fake tensor 传播(因此有未支持的 SymInts)的现有 FX 图。 |
|
当我们进行 fake tensor 传播时,我们通常会分配新的未支持的 symints。 |
|
用于确定节点是否试图访问符号整数(如 size、stride、offset 或 item)的辅助函数。 |
|
将 SymBool 或 bool 转换为 SymInt 或 int,而无需引入 guard。 |
|
在 FX 图中查找绑定 sympy 符号的所有节点。 |
|
递归地收集值中的所有自由符号。 |
|
类似于 free_symbols,但经过过滤,仅报告未支持的符号 |
|
Guard 一个标量值,它可以是符号的或具体的布尔值、整数或浮点数。 |
|
检查给定的 FX 节点是否是符号绑定节点。 |
|
torch.fx.experimental.proxy_tensor#
给定一个函数 f,返回一个新的函数,当使用 f 的有效参数执行此新函数时,它将返回一个表示在执行过程中执行的操作集的 FX GraphModule。 |
|
调用当前活动的代理跟踪模式,对操作这些参数的函数执行 SymInt/SymFloat/SymBool 分派跟踪。 |
|
返回当前活动的代理跟踪模式,如果当前未跟踪,则返回 None。 |
|
在此上下文管理器中,如果您正在进行 make_fx 跟踪,我们将对所有 SymNode 计算进行 thunkify,并避免将其跟踪到图中,除非它实际上是必需的。 |
|
在上下文中,禁用 thunkification。 |
|
延迟 f 的计算,直到再次调用它,并缓存结果 |
|
FX 对可变参数感到困惑,解除困惑 |
|
torch.fx.experimental.unification.unification_tools#
torch.fx.experimental.migrate_gradual_types.transform_to_z3#
将代数表达式转换为 z3 格式:param expr:表达式是维度变量还是代数表达式 |
|
给定一个跟踪,生成约束并将它们转换为 z3 格式 |
|
获取一个节点和一个图,生成两组约束。 |
|
根据我们的方案,将维度变量或数字转换为一个元组:param dimension:要转换的维度:param counter:跟踪变量 |
|
将张量变量转换为 z3 可理解的格式:param tensor:张量变量或可能具有可变维度的张量类型 |