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() каждый из которых со своими необязательными зависимостями.
Некоторые из наиболее часто используемых бэкэндов включают:
Бэкэнды для обучения и инференса
Бэкэнд | Описание |
|---|---|
| Использует бэкэнд TorchInductor. Подробнее |
| Графы CUDA с AOT Autograd. Подробнее |
| Использует IPEX на процессоре. Подробнее |
| Использует ONNX Runtime для обучения на процессоре/графическом процессоре. Подробнее |
Бэкэнды только для инференса
Бэкэнд | Описание |
|---|---|
| Использует ONNX Runtime для запуска TensorRT для оптимизации инференса. Подробнее |
| Использует IPEX для инференса на процессоре. Подробнее |
| Использует 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
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/torch.compiler.html