Что нужно знать, запуская модель машинного обучения в производство? Прежде чем приступить к операциям машинного обучения (MLOPs), важно четко понимать следующие четыре концепции. Такие инструменты могут помочь специалистам по данным и инженерам переосмыслить проблемы, возникающие на протяжении всего жизненного цикла машинного обучения, в качестве потенциальных областей роста.

Потребность в MLops

Есть несколько причин, почему MLOps важны. Начнем с того, что специалистам по данным и инженерам трудно справиться с огромными объемами данных, необходимых для моделей машинного обучения. Кроме того, может быть сложно отслеживать все параметры модели машинного обучения. Вы можете увидеть резкий сдвиг в результатах вашей модели машинного обучения после внесения всего нескольких незначительных изменений. Функции, используемые моделью, также должны отслеживаться, поскольку инженерия функций играет значительную роль в жизненном цикле машинного обучения и может иметь большое влияние на правильность модели.

Мониторинг модели машинного обучения в производственной среде отличается от мониторинга других типов программного обеспечения, например веб-приложения, и отладка модели машинного обучения затруднена. Для создания прогнозов моделям требуются данные из реального мира, а данные из реального мира могут меняться со временем.

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

Прежде чем внедрять машинное обучение в производство, вам необходимо понять четыре важнейших аспекта: возможности MLOps, интеграция с открытым исходным кодом, конвейеры машинного обучения и MLflow.

Возможности MLOps

Прежде чем внедрять возможности MLOps в производство, необходимо рассмотреть несколько вариантов. На первом месте стоит способность создавать воспроизводимые конвейеры машинного обучения. Вы можете создавать повторяющиеся и повторно используемые этапы для процессов подготовки данных, обучения и оценки с использованием конвейеров машинного обучения. Эти процессы должны включать в себя создание программных сред, которые можно повторно использовать для обучения и развертывания моделей, а также возможность регистрировать, упаковывать и развертывать модели из любого места. Использование конвейеров позволяет часто обновлять модели и вводить новые модели вместе с другими приложениями и сервисами ИИ.

В дополнение к отслеживанию сопутствующей информации, необходимой для использования модели, вы должны собирать данные управления на протяжении всего жизненного цикла машинного обучения. В последнем случае информация о происхождении может включать в себя, кто опубликовал модель, почему в какое-то время были внесены изменения и когда отдельные модели были развернуты или использованы в производстве.

Уведомления и оповещения о событиях внутри жизненного цикла машинного обучения также важны. Кроме того, вы должны отслеживать приложения машинного обучения на предмет операционных проблем и проблем, связанных с ML. Исследователи данных должны иметь возможность сравнивать входные данные модели во время обучения и во время вывода, исследовать метрики, характерные для модели, и устанавливать мониторинг и оповещения в инфраструктуре машинного обучения.

Интеграция с открытым исходным кодом

Прежде чем использовать машинное обучение в производстве, вам также необходимо понять интеграцию с открытым исходным кодом. Здесь представлены три невероятно важные технологии с открытым исходным кодом. Во-первых, существуют обучающие фреймворки с открытым исходным кодом, которые отлично подходят для ускорения решений машинного обучения. Далее идут рамки для интерпретируемых и справедливых моделей с открытым исходным кодом. Наконец, доступны инструменты развертывания с открытым исходным кодом.

Существует несколько обучающих фреймворков с открытым исходным кодом. Наиболее известными являются PyTorch, TensorFlow и RAY. PyTorch — это комплексная платформа машинного обучения, включающая TorchServe, простой в использовании инструмент для масштабирования развертывания моделей PyTorch. PyTorch также поддерживает мобильное развертывание и облачные платформы. Наконец, у PyTorch есть поддержка внешнего интерфейса C++: чистый интерфейс C++ для PyTorch, который соответствует дизайну и архитектуре внешнего интерфейса Python.

TensorFlow — еще одна выдающаяся сквозная платформа машинного обучения на рынке. TensorFlow Extended (TFX) — это сквозная платформа для подготовки данных, обучения, проверки и развертывания моделей машинного обучения в крупных производственных контекстах. Эта функциональность является частью MLOps. Конвейер TFX — это ряд компонентов, созданных специально для масштабируемых и высокопроизводительных действий по машинному обучению.

RAY — это инфраструктура обучения с подкреплением (RL), которая включает обучающие библиотеки Tune, RLlib, Train и Dataset. Tune полезен для настройки гиперпараметров. RLlib используется для обучения модели RL. Train используется для глубокого распределенного обучения. Набор данных предназначен для загрузки разрозненных данных. Serve и Workflows — это еще две библиотеки RAY, которые полезны для доставки моделей машинного обучения и распределенных приложений в рабочую среду.

Развертывание модели позволяет воспользоваться преимуществами нашей третьей технологии с открытым исходным кодом. При работе с многочисленными фреймворками и инструментами необходимо развертывать модели в соответствии со спецификациями каждого фреймворка. Вы можете использовать формат ONNX для стандартизации этой процедуры.

