Глоссарий

ONNX (Открытая биржа нейронных сетей).

Узнай, как ONNX улучшает переносимость и совместимость моделей ИИ, обеспечивая беспрепятственное развертывание Ultralytics YOLO моделей на различных платформах.

Обучай модели YOLO просто
с помощью Ultralytics HUB.

Узнай больше

В быстро развивающейся области искусственного интеллекта (ИИ) и машинного обучения (МЛ) эффективное перемещение моделей между различными инструментами и платформами имеет решающее значение. ONNX (Open Neural Network Exchange) решает эту проблему, предоставляя формат с открытым исходным кодом, разработанный специально для моделей ИИ. Он выступает в роли универсального транслятора, позволяя разработчикам тренировать модель в одном фреймворке, например в PyTorchа затем развернуть ее с помощью другого фреймворка или механизма вывода, например TensorFlow или специализированные runtimes. Такая совместимость упрощает путь от исследований до производства.

Актуальность ONNX

Основная ценность ONNX заключается в содействии переносимости и совместимости внутри экосистемы ИИ. Вместо того чтобы замыкаться в экосистеме конкретного фреймворка, разработчики могут использовать ONNX для свободного перемещения моделей. Определяя общий набор операторов и стандартный формат файлов, ONNX гарантирует, что структура модели и выученные параметры(веса) будут представлены последовательно. Это особенно полезно для пользователей Ultralytics YOLO так как Ultralytics предоставляет простые методы экспорта моделей в формат ONNX . Эта возможность экспорта позволяет пользователям брать такие модели, как YOLOv8 или YOLO11 и развернуть их на самых разных аппаратных и программных платформах, часто используя оптимизированные движки вывода для повышения производительности.

Как работает ONNX

ONNX достигает совместимости благодаря нескольким ключевым особенностям:

  • Общее представление модели: Он определяет стандартный набор операторов (например, слои свертки или функции активации) и типов данных. Когда модель преобразуется в ONNX, ее архитектура переводится на этот общий язык.
  • Структура, основанная на графе: Модели представляются в виде вычислительных графов, где узлы - это операции, а ребра - поток данных (тензоры). Это общая структура, используемая большинством фреймворков глубокого обучения.
  • Расширяемость: Хотя ONNX определяет основной набор операторов, он позволяет использовать пользовательские операторы, что обеспечивает поддержку новых архитектур моделей.
  • Версионирование: ONNX поддерживает версии операторов для обеспечения обратной совместимости, то есть модели, созданные с помощью старых версий, можно использовать по мере развития стандарта.

Применение ONNX

ONNX широко используется для преодоления разрыва между средами обучения моделей и целями развертывания. Вот два примера:

  1. Оптимизированное развертывание на граничных устройствах: Разработчик обучает модель обнаружения объектов с помощью Ultralytics YOLO на мощном сервере с графическими процессорами. Чтобы развернуть эту модель на пограничных устройствах с ограниченными ресурсами, они экспортируют модель в ONNX. Затем модель ONNX можно оптимизировать с помощью таких инструментов, как NVIDIA TensorRT для аппаратного обеспечения NVIDIA или OpenVINO отIntel для CPU/VPU Intel , что позволяет добиться более быстрых и эффективных выводов в реальном времени. Подробнее об этом читай в нашем руководстве по вариантам развертывания моделей.
  2. Кросс-фреймворк сотрудничество: Исследовательская группа разрабатывает новый компонент модели в PyTorch. Другая команда, ответственная за интеграцию этого компонента в более крупное приложение, построенное на TensorFlow, может получить компонент в виде ONNX . Это избавляет от необходимости сложного перевода кода или поддержания отдельных версий моделей для разных фреймворков, способствуя более удобному сотрудничеству в организациях, подобных тем, что перечислены на странице наших клиентов.

Смежные понятия

Понимание ONNX часто включает в себя смежные технологии:

  • ONNX Runtime: Это высокопроизводительный движок вывода, специально разработанный для эффективного выполнения моделей ONNX на различных аппаратных средствахCPU, GPUи т.д.). В то время как ONNX определяет формат, ONNX Runtime обеспечивает среду выполнения.
  • TensorRT: SDK от NVIDIA для высокопроизводительных выводов глубокого обучения, который может импортировать модели ONNX для оптимизации на графических процессорах NVIDIA . Ultralytics предлагает интеграциюTensorRT .
  • OpenVINO: инструментарий Intel для оптимизации и развертывания выводов ИИ, поддерживающий модели ONNX для выполнения на оборудовании Intel .
  • Экспорт модели: Процесс преобразования обученной модели из исходного формата фреймворка (например, PyTorch .pt) в стандартизированный формат вроде ONNX.
  • Развертывание модели: Общий процесс, когда обученная модель становится доступной для использования в производственной среде, где ONNX играет ключевую роль в упрощении кроссплатформенной совместимости. Ты можешь управлять развертыванием своих моделей ONNX с помощью таких платформ, как Ultralytics HUB.

Облегчая обмен и развертывание моделей, ONNX играет важную роль в том, чтобы сделать жизненный цикл разработки ИИ более гибким и эффективным.

Читать полностью