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

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

Отслеживание — это процесс сохранения соответствующих сведений о выполняемых экспериментах. Сохраненные сведения (метаданные) зависят от проекта и могут включать:

  • Код
  • Сведения о среде (например, версия ОС, пакеты Python)
  • Входные данные
  • Конфигурации параметров
  • Модели
  • Метрики оценки
  • Визуализации оценки (например, матрицы путаницы, графики важности)
  • Результаты оценки (включая некоторые прогнозы оценки)

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

Примечание.

Если вы хотите отслеживать эксперименты, выполняемые в Azure Databricks, см. статью "Отслеживание экспериментов машинного обучения Azure Databricks" с помощью MLflow и Машинное обучение Azure. Дополнительные сведения об экспериментах отслеживания, выполняемых в Azure Synapse Analytics, см. в статье "Отслеживание экспериментов Машинного обучения Azure Synapse Analytics с помощью MLflow и Машинное обучение Azure".

Преимущества экспериментов отслеживания

Настоятельно рекомендуется, чтобы специалисты по машинному обучению отслеживали эксперименты, будь то обучение с заданиями в Машинное обучение Azure или интерактивном обучении в записных книжках. Отслеживание экспериментов позволяет:

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

Зачем использовать MLflow для отслеживания экспериментов?

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

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

Ограничения

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

Необходимые компоненты

  • Установите пакет mlflow SDK MLflow и подключаемый модуль Машинное обучение Azure для MLflowazureml-mlflow.

    pip install mlflow azureml-mlflow
    

    Совет

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

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

  • Если вы выполняете удаленное отслеживание (то есть выполняется отслеживание экспериментов, выполняемых вне Машинное обучение Azure), настройте MLflow для указания URI отслеживания рабочей области Машинное обучение Azure. Дополнительные сведения о подключении MLflow к рабочей области см. в разделе "Настройка MLflow" для Машинное обучение Azure.

Настройка эксперимента

MLflow упорядочивает сведения в экспериментах и запусках (запуски называются заданиями в Машинное обучение Azure). По умолчанию запуски записываются в эксперимент с именем Default , который автоматически создается для вас. Вы можете настроить эксперимент, в котором происходит отслеживание.

Для интерактивного обучения, например в записной книжке Jupyter, используйте команду mlflow.set_experiment()MLflow. Например, следующий фрагмент кода настраивает эксперимент:

experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)

Настройка запуска

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

Когда вы работаете в интерактивном режиме, MLflow начинает отслеживать подпрограмму обучения, как только вы попытаетесь записать сведения, требующие активного запуска. Например, отслеживание MLflow начинается при регистрации метрик, параметра или запуска цикла обучения, а функция автологирования Mlflow включена. Тем не менее, обычно полезно запустить запуск явным образом, особенно если вы хотите записать общее время для эксперимента в поле "Длительность ". Чтобы запустить запуск явным образом, используйте mlflow.start_run().

Независимо от того, запускаете ли вы выполнение вручную или нет, вам в конечном итоге необходимо остановить выполнение, чтобы MLflow знал, что выполнение эксперимента выполнено и может пометить состояние выполнения как завершено. Чтобы остановить выполнение, используйте mlflow.end_run().

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

  • Чтобы запустить запуск вручную и завершить его после завершения работы в записной книжке:

    mlflow.start_run()
    
    # Your code
    
    mlflow.end_run()
    
  • Обычно полезно использовать парадигму диспетчера контекстов, чтобы помочь вам помнить о завершении выполнения:

    with mlflow.start_run() as run:
        # Your code
    
  • При запуске нового запуска mlflow.start_run()можно указать run_name параметр, который позже преобразуется в имя запуска в пользовательском интерфейсе Машинное обучение Azure и поможет вам быстрее определить выполнение:

    with mlflow.start_run(run_name="hello-world-example") as run:
        # Your code
    

Включение автолога MLflow

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

Чтобы включить автоматическое ведение журнала, вставьте следующий код перед учебным кодом:

mlflow.autolog()

Просмотр метрик и артефактов в рабочей области

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

Чтобы просмотреть метрики и артефакты в студии, выполните следующие действия.

  1. Перейдите к Студия машинного обучения Azure.

  2. Перейдите в рабочую область.

  3. Найдите эксперимент по имени в рабочей области.

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

  5. Создав нужное представление, сохраните его для дальнейшего использования и поделитесь им с коллегами, используя прямую ссылку.

    Снимок экрана: представление метрик.

Чтобы получить доступ к метрикам, параметрам и артефактам с помощью пакета SDK MLflow, используйте mlflow.get_run().

import mlflow

run = mlflow.get_run("<RUN_ID>")

metrics = run.data.metrics
params = run.data.params
tags = run.data.tags

print(metrics, params, tags)

Совет

Для метрик предыдущий пример кода возвращает только последнее значение заданной метрики. Если вы хотите получить все значения заданной метрики, используйте mlflow.get_metric_history этот метод. Дополнительные сведения о получении значений метрик см. в разделе "Получение парам и метрик" из запуска.

Чтобы скачать артефакты, которые вы зарегистрировали, например файлы и модели, используйте mlflow.artifacts.download_artifacts().

mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")

Дополнительные сведения о том, как получить или сравнить информацию из экспериментов и запусков в Машинное обучение Azure с помощью MLflow, см. в статье "Запрос и сравнение экспериментов и запусков с помощью MLflow".