Узнайте, как MLflow упрощает и ускоряет отслеживание экспериментов, управление моделями и развертывание

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

  1. Отслеживание: MLflow позволяет отслеживать производительность и показатели ваших моделей машинного обучения с течением времени, включая параметры и код, используемые для их обучения.
  2. Воспроизводимость: MLflow позволяет легко воспроизводить ваши эксперименты по машинному обучению, включая код и среду, используемые для их запуска.
  3. Управление моделями: MLflow позволяет управлять моделями машинного обучения и развертывать их, включая версии моделей и переходы между стадиями.
  4. Управление экспериментами: систематизируйте и отслеживайте все свои эксперименты и запуски с возможностью помечать, искать и сравнивать их.
  5. Реестр моделей: Реестр моделей MLflow — это центральный репозиторий для хранения и обнаружения моделей машинного обучения, а также их метаданных, версий и переходов между стадиями.
  6. Развертывание: MLflow позволяет развертывать модели машинного обучения на различных платформах, включая облачные службы, Docker и Kubernetes.

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

Отслеживание экспериментов

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

  1. Воспроизводимость: отслеживание экспериментов позволяет легко воспроизводить эксперименты, включая код, среду и параметры, используемые для их запуска. Это облегчает понимание и проверку результатов ваших экспериментов.
  2. Сравнение. Отслеживание экспериментов позволяет сравнивать различные запуски ваших экспериментов, включая различные настройки параметров, алгоритмы и версии вашего кода. Это облегчает понимание влияния различных вариантов на производительность вашей модели.
  3. Сотрудничество: отслеживание экспериментов позволяет вам делиться своими экспериментами и результатами с другими, что упрощает сотрудничество и развитие работы друг друга.
  4. Аудит. Отслеживание экспериментов позволяет отслеживать все проведенные вами эксперименты, что может быть полезно для целей аудита и соответствия требованиям.
  5. Понимание: отслеживание экспериментов позволяет получить представление о шаблонах ваших экспериментов и понять, как различные параметры влияют на производительность вашей модели.
  6. Управление моделями: отслеживание экспериментов позволяет отслеживать различные версии ваших моделей и отслеживать наиболее эффективные модели.
  7. Оптимизация. Отслеживание экспериментов позволяет оптимизировать модели, экспериментируя с различными настройками параметров, алгоритмами и версиями кода, что упрощает определение наиболее эффективных моделей.

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

Настройка Млфлоу

Чтобы начать использовать MLflow, сначала необходимо его установить. Вы можете установить MLflow с помощью pip:

pip install mlflow

После установки MLflow вы можете запустить сервер MLflow, выполнив следующую команду:

mlflow server

Это запустит сервер MLflow на вашем локальном компьютере с конфигурацией по умолчанию. Вы также можете указать другой файл конфигурации или каталог для сервера, передав флаг --file или --backend-store-uri соответственно.

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

Вот пример того, как начать новый запуск и зарегистрировать параметры, метрики и артефакты:

import mlflow
# Start an MLflow run
with mlflow.start_run():
    # Log a parameter
    alpha= 0.01
    mlflow.log_param("alpha", alpha)
    # Log a metric
    accuracy=0.96
    mlflow.log_metric("metric1", accuracy)
    # Log an artifact (e.g. a file)
    mlflow.log_artifact("path/to/myfile")

В этом примере мы запускаем выполнение MLflow с диспетчером контекста mlflow.start_run(). Внутри контекста мы регистрируем параметр с помощью функции mlflow.log_param(), метрику с помощью функции mlflow.log_metric() и артефакт (например, файл) с помощью функции mlflow.log_artifact().

Вы также можете использовать mlflow.log_params() и mlflow.log_metrics() для регистрации нескольких параметров и показателей за один вызов.

В приведенном выше примере регистрируются параметры и метрики для текущего запуска. Вы также можете зарегистрировать их для определенного запуска, используя run_id, например:

mlflow.log_param("param1", 5, run_id="<RUN_ID>")
mlflow.log_metric("metric1", 0.99, run_id="<RUN_ID>")

Просмотр экспериментов

Чтобы просмотреть отслеженные эксперименты, вы можете использовать пользовательский интерфейс MLflow. Пользовательский интерфейс MLflow — это веб-интерфейс, который позволяет просматривать параметры, метрики и артефакты, зарегистрированные для каждого запуска. Чтобы получить доступ к пользовательскому интерфейсу MLflow, вы можете перейти к http://localhost:5000 в своем веб-браузере.

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

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

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

В дополнение к функции mlflow.notebook.start_run() вы также можете использовать функцию mlflow.notebook.get_run(), чтобы получить активный запуск из блокнота Jupyter. Это позволяет вам получить доступ к информации о запуске, такой как идентификатор запуска, а также параметры журнала, метрики и артефакты для запуска.

Например, вы можете использовать следующий код для регистрации параметра и метрики для активного запуска:

run = mlflow.notebook.get_run()
run.log_param("param1", 5)
run.log_metric("metric1", 0.99)

Вы также можете использовать функцию mlflow.notebook.display() для отображения параметров запуска, показателей и артефактов непосредственно в блокноте Jupyter.

run = mlflow.notebook.get_run()
mlflow.notebook.display(run)

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

Кроме того, MLflow также предоставляет R API и REST API, которые позволяют отслеживать, управлять и развертывать эксперименты и модели машинного обучения из других языков программирования и платформ.

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

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