Отслеживание экспериментов и моделей с помощью MLflow
Отслеживание — это процесс сохранения соответствующих сведений о экспериментах. Из этой статьи вы узнаете, как использовать MLflow для отслеживания экспериментов и выполнения в Машинное обучение Azure рабочих областях.
Некоторые методы, доступные в API MLflow, могут быть недоступны при подключении к Машинное обучение Azure. Дополнительные сведения о поддерживаемых и неподдерживаемых операциях см . в матрице поддержки для запросов к запускам и экспериментам. Вы также можете узнать о поддерживаемых функциях MLflow в Машинное обучение Azure статьи MLflow и Машинное обучение Azure.
Примечание.
- Чтобы отслеживать эксперименты, выполняемые в Azure Databricks, см. статью "Отслеживание экспериментов Машинного обучения Azure Databricks" с помощью MLflow и Машинное обучение Azure.
- Чтобы отслеживать эксперименты, выполняемые в Azure Synapse Analytics, см. статью "Отслеживание экспериментов Машинного обучения Azure Synapse Analytics" с помощью MLflow и Машинное обучение Azure.
Необходимые компоненты
У вас есть подписка Azure с бесплатной или платной версией Машинное обучение Azure.
Чтобы запустить команды Azure CLI и Python, установите Azure CLI версии 2 и пакет SDK Машинное обучение Azure версии 2 для Python. Расширение
ml
Azure CLI устанавливается автоматически при первом запуске команды Машинное обучение Azure CLI.
Установите пакет пакета SDK
mlflow
MLflow и подключаемый модуль Машинное обучение Azureazureml-mlflow
для MLflow следующим образом:pip install mlflow azureml-mlflow
Совет
Вы можете использовать
mlflow-skinny
пакет, который является упрощенным пакетом MLflow без хранилища SQL, сервера, пользовательского интерфейса или зависимостей для обработки и анализа данных. Этот пакет рекомендуется для пользователей, которые в первую очередь нуждаются в возможностях отслеживания и ведения журнала MLflow, не импортируя полный набор функций, включая развертывания.Создайте рабочую область Машинного обучения Azure. Чтобы создать рабочую область, см. статью "Создание ресурсов", которые необходимо приступить к работе. Просмотрите разрешения доступа, необходимые для выполнения операций MLflow в рабочей области.
Чтобы выполнить удаленное отслеживание или отслеживать эксперименты, выполняемые вне Машинное обучение 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 отслеживаются в рабочей области. Их можно просмотреть и получить в Студия машинного обучения Azure или получить к ним программный доступ с помощью пакета SDK MLflow.
Чтобы просмотреть метрики и артефакты в студии, выполните следующие действия.
На странице "Задания" в рабочей области выберите имя эксперимента.
На странице сведений о эксперименте выберите вкладку "Метрики ".
Выберите записанные метрики для отрисовки диаграмм справа. Вы можете настроить диаграммы, применяя сглаживание, изменение цвета или отображение нескольких метрик на одном графе. Вы также можете изменить размер и изменить расположение макета.
Создав нужное представление, сохраните его для дальнейшего использования и поделитесь им со своими товарищами по команде с помощью прямой ссылки.
Чтобы получить доступ к метрикам, параметрам и артефактам с помощью пакета 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".