Отслеживание запусков обучения машинного обучения и глубокого обучения
Статья
Компонент отслеживания MLflow позволяет регистрировать исходные свойства, параметры, метрики, теги и артефакты, связанные с обучением модели машинного обучения или глубокого обучения. Чтобы приступить к работе с MLflow, ознакомьтесь с этими краткими руководствами.
Отслеживание MLflow с помощью экспериментов и запусков
В основе отслеживания MLflow лежат две концепции: эксперименты и запуски (циклы запуска).
Примечание
Начиная с 27 марта 2024 года MLflow накладывает ограничение квоты на количество общих параметров, тегов и шагов метрик для всех существующих и новых запусков, а также количество общих запусков для всех существующих и новых экспериментов, см . ограничения ресурсов. Если вы столкнулись с выполнением для квоты эксперимента, Databricks рекомендует удалить запуски, которые больше не требуются с помощью API удаления в Python. Если вы достигли других ограничений квоты, Databricks рекомендует настроить стратегию ведения журналов, чтобы держаться под ограничением. Если вам требуется увеличить это ограничение, обратитесь к группе учетных записей Databricks с кратким объяснением вашего варианта использования, почему предлагаемые подходы по устранению рисков не работают, и новое ограничение, за которым вы запрашиваете.
Эксперимент MLflow — это основная единица организации и управления доступом для запусков MLflow; все запуски относятся к определенному эксперименту. Эксперименты позволяют визуализировать, выполнять поиск и сравнивать запуски, а также загружать артефакты и метаданные запусков для анализа в других средствах.
Запуск MFlflow соответствует однократному выполнению кода модели.
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_HOSTDATABRICKS_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 Python, Java или Scala, а также API R. Дополнительные сведения см. в примерах записных книжек MLflow.
Доступ к серверу отслеживания MLflow извне Azure Databricks
В этом примере показано, как использовать клиент Python для MLflow для создания панели мониторинга, на которой визуализируются изменения в метриках оценки с течением времени, отслеживается число запусков, инициированных конкретным пользователем, и измеряется общее количество запусков для всех пользователей:
Почему метрики обучения модели и выходные данные могут отличаться
Многие алгоритмы, используемые в машинном обучении, имеют случайный элемент, например выборку или случайные начальные условия в самом алгоритме. При обучении модели с помощью одного из этих алгоритмов результаты могут не совпадать с каждым запуском, даже если запустить выполнение с одинаковыми условиями. Многие библиотеки предлагают механизм заполнения для исправления начальных условий для этих стохастических элементов. Однако могут существовать другие источники вариаций, которые не контролируются семенами. Некоторые алгоритмы чувствительны к порядку данных, а распределенные алгоритмы машинного обучения также могут влиять на секционирование данных. Как правило, этот вариант не является значительным и не важен в процессе разработки модели.
В следующих записных книжках демонстрируется, как обучать модели разных типов и отслеживать данные обучения в MLflow, а также хранить данные отслеживания в Delta Lake.
Управление приемом и подготовкой данных, обучением моделей и развертыванием, а также мониторингом решений машинного обучения с помощью Python, Машинное обучение Azure и MLflow.