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


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

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

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

Примечание.

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

  • Установите пакет MLflow SDK mlflow и плагин Azure Machine Learning azureml-mlflow для MLflow:

    pip install mlflow azureml-mlflow
    

    Совет

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

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

  • Чтобы выполнить удаленное отслеживание или отслеживать эксперименты, выполняемые вне Машинное обучение Azure, настройте MLflow для указания URI отслеживания рабочей области Машинное обучение Azure. Дополнительные сведения о подключении 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 или программным способом с помощью пакета SDK MLflow.

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

  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 с помощью MLflow, см. в статье "Запрос и сравнение экспериментов и запусков с помощью MLflow".