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


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

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

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

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

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

Примечание.

Начиная с 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

Все запуски 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() Сведения об поиске значений DATABRICKS_HOST переменных среды см. в статье DATABRICKS_TOKEN личного маркера доступа Azure Databricks".

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


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.

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

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

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

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

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

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

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

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

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

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

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

Доступ к серверу отслеживания MLflow извне Azure Databricks

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

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

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

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

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

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

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

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

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