Отслеживание запусков обучения машинного обучения и глубокого обучения

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

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

В основе отслеживания MLflow лежат две концепции: эксперименты и запуски (циклы запуска).

Примечание

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

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

Примечание

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

  • Для Python выберите PyPI в поле Library Source (Источник библиотеки) и введите mlflow в поле Package (Пакет).
  • Для R выберите CRAN в поле Library Source (Источник библиотеки) и введите mlflow в поле Package (Пакет).
  • Для Scala установите эти два пакета:
    • Выберите Maven в поле Library Source (Источник библиотеки) и введите org.mlflow:mlflow-client:1.11.0 в поле Coordinates (Координаты).
    • Выберите PyPI в поле Library Source (Источник библиотеки) и введите mlflow в поле Package (Пакет).

Место регистрации циклов запуска 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, инициированные из любой записной книжки или из API, которые можно регистрировать в эксперименте рабочей области. Сведения о просмотре циклов запуска в журнале см. в разделах Просмотр эксперимента записной книжки и Просмотр эксперимента рабочей области.

Регистрация запусков MLflow: записная книжка

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

Для запуска циклов и регистрации их данных можно использовать MLflow Python, Java или Scala, а также API R. Дополнительные сведения см. в примерах записных книжек MLflow.

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

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

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

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

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

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

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

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

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

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