Отслеживание запусков обучения машинного обучения и глубокого обучения
Компонент отслеживания MLflow позволяет регистрировать исходные свойства, параметры, метрики, теги и артефакты, связанные с обучением модели машинного обучения или глубокого обучения. Чтобы приступить к работе с MLflow, ознакомьтесь с этими краткими руководствами.
Отслеживание MLflow с помощью экспериментов и запусков
В основе отслеживания MLflow лежат две концепции: эксперименты и запуски (циклы запуска).
Примечание.
Начиная с 27 марта 2024 года MLflow накладывает ограничение квоты на количество общих параметров, тегов и шагов метрик для всех существующих и новых запусков, а также количество общих запусков для всех существующих и новых экспериментов, см . ограничения ресурсов. Если вы столкнулись с выполнением для квоты эксперимента, Databricks рекомендует удалить запуски, которые больше не требуются с помощью API удаления в Python. Если вы достигли других ограничений квоты, Databricks рекомендует настроить стратегию ведения журналов, чтобы держаться под ограничением. Если вам требуется увеличить это ограничение, обратитесь к группе учетных записей Databricks с кратким объяснением вашего варианта использования, почему предлагаемые подходы по устранению рисков не работают, и новое ограничение, за которым вы запрашиваете.
Эксперимент MLflow — это основная единица организации и управления доступом для запусков MLflow; все запуски относятся к определенному эксперименту. Эксперименты позволяют визуализировать, выполнять поиск и сравнивать запуски, а также загружать артефакты и метаданные запусков для анализа в других средствах.
Запуск MFlflow соответствует однократному выполнению кода модели.
Упорядочение учебных запусков с помощью экспериментов MLflow
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 (Пакет).
- Выберите Maven в поле Library Source (Источник библиотеки) и введите
Место регистрации циклов запуска MLflow
Все запуски MLflow регистрируются в активном эксперименте, который можно задать одним из описанных ниже способов.
- С помощью команды mlflow.set_experiment().
- С помощью параметра
experiment_id
в команде mlflow.start_run(). - С помощью одной из переменных среды MLflow: MLFLOW_EXPERIMENT_NAME или MLFLOW_EXPERIMENT_ID.
Если активный эксперимент не задан, циклы запуска регистрируются в эксперименте записной книжки.
Чтобы записать результаты эксперимента на удаленный сервер отслеживания 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:
- API search_runs клиента Python MLflow возвращает DataFrame pandas.
- Источник данных эксперимента MLflow возвращает DataFrame Apache Spark.
В этом примере показано, как использовать клиент Python для MLflow для создания панели мониторинга, на которой визуализируются изменения в метриках оценки с течением времени, отслеживается число запусков, инициированных конкретным пользователем, и измеряется общее количество запусков для всех пользователей:
Почему метрики обучения модели и выходные данные могут отличаться
Многие алгоритмы, используемые в машинном обучении, имеют случайный элемент, например выборку или случайные начальные условия в самом алгоритме. При обучении модели с помощью одного из этих алгоритмов результаты могут не совпадать с каждым запуском, даже если запустить выполнение с одинаковыми условиями. Многие библиотеки предлагают механизм заполнения для исправления начальных условий для этих стохастических элементов. Однако могут существовать другие источники вариаций, которые не контролируются семенами. Некоторые алгоритмы чувствительны к порядку данных, а распределенные алгоритмы машинного обучения также могут влиять на секционирование данных. Как правило, этот вариант не является значительным и не важен в процессе разработки модели.
Для управления вариантами, вызванными различиями в порядке и секционирования, используйте функции PySpark повторное разделение и сортировкуWithinPartitions.
Примеры отслеживания MLflow
В следующих записных книжках демонстрируется, как обучать модели разных типов и отслеживать данные обучения в MLflow, а также хранить данные отслеживания в Delta Lake.