torch.fx.experimental¶
警告
这些 API 处于实验阶段,可能会在未经通知的情况下更改。
torch.fx.experimental.symbolic_shapes¶
torch.fx.experimental.symbolic_shapes
提供了与我们用于符号形状推理系统的接口,该系统在 torch.compile 中被广泛使用。虽然这通常不被视为公共 API,但在编写 PyTorch 中的框架代码以及 PyTorch 的扩展(例如,在自定义运算符实现中)时,您可能需要使用这些 API 来适当地设置动态形状支持。
控制如何对维度执行符号分配。 |
|
对于客户端:此维度的尺寸必须在 'vr'(指定包含-包含的下限和上限)内,并且它必须是非负数,不应为 0 或 1(但请参见下面的注意)。 |
|
对于客户端:没有显式约束;约束是通过跟踪从守卫隐式推断出的任何内容。 |
|
表示和决定输入源之间各种类型的相等约束。 |
|
数据结构指定了我们应该在 |
|
通过 |
|
通过 Source:Symbol 缓存给定的符号上下文确定,在 |
|
对于可跟踪张量子类的给定内部张量,正确的符号上下文可能与外部符号上下文不同。 |
|
针对符号维度的约束系统定制求解器。 |
|
封装所有可能影响 FakeTensor 调度的形状环境设置。 |
|
检索整数的提示(基于在运行时观察到的底层真实值)。 |
|
用于检查 SymInt 中的底层对象是否是具体值的实用程序。 |
|
用于检查 SymBool 中的底层对象是否是具体值的实用程序。 |
|
bool(free_symbols(val)) 的更快版本 |
|
仅当我们可以确定 a 为 True 时才返回 True,在此过程中可能会引入守卫。 |
|
仅当我们可以确定 a 为 False 时才返回 True,在此过程中可能会引入守卫。 |
|
以不考虑大小的方式对符号布尔表达式执行守卫。 |
|
评估多个参数的逻辑 OR,如果另一个参数肯定为 True,则避免对未支持的 SymInt 进行守卫。 |
|
评估多个参数的逻辑 FALSE,如果另一个参数肯定为 False,则避免对未支持的 SymInt 进行守卫。 |
|
类似于 ==,但在对列表/元组运行时,它将递归地测试相等性并使用 sym_and 来组合结果,而不会进行守卫。 |
|
应用一个约束,即传入的 SymInt 必须在 min-max 包含-包含之间,而不会对 SymInt 引入守卫(这意味着它可以在未支持的 SymInt 上使用)。 |
|
给定两个 SymInt,将它们约束在一起,以确保它们必须相等。 |
|
通过将布尔表达式转换为 lt/le 不等式并将所有非常数项移到 rhs 来规范化布尔表达式。 |
|
如果 x 可以简化为常量并且为真,则返回 True。 |
|
测试两个“元”值(通常是 Tensor 或 SymInt)是否具有相同的值,例如,在重新跟踪之后。 |
|
在运行假张量传播并生成 example_value 结果后,遍历 example_value 以查找新绑定的未支持符号并记录它们的路径以备后用。 |
|
假设我们正在重新跟踪先前具有假张量传播(因此具有未支持的 SymInt)的现有 FX 图。 |
|
torch.fx.experimental.proxy_tensor¶
给定一个函数 f,返回一个新函数,该函数在使用 f 的有效参数执行时,返回一个表示在执行过程中执行的操作集的 FX GraphModule。 |
|
调用当前活动的代理跟踪模式,以对作用于这些参数的函数进行 SymInt/SymFloat/SymBool 分派跟踪。 |
|
当前活动的代理跟踪模式,或者如果我们当前没有进行跟踪,则为 None。 |
|
在此上下文管理器中,如果您正在进行 make_fx 跟踪,我们将对所有 SymNode 计算进行 thunkify,并避免将其跟踪到图中,除非它确实需要。 |
|
在上下文中禁用 thunkification。 |