Открытая нейросетевая биржа представлена ​​компанией ONNX. ONNX — это формат модели машинного обучения с открытым исходным кодом, который облегчает взаимодействие между платформами. Это означает, что вы можете обучать модель с помощью одной из нескольких популярных платформ машинного обучения, таких как PyTorch, TensorFlow или RAY. Затем вы можете конвертировать его в формат ONNX и использовать в других фреймворках, таких как ML.NET.

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

Существует несколько распространенных фреймворков, которые позволяют конвертировать ONNX. Некоторые из них, такие как PyTorch, включают встроенный вывод в формате ONNX. Для других, таких как TensorFlow и Keras, существуют отдельные устанавливаемые пакеты, которые могут выполнять это преобразование. Процедура довольно проста: во-первых, требуется модель, обученная с использованием любого фреймворка, который позволяет экспортировать и конвертировать в формат ONNX. Затем модель загружается и выполняется с использованием ONNX Runtime. Наконец, производительность можно настроить с помощью различных параметров среды выполнения и аппаратных ускорителей.

Конвейеры машинного обучения

Существует несколько распространенных фреймворков, которые позволяют конвертировать ONNX. Некоторые из них, такие как PyTorch, включают встроенный вывод в формате ONNX. Для других, таких как TensorFlow и Keras, существуют отдельные устанавливаемые пакеты, которые могут выполнять это преобразование. Процедура довольно проста: во-первых, требуется модель, обученная с использованием любого фреймворка, который позволяет экспортировать и конвертировать в формат ONNX. Затем модель загружается и выполняется с использованием ONNX Runtime. Наконец, производительность можно настроить с помощью различных параметров среды выполнения и аппаратных ускорителей.

Основной персонаж в сценарии оркестровки модели — специалист по обработке и анализу данных. В этом случае стандартный конвейер идет от данных к модели. Kubeflow Pipelines — обычная альтернатива этой ситуации с точки зрения технологий с открытым исходным кодом.

В сценарии оркестровки данных основным персонажем является инженер по данным, а каноническим конвейером — данные в данные. Apache Airflow — частая альтернатива с открытым исходным кодом для этого случая.

Третий сценарий — оркестровка кода и приложений. Основная персона в этом случае — разработчик приложений. Стандартный поток здесь — от кода к модели и сервису. Дженкинс — обычное решение с открытым исходным кодом для этого случая.

Ниже приведен пример конвейера, созданного с помощью Машинного обучения Azure. Служба машинного обучения Azure вычисляет потребности в аппаратных вычислительных ресурсах, ресурсах операционной системы, таких как образы Docker, программных ресурсах, таких как Conda, и входных данных для каждого шага.

Млфлоу

MLflow — это последний инструмент, который следует рассмотреть перед внедрением машинного обучения в производство. MLflow — это фреймворк с открытым исходным кодом для управления всем жизненным циклом машинного обучения. Он состоит из четырех основных компонентов, которые имеют решающее значение для его срока службы.

Во-первых, есть Отслеживание MLflow, которое отслеживает испытания, чтобы вы могли впоследствии анализировать и сравнивать данные. Результаты запуска MLflow можно сохранить локально в файл, загрузить на сервер отслеживания или сохранить в базе данных, совместимой с SQLAlchemy. Python, R, Java и REST API могут использоваться для записи данных о прогоне. Способность MLflow организовывать запуски в эксперименты полезна для сравнения их друг с другом и для анализа того, как разные запуски подходят к одной и той же проблеме.

Затем у нас есть Проекты MLflow, которые организуют код ML в проект, что упрощает его совместное использование с другими специалистами по данным или перемещение в рабочую среду. В этом документе изложены правила упаковки кода науки о данных. Также можно связать множество проектов в рабочие процессы с помощью API этого компонента и утилит командной строки для выполнения проектов.

Затем есть Модели MLflow, которые представляют собой платформу для управления и развертывания моделей, созданных с использованием различных библиотек машинного обучения, в различных средах обслуживания моделей и вывода. Для использования в последующих приложениях, таких как обслуживание в режиме реального времени через REST API или пакетный вывод в Apache Spark, модели машинного обучения часто упаковываются в так называемую модель. Вы можете думать о модели как о каталоге, который содержит любое количество файлов вместе с файлом модели в корне каталога, который указывает, сколько различных способов можно просмотреть модель.

Третьей частью является Реестр MLflow, который предоставляет централизованный репозиторий моделей, API-интерфейсы и пользовательский интерфейс для согласованного управления всей продолжительностью жизни модели MLflow. Это позволяет отслеживать историю модели, а также версии модели, изменения состояния и аннотации. Если вы хотите отслеживать свои модели машинного обучения на протяжении всего их жизненного цикла и использовать централизованное хранилище моделей и различные API, вам нужен реестр.

Мы обсудили, что четко определенная и повторяемая процедура развертывания машинного обучения в производстве может быть установлена ​​​​с использованием функций MLOps, таких как интеграция с открытым исходным кодом, конвейеры машинного обучения и MLflow. Таким образом, ваши специалисты по обработке и анализу данных могут без особых усилий опробовать новые модели и фреймворки. Еще один способ превратить ограничение в преимущество — усовершенствовать операционные процедуры готовых к производству систем машинного обучения. Это даст вам возможность быстро обновлять свои модели, когда новая информация становится доступной из реального мира.