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 может помочь инженерам машинного обучения/специалистам по данным, в том числе крупным организациям, разработчикам библиотек машинного обучения, исследователям и инженерам-технологам.