Прочитать на английском

Поделиться через


Отслеживание экспериментов и моделей с помощью MLflow

Отслеживание — это процесс сохранения соответствующих сведений о экспериментах. Из этой статьи вы узнаете, как использовать MLflow для отслеживания экспериментов и запусков в рабочей области Azure Machine Learning.

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

Примечание

Предварительные условия

  • Установите пакет SDK MLflow mlflow и плагин Azure Machine Learning azureml-mlflow для MLflow следующим образом:

    pip install mlflow azureml-mlflow
    

    Совет

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

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

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

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

MLflow упорядочивает сведения в экспериментах и прогонах. Запуски называются заданиями в службе Azure Machine Learning. По умолчанию логи создаваемых запусков записываются в эксперимент с именем Default, но можно настроить, в какой эксперимент их следует отслеживать.

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

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 Machine Learning. Эта практика помогает быстрее определить запуск.

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

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

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

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

mlflow.autolog()

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

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

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

  1. На странице "Задания" в рабочей области выберите имя эксперимента.

  2. На странице сведений о эксперименте выберите вкладку "Метрики ".

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

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

    Снимок экрана: представление метрик, в котором показан список метрик и диаграмм, созданных на основе метрик.

Чтобы получить доступ к метрикам, параметрам и артефактам с помощью пакета 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 метод. Дополнительные сведения о получении значений метрик см. в разделе Get params and metrics from a run.

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

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

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


Дополнительные ресурсы

Обучение

Модуль

Отслеживание обучения модели с помощью MLflow в заданиях - Training

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

Сертификация

Сертифицированный Microsoft: Специалист по данным Azure Associate - Certifications

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