Spec-Zone.ru › PyTorch 2

torch.compiler

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, называемую API оценки фреймов, для безопасного захвата графов PyTorch. Методы, доступные внешним пользователям PyTorch, предоставляются через пространство имён torch.compiler.
  • TorchInductor — это стандартный torch.compile компилятор глубокого обучения, который генерирует быстрый код для нескольких ускорителей и бэкэндов. Для того, чтобы ускорения через torch.compile стали возможными, вам необходимо использовать компилятор бэкэнда. Для графических процессоров NVIDIA и AMD он использует OpenAI Triton в качестве ключевого строительного блока.
  • AOT Autograd захватывает не только код на уровне пользователя, но и обратное распространение, что приводит к захвату обратного прохода «ahead-of-time». Это позволяет ускорить как прямой, так и обратный проход с помощью TorchInductor.

Примечание

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

Как упоминалось выше, для ускорения ваших рабочих процессов, 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 на процессоре. Подробнее

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

Использует ONNX Runtime для обучения на процессоре/графическом процессоре. Подробнее

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

Бэкэнд

Описание

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

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

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

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

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

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

Подробнее

Начало работы для пользователей PyTorch

  • Начало работы
  • Справочник API torch.compiler
  • Панель мониторинга производительности PyTorch 2.0
  • API TorchDynamo для точного отслеживания
  • Профилирование TorchInductor GPU
  • Профилирование для понимания производительности torch.compile
  • Часто задаваемые вопросы
  • Поиск и устранение неполадок в PyTorch 2.0

Подробное изучение для разработчиков PyTorch

  • Подробное изучение TorchDynamo
  • Обзор защит
  • Динамические формы
  • Поддержка NNModule в PyTorch 2.0
  • Рекомендации по работе с бэкендами
  • Деревья CUDAGraph
  • Фейковые тензоры

Руководство для поставщиков бэкэндов PyTorch

  • Настраиваемые бэкэнды
  • Написание преобразований графов в ATen IR
  • IR

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/torch.compiler.html

Spec-Zone.ru

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