ONNX и Машинное обучение Azure
Узнайте, как использовать Exchange с открытой нейронной сетью (ONNX), чтобы оптимизировать вывод модели машинного обучения. Вывод или оценка модели — это процесс использования развернутой модели для создания прогнозов для рабочих данных.
Оптимизация моделей машинного обучения для вывода требует настройки модели и библиотеки выводов, чтобы сделать большую часть аппаратных возможностей. Эта задача становится сложной, если вы хотите получить оптимальную производительность на разных платформах, таких как облако или пограничный процессор, ЦП или GPU, и т. д., так как каждая платформа имеет различные возможности и характеристики. Сложность увеличивается, если у вас есть модели из различных платформ, которые должны работать на разных платформах. Это может быть много времени для оптимизации всех различных сочетаний платформ и оборудования. Поэтому полезное решение заключается в том, чтобы обучить модель один раз в предпочитаемой платформе, а затем запустить ее в любом месте в облаке или пограничном сервере— это решение, где входит ONNX.
Что такое ONNX?
Корпорация Майкрософт и сообщество партнеров создали ONNX как открытый стандарт для представления моделей машинного обучения. Модели из многих платформ , включая TensorFlow, PyTorch, scikit-learn, Keras, Chainer, MXNet и MATLAB, можно экспортировать или преобразовать в стандартный формат ONNX. После того как модели находятся в формате ONNX, их можно запускать на различных платформах и устройствах.
Среда выполнения ONNX — это высокопроизводительный механизм вывода для развертывания моделей ONNX в рабочей среде. Она оптимизирована как для облачной, так и для пограничной среды в Linux, Windows и Mac. Хотя ONNX написан на C++, он также содержит API C, Python, C#, Java и JavaScript (Node.js) для использования во многих средах. ONNX Runtime поддерживает как глубокие нейронные сети (DNN), так и традиционные модели машинного обучения, а также интегрируется с акселераторами на другом оборудовании, например TensorRT на gpu Nvidia, OpenVINO на процессорах Intel и DirectML в Windows. С помощью среды выполнения ONNX вы можете использовать преимущества обширных оптимизаций производственного уровня, тестирования и постоянных улучшений.
Среда выполнения ONNX используется в высокомасштабируемых службы Майкрософт таких как Bing, Office и Azure AI. Хотя повышение производительности зависит от многих факторов, эти службы Майкрософт сообщают о среднем 2x производительности на ЦП. Помимо служб Машинного обучения Azure Services, среда выполнения ONNX также работает в других продуктах, поддерживающих рабочие нагрузки машинного обучения, в том числе в следующих.
- Windows: среда выполнения встроена в Windows как часть Windows Машинное обучение и работает на сотнях миллионов устройств.
- Семейство продуктов SQL Azure: запуск собственной оценки данных в Azure SQL Edge и Управляемый экземпляр SQL Azure.
- ML.NET. Запуск моделей ONNX в ML.NET.
Получение моделей ONNX
Модели ONNX можно получить различными способами:
- Обучить новую модель ONNX в Машинное обучение Azure (как описано в разделе примеров этой статьи) или с помощью возможностей автоматизированного машинного обучения.
- Преобразуйте существующую модель из другого формата в ONNX, как показано в этих руководствах.
- Получите предварительно обученную модель ONNX из зоопарка моделей ONNX.
- Создайте настраиваемую модель ONNX из службы azure AI Пользовательское визуальное распознавание.
Многие модели, включая классификацию изображений, обнаружение объектов и модели обработки текста, можно представить как модели ONNX. Если возникла проблема с моделью, которая не может быть преобразована успешно, отправьте проблему GitHub в репозитории используемого преобразователя. Вы можете продолжать использовать существующий формат модели, пока проблема не будет устранена.
Развертывание модели ONNX в Azure
С помощью Машинного обучения Azure можно развертывать модели ONNX, управлять ими и осуществлять мониторинг. С помощью стандартного рабочего процесса развертывания MLOps и среды выполнения ONNX можно создать конечную точку REST, размещенную в облаке. Примеры см. в этих записных книжках Jupyter.
Установка и использование среды выполнения ONNX с Python
Пакеты Python для среды выполнения ONNX доступны в PyPi.org (ЦП и GPU). Перед установкой обязательно просмотрите требования к системе.
Чтобы установить среду выполнения 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 Python см. в документации по среде выполнения ONNX.
Примеры
- Узнайте, как запускать записные книжки, следуя указаниям из статьи Использование записных книжек Jupyter в Машинном обучении Azure.
- Примеры, показывающие использование ONNX на других языках, см. в GitHub среды выполнения ONNX.
Связанный контент
Узнайте больше об ONNX или поддержите проект.
Узнайте больше о среде выполнения ONNX или поддержите проект.