torch.onnx
Обзор
Open Neural Network eXchange (ONNX) — это открытый стандартный формат для представления моделей машинного обучения. Модуль torch.onnx захватывает вычислительный граф из модели PyTorch torch.nn.Module и преобразует его в ONNX граф.
Экспортированная модель может быть использована любыми из многих интерпретаторов, поддерживающих ONNX, включая ONNX Runtime от Microsoft .
Существует два варианта API экспортера ONNX, которые вы можете использовать:
Экспортер ONNX на основе TorchDynamo
Экспортер ONNX на основе TorchDynamo — это новейший (и бета-версии) экспортер для PyTorch 2.0 и новее
Двигатель TorchDynamo используется для подключения к API оценки фрейма Python и динамической переработки его байткода в граф FX. Полученный граф FX затем дорабатывается, прежде чем он, наконец, будет переведён в граф ONNX.
Главным преимуществом этого подхода является то, что граф FX захватывается с помощью анализа байткода, который сохраняет динамическую природу модели вместо использования традиционных методов статического отслеживания.
Узнать больше об экспортере ONNX на основе TorchDynamo
Экспортер ONNX на основе TorchScript
Экспортер ONNX на основе TorchScript доступен с PyTorch 1.2.0
TorchScript используется для отслеживания (через torch.jit.trace()) модели и захвата статического вычислительного графа.
В результате полученный граф имеет несколько ограничений:
- Он не записывает ни одного потока управления, например, операторов if или циклов;
- Не обрабатывает тонкости между режимами
trainingиeval; - Не обрабатывает динамические входные данные должным образом
В попытке обойти ограничения статического отслеживания, экспортер также поддерживает скриптинг TorchScript (через torch.jit.script()), который добавляет поддержку потока управления, зависящего от данных, например. Однако сам TorchScript является подмножеством языка Python, поэтому не все функции Python поддерживаются, такие как операции на месте.
Узнать больше об экспортере ONNX на основе TorchScript
Содействие / Разработка
Экспортер ONNX — это проект сообщества, и мы приветствуем ваши contributions. Мы следуем руководству PyTorch по contributions, но вы также можете быть заинтересованы в чтении нашей вики разработки.
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/onnx.html