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


Обновление рабочих процессов машинного обучения до целевых моделей в каталоге Unity

В этой статье объясняется, как перенести и обновить рабочие процессы машинного обучения до целевых моделей в каталоге Unity.

Требования

Прежде чем приступить к работе, обязательно выполните требования в соответствии с требованиями. В частности, убедитесь, что пользователи или субъекты, используемые для выполнения обучения модели, развертывания и вывода рабочих процессов имеют необходимые привилегии для зарегистрированной модели в каталоге Unity:

  • Учебный курс. Владение зарегистрированной моделью (необходимо для создания новых версий модели), а также USE CATALOG USE SCHEMA привилегии в заключенном каталоге и схеме.
  • Развертывание: владение зарегистрированной моделью (требуется для задания псевдонимов в модели), а также USE CATALOG USE SCHEMA привилегий в заключенном каталоге и схеме.
  • Вывод: EXECUTE привилегии для зарегистрированной модели (требуется для чтения и выполнения вывода с версиями моделей), а также USE CATALOG "ИСПОЛЬЗОВАНИЕ привилегий SCHEMA в заключенном каталоге и схеме.

Создание параллельного обучения, развертывания и рабочих процессов

Для обновления рабочих процессов обучения и вывода моделей в каталог Unity Databricks рекомендуется добавочный подход, в котором создается параллельный конвейер обучения, развертывания и вывода, который использует модели в каталоге Unity. Когда вы комфортно с результатами с помощью каталога Unity, вы можете переключить подчиненных потребителей на чтение выходных данных пакетного вывода или увеличить трафик, перенаправленный в модели в каталоге Unity, в конечных точках обслуживания.

Рабочий процесс обучения модели

Клонируйте рабочий процесс обучения модели. Затем убедитесь, что:

  1. Кластер рабочих процессов имеет доступ к каталогу Unity и соответствует требованиям, описанным в разделе "Требования".
  2. Субъект, выполняющий рабочий процесс, имеет необходимые разрешения для зарегистрированной модели в каталоге Unity.

Затем измените код обучения модели в клонированного рабочего процесса. Возможно, потребуется клонировать записную книжку, запущенную рабочим процессом, или создать и нацелить новую ветвь Git в клонированный рабочий процесс. Чтобы установить необходимую версию MLflow, настройте клиент для целевого каталога Unity в коде обучения и обновите код обучения модели, чтобы зарегистрировать модели в каталоге Unity.

Рабочий процесс развертывания модели

Клонируйте рабочий процесс развертывания модели, выполнив аналогичные действия, как в рабочем процессе обучения модели, чтобы обновить конфигурацию вычислений, чтобы обеспечить доступ к каталогу Unity.

Убедитесь, что субъект, принадлежащий клонированного рабочего процесса, имеет необходимые разрешения. Если в рабочем процессе развертывания есть логика проверки модели, обновите ее, чтобы загрузить версии модели из UC. Используйте псевдонимы для управления развертываниями рабочей модели.

Рабочий процесс вывода модели

Рабочий процесс вывода пакетной службы

Выполните аналогичные действия, как в рабочем процессе обучения модели, чтобы клонировать рабочий процесс вывода пакетной службы и обновить конфигурацию вычислений, чтобы обеспечить доступ к каталогу Unity. Убедитесь, что субъект, выполняющая клонированную пакетную команду вывода, имеет необходимые разрешения для загрузки модели для вывода.

Рабочий процесс обслуживания модели

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

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

Повышение уровня модели в разных средах

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

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

Для выполнения примера кода ниже требуются следующие привилегии:

  • USE CATALOGstaging в каталогах и prod каталогах.
  • USE SCHEMAstaging.ml_team в схемах и prod.ml_team схемах.
  • EXECUTE в staging.ml_team.fraud_detection.

Кроме того, необходимо быть владельцем зарегистрированной модели prod.ml_team.fraud_detection.

В следующем фрагменте кода используется API клиента MLflow, доступный copy_model_version в MLflow версии 2.8.0 и выше.

import mlflow
mlflow.set_registry_uri("databricks-uc")

client = mlflow.tracking.MlflowClient()
src_model_name = "staging.ml_team.fraud_detection"
src_model_version = "1"
src_model_uri = f"models:/{src_model_name}/{src_model_version}"
dst_model_name = "prod.ml_team.fraud_detection"
copied_model_version = client.copy_model_version(src_model_uri, dst_model_name)

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

client = mlflow.tracking.MlflowClient()
client.set_registered_model_alias(name="prod.ml_team.fraud_detection", alias="Champion", version=copied_model_version.version)

В приведенном выше примере только пользователи, которые могут читать из зарегистрированной staging.ml_team.fraud_detection модели и записывать prod.ml_team.fraud_detection данные в зарегистрированную модель, могут способствовать повышению промежуточной модели в рабочей среде. Те же пользователи также могут использовать псевдонимы для управления версиями модели, развернутыми в рабочей среде. Вам не нужно настраивать другие правила или политики для управления повышением и развертыванием модели.

Этот поток можно настроить для повышения версии модели в нескольких средах, которые соответствуют настройке, например dev, qaи prod. Управление доступом применяется как настроенное в каждой среде.

Использование веб-перехватчиков заданий для утверждения вручную для развертывания модели

Databricks рекомендует автоматизировать развертывание модели, если это возможно, с помощью соответствующих проверок и тестов во время процесса развертывания модели. Однако если вам нужно выполнить утверждения вручную для развертывания рабочих моделей, вы можете использовать веб-перехватчики заданий для вызова внешних систем CI/CD, чтобы запросить утверждение вручную для развертывания модели после успешного завершения задания обучения модели. После предоставления утверждения вручную система CI/CD может развернуть версию модели для обслуживания трафика, например задав псевдоним "Чемпион".