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

Машинное обучение — это быстро развивающееся направление в ИТ-индустрии. Благодаря интенсивной исследовательской работе методы машинного обучения быстро стали применяться в различных областях. Согласно опросу Fortune Business Insights, ожидается, что мировой рынок машинного обучения вырастет с 21,17 млрд долларов в 2022 году до 209,91 млрд долларов к 2029 году при среднегодовом темпе роста 38,8% в прогнозируемый период. С такими большими числами становится критически важным использовать инструменты для создания конвейеров рабочих процессов машинного обучения в производственной среде.

Зачем использовать машинное обучение в производстве?

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

Машинное обучение для производства сочетает в себе концепцию машинного обучения и разработки программного обеспечения, чтобы помочь в развертывании машинного обучения в рабочей среде. Для решения часто возникающих проблем предпочтительны инструменты машинного обучения, такие как MLflow, Kubeflow или TFX. Теперь мы углубимся в MLflow.

Что такое MLflow?

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

Рабочий процесс MLflow позволяет работать с любой ML Framework. Это помогает определить код по соглашению и требует минимальных изменений для интеграции в существующую кодовую базу.

Рабочий процесс машинного обучения в производстве с использованием MLflow

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

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

Компоненты Млфлов

Отслеживание Млфлоу

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

Млфлов проекты

  • Проекты MLflow помогают упаковать код записной книжки машинного обучения, чтобы его можно было повторно использовать и воспроизвести.
  • Проекты MLflow включают API и CLI-инструменты для выполнения и организации кода.
  • Проект в основном представляет собой папку, содержащую код.
  • Чтобы выполнить этот каталог, добавьте файл MLproject в формате YAML. Каждый код проекта включает имя, виртуальную среду и точки входа в проект машинного обучения.

Модели MLflow

  • Модель MLflow — это инструмент, который позволяет развернуть ту же модель для обслуживания в режиме реального времени с помощью REST API или пакетного вывода на таких платформах, как AWS Sagemaker, Docker, Azure ML и т. д.
  • Формат YAML модели MLflow включает time_created, run_id, версию MLflow, подпись и input_example.

Реестр моделей MLflow

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

Код для понимания рабочего процесса MLflow

Перейдем к пошаговой процедуре. Установите MLflow из PyPI через

pip install mlflow

Чтобы понять рабочий процесс MLflow, рассмотрим пример регрессии для прогнозирования цены на дом в Бостоне.

Шаг 1: Импортируйте необходимые модули

import mlflow
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import AdaBoostRegressor
from sklearn.metrics import mean_absolute_error,mean_squared_error
from sklearn.model_selection import train_test_split
import warnings
warnings.filterwarnings("ignore")

Шаг 2: Загрузите набор данных

С помощью наборов данных sklearn загружайте данные load_boston и разделяйте набор данных для обучения и тестирования.

X, y = load_boston(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)

Шаг 3. Создайте эксперимент MLflow.

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

experiment_name = 'Boston_Price'
try:
   exp_id = mlflow.create_experiment(name=experiment_name)
except:
   exp_id = mlflow.get_experiment_by_name(experiment_name).experiment_id

Шаг 4: Запустите модель

Модель обучается и прогнозируется в экземпляре mlflow.start_run. Метрики оценки и гиперпараметры сохраняются в файлах mlflow.log_metric и mlflow.log_param соответственно.

Примечание. Создайте папку с изображениями и добавьте 1 или 2 изображения визуализации модели, чтобы они действовали как артефакты.

with mlflow.start_run(experiment_id=exp_id):
  mlflow.log_artifacts('images') #to save a snapshot of the result
  n_estimators=100
  learning_rate=1.3
  
  #build a Machine Learning model using sklearn library
  abr = AdaBoostRegressor(n_estimators=n_estimators,learning_rate=learning_rate,random_state=42).fit(X_train, y_train)
  y_pred = abr.predict(X_test)
  
  mae = mean_absolute_error(y_test, y_pred)
  
  #create a log for Hyperparameters
  mlflow.log_param('n_estimators', n_estimators)
  mlflow.log_param('learning_rate', learning_rate)
  
  #create log for evaluation metrics
  mlflow.log_metric('mae', mae)
  mlflow.sklearn.log_model(abr, "Boston_Price")

Шаг 5: Разверните модель на локальном хосте

mlflow.set_tracking_uri("https://localhost:7501")

Boston Price Model теперь запускает модель в производстве, чтобы проверить журналы модели, выполните приведенную ниже команду после запуска mlflow.set_tracking_url.

Шаг 6: Визуализируйте развернутую модель в браузере.

Откройте терминал и запустите пользовательский интерфейс mlflow, чтобы визуализировать модель машинного обучения в процессе производства.

mlflow ui

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

Выход:

Заключение

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

Ссылка:

- MLflow — Официальная документация