torch._dynamo¶
警告
该模块是一个早期原型,可能会发生变化。
- torch._dynamo.allow_in_graph(fn)[source]¶
自定义TorchDynamo在生成的图中将包含哪些函数。类似于 torch.fx.wrap()。
torch._dynamo.allow_in_graph(my_custom_function) @torch._dynamo.optimize(...) def fn(a): x = torch.add(x, 1) x = my_custom_function(x) x = torch.add(x, 1) return x fn(...)
将捕获一个包含 my_custom_function() 的单个图表。
- torch._dynamo.disallow_in_graph(fn)[source]¶
自定义 TorchDynamo 在生成的图中将排除哪些函数,并强制在这些函数处断开图。
torch._dynamo.disallow_in_graph(torch.sub) @torch._dynamo.optimize(...) def fn(a): x = torch.add(x, 1) x = torch.sub(x, 1) x = torch.add(x, 1) return x fn(...)
将在 torch.sub 处断开图,并生成两个各自包含一个 torch.add() 操作的图。
- torch._dynamo.optimize(backend='inductor', *, nopython=False, guard_export_fn=None, guard_fail_fn=None, disable=False, dynamic=False)[source]¶
TorchDynamo 的主要入口点。执行图捕获并调用 backend() 以优化提取的图。
- Parameters:
backend – 两件事情之一: - 要么,一个函数/可调用对象,接受一个 torch.fx.GraphModule 和 example_inputs,并返回一个运行图更快的 Python 可调用对象。 还可以通过设置 backend_ctx_ctor 属性,为后端提供额外的上下文,例如 torch.jit.fuser("fuser2")。 有关用法,请参见 AOTAutogradMemoryEfficientFusionWithContext。 - 或者,torch._dynamo.list_backends() 中的一个字符串后端名称
nopython – 如果为 True,图断点将被视为错误,并且将存在一个完整的程序图。
禁用 – 如果为 True,将此装饰器转换为无操作
动态 – 如果为 True,启用动态形状支持
示例用法:
@torch._dynamo.optimize() def toy_example(a, b): ...
- torch._dynamo.optimize_assert(backend, *, hooks=Hooks(guard_export_fn=None, guard_fail_fn=None), export=False, dynamic=False)[source]¶
与 torch._dynamo.optimize(backend, nopython=True) 相同
- class torch._dynamo.OptimizedModule(mod, dynamo_ctx)[source]¶
包装原始的 nn.Module 对象,并随后修补其 forward 方法以使用优化后的 self.forward 方法。