onnx

Открытый формат представления моделей машинного обучения, который обеспечивает совместимость между различными фреймворками. Он позволяет разработчикам использовать модели, созданные в одной среде (PyTorch, TensorFlow, Keras и др.), в других средах без необходимости переписывания или адаптации. ONNX предоставляет унифицированную спецификацию для описания архитектуры нейронных сетей, включая слои, веса, параметры и граф вычислений, что способствует гибкости разработки и ускоряет внедрение моделей в производство.

Особенности

  • унифицированный формат представления моделей, поддерживаемый множеством фреймворков;
  • широкая экосистема инструментов для конвертации, оптимизации и инференса;
  • высокая производительность инференса через ONNX Runtime с поддержкой различных аппаратных ускорителей;
  • расширяемый набор операторов (операций), покрывающий потребности современных нейросетей;
  • возможность уменьшения размера модели и ускорения вычислений с помощью квантования и оптимизации графа.

Основные компоненты

Экосистема ONNX состоит из нескольких ключевых компонентов, которые обеспечивают создание, преобразование, оптимизацию и выполнение моделей в формате ONNX (подробнее с документацией можно ознакомиться здесь).

Формат и спецификация ONNX

Основой ONNX является спецификация, определяющая структуру модели: граф вычислений, типы данных, операторы и метаданные. Модель представляется в виде протобуфера (protobuf) или сохраняется в двоичном формате .onnx.

Ключевые элементы спецификации:

  • Граф (Graph): набор узлов (node), входов и выходов, описывающих поток данных;
  • Узлы (Nodes): операции (свёртка, пулинг, активация и др.), применяемые к тензорам;
  • Тензоры (Tensors): многомерные массивы с определённым типом данных (float, int8, uint8 и т.д.);
  • Атрибуты (Attributes): параметры операций (например, размер ядра свертки);
  • Метаданные: информация о версии модели, имени, документации.

Набор операторов

ONNX включает стандартизированный набор операторов (ops), которые покрывают основные строительные блоки нейронных сетей. Каждая версия ONNX расширяет или уточняет этот набор, обеспечивая совместимость моделей между различными реализациями.

Основные группы операторов:

  • Тензорные операции: конкатенация, изменение формы, транспонирование, срезы;
  • Нейросетевые слои: свёртка, пулинг, нормализация, рекуррентные слои (LSTM, GRU);
  • Активации: ReLU, Sigmoid, Tanh, Softmax;
  • Математические функции: сложение, умножение, тригонометрические, статистические;
  • Квантованные операторы: для выполнения моделей с пониженной точностью (INT8, UINT8).

ONNX Runtime

ONNX Runtime — это высокопроизводительный движок для инференса моделей в формате ONNX. Он поддерживает множество аппаратных платформ (CPU, GPU, NPU) и предоставляет API для C++, Python, C#, Java и других языков.

Ключевые возможности ONNX Runtime:

  • Аппаратные ускорители: CUDA, TensorRT, OpenVINO, DirectML, CoreML, ARM Compute Library;
  • Оптимизация графа: слияние узлов, устранение общих подвыражений, квантование;
  • Расширяемость: возможность добавления пользовательских операторов;
  • Режимы выполнения: синхронный, асинхронный, многопоточный.

Инструменты конвертации и оптимизации

Для работы с моделями ONNX существует набор утилит, позволяющих преобразовывать модели из популярных фреймворков, оптимизировать их и проверять на корректность.

Основные инструменты:

  • onnxmltools: конвертация моделей из CoreML, LightGBM, XGBoost, Spark ML;
  • tf2onnx: преобразование TensorFlow моделей в ONNX;
  • pytorch-onnx: встроенный экспорт из PyTorch через torch.onnx.export;
  • skl2onnx: конвертация моделей scikit-learn;
  • onnxoptimizer: оптимизация графа (удаление лишних узлов, упрощение);
  • onnxsim: упрощение модели с постоянным свёртыванием (constant folding).

Валидация и проверка моделей

Чтобы гарантировать корректность и совместимость моделей, ONNX предоставляет инструменты для проверки соответствия спецификации и тестирования.

Инструменты валидации:

  • onnxchecker: статическая проверка структуры модели (типы данных, формы, ссылки);
  • onnxruntime validation: запуск модели с тестовыми данными и сравнение результатов с эталоном;
  • backend-scoreboard: набор тестов для проверки поддержки операторов различными бэкендами.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "onnx/1.18.0@aurora",
    )    

Процесс локальной сборки описан в документации.

onnx

Open standard for machine learning interoperability.
Лицензия
Apache-2.0
Версия
Домашняя страница
Скачать
armv7
1.38 Mb
MD5: 428b5011ad94fbd245a112b564ada7d5
Updated: 08.04.2026, 20:22:44
x86_64
1.57 Mb
MD5: ff7a7f5973f1135dceb85f0940fcddba
Updated: 08.04.2026, 20:22:45
armv8
1.42 Mb
MD5: db5c64297b99da25d0cd092a21983482
Updated: 08.04.2026, 20:22:38
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.