Отключение и подавление ошибок
Создано: 28 июля 2025 г. | Последнее обновление: 3 декабря 2025 г.
В некоторых архитектурах моделей есть части, которые особенно сложно компилировать: либо в них много разрывов графа, либо происходят сбои. Возможно, вы захотите явно отключить эти проблемные части модели, чтобы применить torch.compile к тем частям, которые работают. Для этого можно использовать декоратор @torch.compiler.disable. Когда torch.compile пытается вызвать отключённую функцию, происходит разрыв графа, трассировка отключённой функции пропускается и возобновляется после вызова. По умолчанию все рекурсивные вызовы из отключённой функции также отключаются. Используйте параметр recursive=False, чтобы разрешить компиляцию рекурсивных вызовов.
def inner1(x):
torch._dynamo.graph_break() # not traced
return x + 1 # not traced
@torch.compiler.disable
def outer1(x):
x = x + 2 # not traced
torch._dynamo.graph_break() # not traced
return inner1(x)
@torch.compile
def f(x):
x = outer1(x)
return x + 4 # traced
print(f(torch.ones(3)))
def inner2(x):
torch._dynamo.graph_break() # traced
return x + 1 # traced
@torch.compiler.disable(recursive=False)
def outer2(x):
x = x + 2 # not traced
torch._dynamo.graph_break() # not traced
return inner2(x)
@torch.compile
def g(x):
x = outer2(x)
return x + 4 # traced
print(g(torch.ones(3)))
Например, можно использовать torch.compiler.disable, чтобы отключить torch.compile для разреженной архитектуры в рекомендательных моделях, поскольку разреженную архитектуру сложно компилировать. Предварительная обработка и функции ведения журналов — другие примеры функций, которые обычно вызывают множество разрывов графа и не получают преимуществ от компиляции.
Если у вас происходят сбои компилятора, но вы хотите продолжить работу несмотря на это, можно задать torch._dynamo.config.suppress_errors = True. При сбое компилятора мы просто пропустим трассировку функции и попробуем снова позже. Это не лучший подход — в конечном итоге лучше вручную добавить аннотации disable там, где это необходимо.
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/user_guide/torch_compiler/compile/programming_model.compiler_disable.html