Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как open Neural Network Exchange (ONNX) помогает оптимизировать вывод моделей машинного обучения. Инференс или оценка модели — процесс использования развернутой модели для генерации предсказаний на производственных данных.
Оптимизация моделей машинного обучения для вывода требует настройки модели и библиотеки выводов, чтобы сделать большую часть аппаратных возможностей. Эта задача становится сложной, если вы хотите получить оптимальную производительность на разных платформах, таких как облако, edge, ЦП или GPU, так как каждая платформа имеет различные возможности и характеристики. Сложность увеличивается, если необходимо запускать модели из различных платформ на разных платформах. Это может быть много времени для оптимизации всех различных сочетаний платформ и оборудования.
Полезное решение заключается в том, чтобы обучить модель один раз в предпочитаемой платформе, а затем экспортировать или преобразовать ее в ONNX, чтобы она может работать в любом месте в облаке или пограничном сервере. Корпорация Майкрософт и сообщество партнеров создали ONNX как открытый стандарт для представления моделей машинного обучения. Вы можете экспортировать или преобразовать модели из многих платформ в стандартный формат ONNX. Поддерживаемые платформы включают TensorFlow, PyTorch, scikit-learn, Keras, Chainer, MXNet и MATLAB. Модели можно запускать в формате ONNX на различных платформах и устройствах.
На этой схеме потока ONNX показаны доступные платформы и параметры развертывания.
Среда выполнения ONNX
Среда выполнения ONNX — это высокопроизводительный механизм вывода для развертывания моделей ONNX в рабочей среде. Среда выполнения ONNX оптимизирована как для облака, так и для пограничных вычислений, а также работает в Linux, Windows и macOS. ONNX написан на C++, но также содержит API C, Python, C#, Java и JavaScript (Node.js), которые можно использовать в этих средах.
Среда выполнения ONNX поддерживает как глубокие нейронные сети, так и традиционные модели машинного обучения. Она интегрируется с акселераторами на другом оборудовании, например TensorRT на GPU NVIDIA, OpenVINO на процессорах Intel и DirectML в Windows. Используя среду выполнения ONNX, вы можете воспользоваться обширными оптимизациями производственного класса, тестированием и текущими улучшениями.
Высокомасштабируемые службы Майкрософт, такие как Bing, Office и Azure AI, используют среду выполнения ONNX. Хотя повышение производительности зависит от многих факторов, средние показатели производительности этих служб Майкрософт увеличиваются в 2 раза на ЦП благодаря использованию ONNX. Среда выполнения ONNX выполняется в Машинное обучение Azure и других продуктах Майкрософт, поддерживающих рабочие нагрузки машинного обучения, включая:
- Windows. Среда выполнения ONNX встроена в Windows в рамках Машинного обучения Windows и работает на сотнях миллионов устройств.
- SQL Azure. Azure SQL Edge и Управляемый экземпляр SQL Azure использовать ONNX для запуска собственной оценки данных.
- ML.NET. Пример см. в руководстве по обнаружению объектов с помощью ONNX в ML.NET.
Способы получения моделей ONNX
Модели ONNX можно получить несколькими способами:
- Обучить новую модель ONNX в Машинное обучение Azure или использовать возможности автоматизированного машинного обучения.
- Преобразование существующей модели из другого формата в ONNX. Дополнительные сведения см . в руководствах ONNX.
- Получите предварительно обученную модель ONNX из зоопарка моделей ONNX.
- Создайте настраиваемую модель ONNX из службы пользовательского визуального распознавания Azure.
Можно представить множество моделей как ONNX, включая классификацию изображений, обнаружение объектов и модели обработки текста. Если модель не удается преобразовать, отправьте ошибку GitHub в репозитории используемого преобразователя.
Развертывание модели ONNX в Azure
Вы можете развертывать, управлять и отслеживать модели ONNX в Машинное обучение Azure. Используя стандартный рабочий процесс развертывания MLOps с средой выполнения ONNX, можно создать конечную точку REST, размещенную в облаке.
Пакеты Python для среды выполнения ONNX
Пакеты Python для среды выполнения ЦП и GPU ONNX доступны в PyPi.org. Перед установкой обязательно просмотрите требования к системе.
Чтобы установить среду выполнения ONNX для Python, используйте одну из следующих команд.
pip install onnxruntime # CPU build
pip install onnxruntime-gpu # GPU build
Чтобы вызвать среду выполнения ONNX в скрипте Python, используйте следующий код:
import onnxruntime
session = onnxruntime.InferenceSession("path to model")
Входные и выходные данные для использования модели см. в документации к соответствующей модели. Для просмотра модели можно также использовать такое средство визуализации, как Netron.
Среда выполнения ONNX позволяет запрашивать метаданные модели, входные данные и выходные данные, как показано ниже.
session.get_modelmeta()
first_input_name = session.get_inputs()[0].name
first_output_name = session.get_outputs()[0].name
Чтобы выполнить вывод в модели, используйте run и передайте список выходных данных, которые вы хотите вернуть, и карту входных значений. Оставьте список выходных данных пустым, если требуется все выходные данные. Результатом будет список выходных данных.
results = session.run(["output1", "output2"], {
"input1": indata1, "input2": indata2})
results = session.run([], {"input1": indata1, "input2": indata2})
Полный справочник по API среды выполнения ONNX см. в документации по API Python.