Машинное обучение — это дорогостоящий экспериментальный процесс. Каждый шаг должен быть тщательно спланирован, и каждый вход должен иметь значимое влияние на результат. Процесс может занять недели или месяцы, но как только он заработает, нет никаких признаков того, что его можно остановить по уважительной причине: алгоритмы машинного обучения по своей природе непредсказуемы и могут изменить курс в любой момент, потому что они «обучены». " на новых точках данных, которых раньше не было.

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

Что такое отслеживание экспериментов и почему это важно?

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

  • Различные модели ML
  • Гиперпараметры
  • Файлы конфигурации для среды
  • Версии данных, используемые для обучения и оценки
  • Визуализация производительности и многое другое

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

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

Что такое MLflow?

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

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

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

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

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

Некоторые важные функции отслеживания MLflow:

MLflow.start_run() -- starts/executes a run.
MLflow.end_run() -- ends a currently active run.
MLflow.log_artifacts() -- logs all the files given in a directory as artifacts.
....

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

Проект MLflow — это основанная на соглашении платформа для упаковки кода обработки данных в многоразовый и повторяемый рабочий процесс. Компонент «Проекты» также предлагает API и утилиты командной строки для выполнения проектов, что позволяет создавать рабочие процессы путем объединения проектов в цепочку.

MLflow поддерживает различные типы сред, такие как среда контейнера Docker, системная среда и среды Conda.

Модели MLflow

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

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

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

Рекомендуемая литература: Контроль версий данных: MLflow против DVC

Он обеспечивает отличное управление и контроль. Вы можете использовать интеграцию рабочих процессов CI/CD для отслеживания переходов между стадиями, анализа изменений и их утверждения.

Рекомендуемая литература: Документы по отслеживанию MLflow

Преимущества использования MLflow

Давайте рассмотрим некоторые преимущества MLflow.

  • Это инструмент MLOps с открытым исходным кодом.
  • Поддерживает множество инструментов и платформ
  • Широко настраиваемый
  • Он идеально подходит для проектов по науке о данных.
  • Ориентирует на весь жизненный цикл машинного обучения.
  • Работает с любой библиотекой ML.
  • Пользовательская визуализация

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

Рекомендуемая литература: Лучшие практики MLflow

Отслеживание экспериментов машинного обучения с помощью MLflow

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

Рабочий процесс пользовательского интерфейса

Установка Млфлоу:

pip install MLflow

Теперь откройте свой проект машинного обучения/файл кода конвейера машинного обучения.

Первый импорт:

import MLflow
import MLflow.sklearn

Теперь назовите эксперимент, который вы собираетесь отслеживать.

MLflow.set_experiment(experiment_name="MLflow demo")

Вы должны указать, что вы собираетесь отслеживать.

MLflow.log_metric("accuracy", model_accuracy) //metric logging
MLflow.log_metric("precision", precision) //metric logging
MLflow.sklearn.log_model(model, "model") //model logging
MLflow.log_param("max_depth", max_depth) //hyperparameters logging
...

Теперь откройте командную строку и напишите:

MLflow ui

Вы получите аналогичный результат — «Обслуживание на http://127.0.0.1:5000».

Чтобы узнать больше, загрузите код быстрого старта, клонировав MLflow через git clone и cd в подкаталог examples репозитория.

Рабочий процесс API

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

from MLflowf.tracking import MLflowClient

После импорта MLflowClient определите несколько параметров.

client = MLflowClient()
experiments = client.list_experiments() # returns a list of MLflow.entities.Experiment
run = client.create_run(experiments[0].experiment_id) # returns MLflow.entities.Run
client.log_param(run.info.run_id, "hello", "world")
client.set_terminated(run.info.run_id)

Вы можете получить больше информации в Пример репозитория MLFlow на Github

Рекомендуемая литература: Более эффективно создавать модели машинного обучения с помощью MLflow

Некоторые особенности MLflow

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

  • MLflow включает автоматическое ведение журнала. Он невероятно прост в использовании, и простая его активация гарантирует, что все потенциальные показатели будут зафиксированы и зарегистрированы. Keras, Tensorflow, XGBoost и Spark поддерживают Autolog.
  • Доступен ряд платформ оркестровки задач, но MLflow разработан специально для улучшения жизненного цикла машинного обучения. Это означает, что MLflow может проводить эксперименты и отслеживать их результаты, а также обучать и развертывать модели машинного обучения.
  • Модели глубокого обучения выигрывают от автоматического ведения журнала. Как мы все знаем, во время обучения модели глубокого обучения захватывается несколько параметров/гиперпараметров.
  • MLflow можно настроить в соответствии со своими конкретными требованиями. Он также может обрабатывать огромные объемы данных.
  • MLflow API поддерживаетне только Python, но также языки программирования Java и R.
  • Это открытый исходный код, поэтому вы можете получить хорошую поддержку сообщества.
  • Его можно использовать для развертывания различных моделей машинного обучения, которые можно сохранить в виде каталога с любым количеством файлов в нем.
  • С MLflow специалистам по данным больше не нужно будет вручную отслеживать параметры, которые они используют при каждом запуске.

Заключение

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