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


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

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

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

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

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

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

Примечание.

Начиная с 27 марта 2024 года MLflow накладывает ограничение квоты на количество общих параметров, тегов и шагов метрик для всех существующих и новых запусков, а также количество общих запусков для всех существующих и новых экспериментов, см. ограничения ресурсов. Если вы столкнулись с выполнением для квоты эксперимента, Databricks рекомендует удалить запуски, которые больше не требуются с помощью API удаления в Python. Если вы достигли других лимитов квоты, Databricks рекомендует настроить стратегию ведения журналов, чтобы укладываться в лимит. Если вам требуется увеличить это ограничение, обратитесь к команде по работе с аккаунтами Databricks с кратким объяснением вашего случая использования, почему предлагаемые подходы по устранению рисков не работают, и нового ограничения, которое вы запрашиваете.

API отслеживания MLflow

API отслеживания MLflow фиксирует параметры, метрики, теги и артефакты из запуска модели. API отслеживания взаимодействует с сервером отслеживания MLflow. При использовании Databricks данные записываются сервером отслеживания, размещенным в Databricks. На размещенном сервере отслеживания MLflow поддерживаются API-интерфейсы Python, Java и R.

MLflow предварительно установлен в кластерах машинного обучения Databricks Runtime. Чтобы использовать MLflow в кластере Databricks Runtime, необходимо установить библиотеку mlflow. Инструкции по установке библиотеки в кластере см. в разделе Установка библиотеки в кластере. Чтобы использовать MLflow 3 и его возможности отслеживания, обязательно обновите последнюю версию (см. раздел "Установка MLflow 3").

Где регистрируются запуски MLflow

Все запуски MLflow записываются в активный эксперимент, который можно задать с помощью любого из следующих способов:

Если активный эксперимент не задан, прогоны логируются в эксперимент блокнота .

Чтобы записать результаты эксперимента на удаленный сервер отслеживания MLflow в рабочей области, отличной от той, в которой выполняется эксперимент, задайте URI отслеживания для ссылки на удаленную рабочую область с mlflow.set_tracking_uri()и задайте путь к эксперименту в удаленной рабочей области с помощью mlflow.set_experiment().

mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")

Если вы выполняете эксперименты локально и хотите регистрировать результаты эксперимента на сервере отслеживания MLflow Databricks, укажите экземпляр рабочей области Databricks (DATABRICKS_HOST) и маркер личного доступа Databricks (DATABRICKS_TOKEN). Затем можно задать URI отслеживания для обращения к рабочей области с помощью mlflow.set_tracking_uri(), а также задать путь к эксперименту с помощью mlflow.set_experiment(). См. Выполните аутентификацию с персональным токеном доступа Azure Databricks, чтобы узнать, где найти значения для переменных среды DATABRICKS_HOST и DATABRICKS_TOKEN.

В следующем примере кода показано, как задать следующие значения:


os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"

mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")

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

MLflow может автоматически записывать код обучения, написанный во многих платформах машинного обучения и глубокого обучения. Это самый простой способ начать с отслеживания MLflow. См. пример записной книжки .

Для более точного контроля над регистрируемыми параметрами и метриками, а также для регистрации дополнительных артефактов, таких как CSV-файлы или графики, используйте API логирования MLflow. См. пример записной книжки .

Использование автоматического логирования для отслеживания разработки моделей

В этом примере записной книжки показано, как использовать автологгинг с scikit-learn. См. сведения об автологировании с другими библиотеками Python в документации по автологированию MLflow.

MLflow 3

Автологирование записной книжки Python для MLflow 3

Получите записную книжку

MLflow 2.x

Записная книжка Python для автоматической интеграции с MLflow

Получите записную книжку

Использовать API ведения журнала для отслеживания разработки моделей

В этом примере записной книжки показано, как использовать API ведения журнала Python. MLflow также поддерживает REST, R и Java API.

MLflow 3

Записная книжка Python для API логирования MLflow 3

Получите записную книжку

MLflow 2.x

Записная книжка API Python для логгирования в MLflow

Получите записную книжку

Запись прогонов в эксперименте рабочего пространства

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

Запуски MLflow, инициированные из любой записной книжки или через API, могут быть зарегистрированы в эксперименте рабочей области. Чтобы журналировать запуски в эксперимент в рабочей области, используйте код, аналогичный следующему, в вашем блокноте или вызове API.

experiment_name = "/Shared/name_of_experiment/"
mlflow.set_experiment(experiment_name)

Инструкции по созданию эксперимента рабочей области см. в статье Создание эксперимента рабочей области. Сведения о просмотре циклов запуска в журнале см. в разделах Просмотр эксперимента записной книжки и Просмотр эксперимента рабочей области.

Анализ циклов запуска MLflow программным способом

Для программного доступа к данным выполнения MLflow используются два следующих API для DataFrame.

В этом примере показано, как использовать клиент Python для MLflow для создания панели мониторинга, на которой визуализируются изменения в метриках оценки с течением времени, отслеживается число запусков, инициированных конкретным пользователем, и измеряется общее количество запусков для всех пользователей:

Почему метрики обучения модели и выходные данные могут отличаться

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

Для управления вариантами, вызванными различиями в порядке и секционирования, используйте функции PySpark повторное разделение и сортировкуWithinPartitions.

Примеры отслеживания MLflow

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