Spec-Zone.ru › PyTorch 2.14

torch.compiler

Создано: Jul 28, 2023 | Последнее обновление: Jul 20, 2026

torch.compiler — это пространство имен, через которое пользователям предоставляются некоторые внутренние методы компилятора. Основная функция и возможность этого пространства имен — torch.compile.

torch.compile — это функция PyTorch, появившаяся в PyTorch 2.x. Она призвана решить проблему точного захвата графов в PyTorch и в конечном итоге позволить инженерам-программистам быстрее запускать программы PyTorch. torch.compile написана на Python и знаменует переход PyTorch с C++ на Python.

torch.compile использует следующие базовые технологии:

  • TorchDynamo (torch._dynamo) — это внутренний API, использующий возможность CPython под названием Frame Evaluation API для безопасного захвата графов PyTorch. Методы, доступные пользователям PyTorch, предоставляются через пространство имен torch.compiler.
  • TorchInductor — это используемый по умолчанию компилятор глубокого обучения torch.compile, который генерирует быстрый код для различных ускорителей и бэкендов. Для ускорения работы с помощью torch.compile необходим компилятор бэкенда. Для графических процессоров NVIDIA, AMD и Intel в качестве ключевого строительного блока используется OpenAI Triton.
  • AOT Autograd захватывает не только пользовательский код, но и обратное распространение, что позволяет захватить обратный проход «заранее». Это дает возможность ускорить как прямой, так и обратный проход с помощью TorchInductor.

Чтобы лучше понять, как torch.compile отслеживает выполнение вашего кода, или узнать больше о внутреннем устройстве torch.compile, см. модель программирования torch.compile.

Примечание

В некоторых случаях в этой документации термины torch.compile, TorchDynamo и torch.compiler могут использоваться как взаимозаменяемые.

torch.compiler также включает API для компиляции заранее — torch.compiler.precompile. Он захватывает целое вычисление fn(*example_inputs) — вместе с моделью (или моделями), переданной среди example_inputs, например precompile(lambda model, x: model(x), model, x), — и преобразует его в автономную исполняемую строку исходного кода Python, а также кэш ускорения. Загрузите артефакт с помощью torch.compiler.precompile.load; поскольку веса в него не включены, модель нужно передать повторно во время выполнения. Подробности см. в справочнике по API.

Предупреждение

torch.compile может не поддерживать недавно выпущенные основные версии Python.

При попытке использовать @torch.compile в неподдерживаемой среде Python может возникнуть ошибка, подобная следующей:

RuntimeError: torch.compile is not supported on Python 3.xx.0+

Убедитесь, что используемая версия Python входит в диапазон версий, поддерживаемых PyTorch для torch.compile.

Если вы установили PyTorch на слишком новую версию Python, для использования torch.compile необходимо перейти на более раннюю версию Python.

Как упоминалось выше, для ускорения рабочих процессов torch.compile с помощью TorchDynamo требуется бэкенд, который преобразует захваченные графы в быстрый машинный код. Разные бэкенды могут обеспечивать различный прирост производительности. Бэкенд по умолчанию называется TorchInductor, также известен как inductor. TorchDynamo поддерживает список бэкендов, разработанных нашими партнерами; его можно посмотреть, выполнив torch.compiler.list_backends(). Для каждого бэкенда предусмотрены дополнительные зависимости.

К наиболее часто используемым бэкендам относятся:

Бэкенды для обучения и инференса

Бэкенд

Описание

torch.compile(m, backend="inductor")

Использует бэкенд TorchInductor. Подробнее

torch.compile(m, backend="cudagraphs")

Графы CUDA с AOT Autograd. Подробнее

torch.compile(m, backend="ipex")

Использует IPEX на CPU. Подробнее

Бэкенды только для инференса

Бэкенд

Описание

torch.compile(m, backend="tensorrt")

Использует Torch-TensorRT для оптимизации инференса. Для регистрации бэкенда в вызывающем скрипте требуется import torch_tensorrt. Подробнее

torch.compile(m, backend="ipex")

Использует IPEX для инференса на CPU. Подробнее

torch.compile(m, backend="tvm")

Использует Apache TVM для оптимизации инференса. Подробнее

torch.compile(m, backend="openvino")

Использует OpenVINO для оптимизации инференса. Подробнее

© 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/torch.compiler.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API