Отслеживание экспериментов и моделей машинного обучения с помощью 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. Дополнительные сведения о поддерживаемых и неподдерживаемых операциях см . в матрице поддержки для запросов к запускам и экспериментам.
Необходимые компоненты
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу. Попробуйте бесплатную или платную версию Машинного обучения 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.
Чтобы просмотреть метрики и артефакты в студии, выполните следующие действия.
Перейдите к Студия машинного обучения Azure.
Перейдите в рабочую область.
Найдите эксперимент по имени в рабочей области.
Выберите зарегистрированные метрики для отрисовки диаграмм справа. Вы можете настроить диаграммы, применяя сглаживание, изменение цвета или отображение нескольких метрик на одном графе. Вы также сможете изменять размер и расположение макета по своему усмотрению.
Создав нужное представление, сохраните его для дальнейшего использования и поделитесь им с коллегами, используя прямую ссылку.
Чтобы получить доступ к метрикам, параметрам и артефактам с помощью пакета 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".