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


Управление жизненным циклом модели в каталоге Unity

Внимание

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

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

Требования

  1. Каталог Unity должен быть включен в рабочей области. См. статью "Начало работы с каталогом Unity" для создания хранилища метаданных каталога Unity, включения его в рабочей области и создания каталога. Если каталог Unity не включен, используйте реестр моделей рабочей области.

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

  3. Чтобы создать новые зарегистрированные модели, вам потребуются следующие привилегии:

    • USE SCHEMA и USE CATALOG привилегии схемы и его заключенного каталога.
    • CREATE_MODEL привилегии в схеме. Чтобы предоставить эту привилегию, используйте пользовательский интерфейс обозревателя каталогов или следующую команду SQL GRANT:
    GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
    

Примечание.

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

Установка и настройка клиента MLflow для каталога Unity

В этом разделе содержатся инструкции по установке и настройке клиента MLflow для каталога Unity.

Установка клиента Python MLflow

Вы также можете использовать модели в каталоге Unity в Databricks Runtime 11.3 LTS и выше, установив последнюю версию клиента Python MLflow в записной книжке, используя следующий код.

%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()

Настройка клиента MLflow для доступа к моделям в каталоге Unity

Если каталог рабочей области по умолчанию находится в каталоге Unity (а неhive_metastore) и выполняется кластер с помощью Databricks Runtime 13.3 LTS или более поздней версии (Databricks Runtime 15.0 или более поздней версии в регионах Azure), модели автоматически создаются и загружаются из каталога по умолчанию. Вам не нужно выполнять этот шаг.

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

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

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

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

Необходимые разрешения. Чтобы создать новую зарегистрированную модель, вам потребуются CREATE_MODEL USE SCHEMA права и привилегии для заключающей схемы и USE CATALOG привилегии в заключенном каталоге. Чтобы создать новые версии модели в зарегистрированной модели, необходимо быть владельцем зарегистрированной модели и иметь USE SCHEMA USE CATALOG права на схему и каталог, содержащий модель.

Версии модели машинного обучения в UC должны иметь сигнатуру модели. Если вы еще не регистрируете модели MLflow с сигнатурами в рабочих нагрузках обучения моделей, можно либо:

  • Используйте автологирование Databricks, которое автоматически регистрирует модели с сигнатурами для многих популярных платформ машинного обучения. См. поддерживаемые платформы в документации по MLflow.
  • С помощью MLflow 2.5.0 и более поздних версий можно указать входной пример в mlflow.<flavor>.log_model вызове, а подпись модели автоматически выводится. Дополнительные сведения см. в документации по MLflow.

Затем передайте трехуровневые имена модели в API MLflow в форме <catalog>.<schema>.<model>.

Примеры, приведенные в этом разделе, создают и получают доступ к моделям в схеме ml_team в каталоге prod .

Примеры обучения модели в этом разделе создают новую версию модели и регистрируют ее в каталоге prod . prod Использование каталога не обязательно означает, что версия модели обслуживает рабочий трафик. Включающей каталог, схему и зарегистрированную модель модели модель отражает ее среду () и связанные правила управления (prodнапример, привилегии можно настроить таким образом, чтобы только администраторы могли удалять из prod каталога), но не его состояние развертывания. Для управления состоянием развертывания используйте псевдонимы модели.

Регистрация модели в каталоге Unity с помощью автолога

Чтобы зарегистрировать модель, используйте метод API register_model() клиента MLflow. См . mlflow.register_model.

from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier

# Train a sklearn model on the iris dataset
X, y = datasets.load_iris(return_X_y=True, as_frame=True)
clf = RandomForestClassifier(max_depth=7)
clf.fit(X, y)

# Note that the UC model name follows the pattern
# <catalog_name>.<schema_name>.<model_name>, corresponding to
# the catalog, schema, and registered model name
# in Unity Catalog under which to create the version
# The registered model will be created if it doesn't already exist
autolog_run = mlflow.last_active_run()
model_uri = "runs:/{}/model".format(autolog_run.info.run_id)
mlflow.register_model(model_uri, "prod.ml_team.iris_model")

Регистрация модели с помощью API

mlflow.register_model(
  "runs:/<run_uuid>/model", "prod.ml_team.iris_model"
)

Регистрация модели в каталоге Unity с автоматическим выводом сигнатуры

Поддержка автоматически выводимых подписей доступна в MLflow версии 2.5.0 и выше и поддерживается в Databricks Runtime 11.3 LTS ML и выше. Чтобы использовать автоматически выведенные подписи, используйте следующий код, чтобы установить последний клиент Python MLflow в записной книжке:

%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()

В следующем коде показан пример автоматически выводимой сигнатуры.

from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier

with mlflow.start_run():
    # Train a sklearn model on the iris dataset
    X, y = datasets.load_iris(return_X_y=True, as_frame=True)
    clf = RandomForestClassifier(max_depth=7)
    clf.fit(X, y)
    # Take the first row of the training dataset as the model input example.
    input_example = X.iloc[[0]]
    # Log the model and register it as a new version in UC.
    mlflow.sklearn.log_model(
        sk_model=clf,
        artifact_path="model",
        # The signature is automatically inferred from the input example and its predicted output.
        input_example=input_example,
        registered_model_name="prod.ml_team.iris_model",
    )

Регистрация модели с помощью пользовательского интерфейса

Выполните следующие действия:

  1. На странице запуска эксперимента щелкните "Регистрация модели " в правом верхнем углу пользовательского интерфейса.

  2. В диалоговом окне выберите каталог Unity и выберите целевую модель из раскрывающегося списка.

    Диалоговое окно

  3. Щелкните Зарегистрировать.

    Диалоговое окно

Регистрация модели может занять некоторое время. Чтобы отслеживать ход выполнения, перейдите к целевой модели в каталоге Unity и периодически обновляется.

Развертывание моделей с помощью псевдонимов

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

Установка и удаление псевдонимов в моделях

Необходимые разрешения: владелец зарегистрированной модели, а также USE SCHEMA USE CATALOG привилегии для схемы и каталога, содержащего модель.

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

Сведения о настройке, обновлении и удалении псевдонимов с помощью API клиента MLflow см. в следующих примерах:

from mlflow import MlflowClient
client = MlflowClient()

# create "Champion" alias for version 1 of model "prod.ml_team.iris_model"
client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 1)

# reassign the "Champion" alias to version 2
client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 2)

# get a model version by alias
client.get_model_version_by_alias("prod.ml_team.iris_model", "Champion")

# delete the alias
client.delete_registered_model_alias("prod.ml_team.iris_model", "Champion")

Дополнительные сведения об API-интерфейсах клиента псевдонимов см. в документации по API MLflow.

Загрузка версии модели по псевдониму для рабочих нагрузок вывода

Необходимые разрешения: EXECUTE привилегии для зарегистрированной модели, а также USE SCHEMA USE CATALOG привилегии схемы и каталога, содержащего модель.

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

import mlflow.pyfunc
model_version_uri = "models:/prod.ml_team.iris_model@Champion"
champion_version = mlflow.pyfunc.load_model(model_version_uri)
champion_version.predict(test_x)

Конечные точки обслуживания моделей также могут ссылаться на версию модели по псевдониму. Рабочие процессы развертывания можно написать, чтобы получить версию модели по псевдониму и обновить конечную точку обслуживания модели для обслуживания этой версии с помощью REST API модели. Например:

import mlflow
import requests
client = mlflow.tracking.MlflowClient()
champion_version = client.get_model_version_by_alias("prod.ml_team.iris_model", "Champion")
# Invoke the model serving REST API to update endpoint to serve the current "Champion" version
model_name = champion_version.name
model_version = champion_version.version
requests.request(...)

Загрузка версии модели по номеру версии для рабочих нагрузок вывода

Вы также можете загрузить версии модели по номеру версии:

import mlflow.pyfunc
# Load version 1 of the model "prod.ml_team.iris_model"
model_version_uri = "models:/prod.ml_team.iris_model/1"
first_version = mlflow.pyfunc.load_model(model_version_uri)
first_version.predict(test_x)

Совместное использование моделей в рабочих областях

Совместное использование моделей с пользователями в одном регионе

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

Чтобы совместно работать с другими пользователями (предоставить доступ к привилегиям на запись) в зарегистрированной модели, необходимо предоставить права владения моделью группе, содержащей себя и пользователей, с которыми вы хотите сотрудничать. Участники совместной работы также должны иметь USE CATALOG права и USE SCHEMA привилегии в каталоге и схеме, содержащей модель. Дополнительные сведения см. в разделе "Права каталога Unity" и защищаемые объекты .

Совместное использование моделей с пользователями в другом регионе или учетной записи

Чтобы совместно использовать модели с пользователями в других регионах или учетных записях, используйте поток общего доступа Delta Share Databricks в Databricks. См. статью "Добавление моделей в общую папку " (для поставщиков) и получение доступа в модели Databricks to Databricks (для получателей). Как получатель, после создания каталога из общей папки вы обращаетесь к моделям в этом общем каталоге так же, как и любая другая модель в каталоге Unity.

Отслеживание происхождения данных модели в каталоге Unity

Примечание.

Поддержка происхождения таблицы в каталоге Unity доступна в MLflow 2.11.0 и выше.

При обучении модели в таблице в каталоге Unity можно отслеживать происхождение модели до вышестоящих наборов данных, на которые она была обучена и оценена. Для этого используйте mlflow.log_input. При этом данные входной таблицы сохраняются с помощью запуска MLflow, создающего модель. Данные происхождения данных также автоматически фиксируются для моделей, зарегистрированных с помощью API хранилища компонентов. См. сведения об управлении функциями и происхождении.

При регистрации модели в каталоге Unity сведения о происхождении автоматически сохраняются и отображаются на вкладке "Происхождение " пользовательского интерфейса версии модели в обозревателе каталогов.

Следующий код показывает пример.

import mlflow
import pandas as pd
import pyspark.pandas as ps
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestRegressor

# Write a table to Unity Catalog
iris = load_iris()
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df.rename(
  columns = {
    'sepal length (cm)':'sepal_length',
    'sepal width (cm)':'sepal_width',
    'petal length (cm)':'petal_length',
    'petal width (cm)':'petal_width'},
  inplace = True
)
iris_df['species'] = iris.target
ps.from_pandas(iris_df).to_table("prod.ml_team.iris", mode="overwrite")

# Load a Unity Catalog table, train a model, and log the input table
dataset = mlflow.data.load_delta(table_name="prod.ml_team.iris", version="0")
pd_df = dataset.df.toPandas()
X = pd_df.drop("species", axis=1)
y = pd_df["species"]
with mlflow.start_run():
    clf = RandomForestRegressor(n_estimators=100)
    clf.fit(X, y)
    mlflow.log_input(dataset, "training")
    # Take the first row of the training dataset as the model input example.
    input_example = X.iloc[[0]]
    # Log the model and register it as a new version in UC.
    mlflow.sklearn.log_model(
        sk_model=clf,
        artifact_path="model",
        # The signature is automatically inferred from the input example and its predicted output.
        input_example=input_example,
        registered_model_name="prod.ml_team.iris_classifier",
    )

Управление доступом к моделям

В каталоге Unity зарегистрированные модели являются подтипом FUNCTION защищаемого объекта. Чтобы предоставить доступ к модели, зарегистрированной в каталоге Unity, используйте GRANT ON FUNCTION. Дополнительные сведения см. в разделе "Привилегии каталога Unity" и защищаемые объекты. Рекомендации по организации моделей в каталогах и схемах см. в разделе "Упорядочение данных".

Разрешения модели можно настроить программным способом с помощью REST API грантов. При настройке разрешений модели задайте значение securable_type "FUNCTION" в запросах REST API. Например, используйте PATCH /api/2.1/unity-catalog/permissions/function/{full_name} для обновления зарегистрированных разрешений модели.

Просмотр моделей в пользовательском интерфейсе

Необходимые разрешения. Для просмотра зарегистрированной модели и ее версий модели в пользовательском интерфейсе требуется EXECUTE привилегия для зарегистрированной модели, а также USE SCHEMA USE CATALOG привилегии для схемы и каталога, содержащего модель.

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

Переименование модели

Необходимые разрешения: владелец зарегистрированной модели, привилегии в схеме, CREATE_MODEL содержащей зарегистрированную модель, и USE SCHEMA USE CATALOG привилегии схемы и каталога, содержащего модель.

Чтобы переименовать зарегистрированную модель, используйте метод rename_registered_model() из API клиента MLflow:

client=MlflowClient()
client.rename_registered_model("<full-model-name>", "<new-model-name>")

Копирование версии модели

Вы можете скопировать версию модели из одной модели в другой в каталоге Unity.

Копирование версии модели с помощью пользовательского интерфейса

Выполните следующие действия:

  1. На странице версии модели щелкните "Копировать эту версию " в правом верхнем углу пользовательского интерфейса.

  2. Выберите целевую модель из раскрывающегося списка и нажмите кнопку " Копировать".

    Диалоговое окно копирования версии модели

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

Копирование версии модели с помощью API

Чтобы скопировать версию модели, используйте API Python copy_model_version () MLflow:

client = MlflowClient()
client.copy_model_version(
  "models:/<source-model-name>/<source-model-version>",
  "<destination-model-name>",
)

Удаление модели или версии модели

Необходимые разрешения: владелец зарегистрированной модели, а также USE SCHEMA USE CATALOG привилегии для схемы и каталога, содержащего модель.

Можно удалить зарегистрированную модель или версию модели в зарегистрированной модели с помощью пользовательского интерфейса обозревателя каталогов или API.

Предупреждение

Это действие нельзя отменить. При удалении модели удаляются все артефакты модели, хранящиеся в каталоге Unity, и все метаданные, связанные с зарегистрированной моделью.

Удаление модели или версии модели с помощью пользовательского интерфейса

Чтобы удалить модель или версию модели в каталоге Unity, выполните следующие действия.

  1. На странице модели или на странице версии модели щелкните меню Меню Кебаб kebab в правом верхнем углу.

    На странице модели:

    Меню кебаб страницы модели с удалением

    На странице версии модели:

    Меню кебаб страницы версии модели с удалением

  2. Выберите команду Удалить.

  3. Открывается диалог запроса подтверждения. Нажмите кнопку Удалить, чтобы подтвердить операцию.

Удаление модели или версии модели с помощью API

Чтобы удалить версию модели, используйте метод delete_model_version() из API клиента MLflow:

# Delete versions 1,2, and 3 of the model
client = MlflowClient()
versions=[1, 2, 3]
for version in versions:
  client.delete_model_version(name="<model-name>", version=version)

Чтобы удалить модель, используйте метод delete_registered_model() из API клиента MLflow:

client = MlflowClient()
client.delete_registered_model(name="<model-name>")

Использование тегов в моделях

Теги — это пары "ключ-значение", которые связываются с зарегистрированными моделями и версиями модели, что позволяет помечать и классифицировать их по функциям или состоянию. Например, можно применить тег с ключом "task" и значением "question-answering" (отображаемым в пользовательском интерфейсе как task:question-answering) к зарегистрированным моделям, предназначенным для задач ответа на вопросы. На уровне версии модели можно пометить версии, прошедшие предварительную проверку validation_status:pending развертывания, и очистить их для развертывания.validation_status:approved

Необходимые разрешения: владелец или APPLY_TAG привилегии для зарегистрированной модели, а также USE SCHEMA USE CATALOG привилегии схемы и каталога, содержащего модель.

См. статью "Добавление и обновление тегов с помощью обозревателя каталогов" по настройке и удалению тегов с помощью пользовательского интерфейса.

Сведения о настройке и удалении тегов с помощью API клиента MLflow см. в следующих примерах:

from mlflow import MlflowClient
client = MlflowClient()

# Set registered model tag
client.set_registered_model_tag("prod.ml_team.iris_model", "task", "classification")

# Delete registered model tag
client.delete_registered_model_tag("prod.ml_team.iris_model", "task")

# Set model version tag
client.set_model_version_tag("prod.ml_team.iris_model", "1", "validation_status", "approved")

# Delete model version tag
client.delete_model_version_tag("prod.ml_team.iris_model", "1", "validation_status")

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

Дополнительные сведения об API клиента тегов см. в документации по API MLflow.

Добавление описания (примечаний) в версию модели или модели

Необходимые разрешения: владелец зарегистрированной модели, а также USE SCHEMA USE CATALOG привилегии для схемы и каталога, содержащего модель.

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

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

Добавление описания в модель с помощью пользовательского интерфейса

Чтобы добавить описание модели, можно использовать примечания, созданные ИИ, или ввести собственные комментарии. При необходимости можно изменять созданные ИИ комментарии.

  • Чтобы добавить автоматически созданные примечания, нажмите кнопку создания ИИ.
  • Чтобы добавить собственные комментарии, нажмите кнопку "Добавить". Введите комментарии в диалоговом окне и нажмите кнопку "Сохранить".

Кнопки описания модели uc

Добавление описания в версию модели с помощью пользовательского интерфейса

Чтобы добавить описание в версию модели в каталоге Unity, выполните следующие действия.

  1. На странице версии модели щелкните значок карандаша в разделе "Описание".

    Значок карандаша для добавления примечаний в версию модели

  2. Введите комментарии в диалоговом окне и нажмите кнопку "Сохранить".

Добавление описания в версию модели или модели с помощью API

Чтобы обновить описание зарегистрированной модели, используйте метод API update_registered_model() клиента MLflow:

client = MlflowClient()
client.update_registered_model(
  name="<model-name>",
  description="<description>"
)

Чтобы изменить описание для версии модели, используйте метод update_model_version() из API клиента MLflow:

client = MlflowClient()
client.update_model_version(
  name="<model-name>",
  version=<model-version>,
  description="<description>"
)

Модели списка и поиска

Чтобы получить список зарегистрированных моделей в каталоге Unity, используйте API Python search_registered_models() MLflow:

client=MlflowClient()
client.search_registered_models()

Чтобы найти определенное имя модели и получить сведения о версиях этой модели, используйте search_model_versions():

from pprint import pprint

client=MlflowClient()
[pprint(mv) for mv in client.search_model_versions("name='<model-name>'")]

Примечание.

Не все поля и операторы API поиска поддерживаются для моделей в каталоге Unity. Дополнительные сведения см. в разделе Ограничения.

Скачивание файлов модели (расширенный вариант использования)

В большинстве случаев для загрузки моделей следует использовать API MLflow, такие mlflow.pyfunc.load_model как или mlflow.<flavor>.load_model (например, mlflow.transformers.load_model для моделей HuggingFace).

В некоторых случаях может потребоваться скачать файлы модели для отладки поведения модели или проблем с загрузкой модели. Файлы модели можно скачать следующим mlflow.artifacts.download_artifactsобразом:

import mlflow
mlflow.set_registry_uri("databricks-uc")
model_uri = f"models:/{model_name}/{version}" # reference model by version or alias
destination_path = "/local_disk0/model"
mlflow.artifacts.download_artifacts(artifact_uri=model_uri, dst_path=destination_path)

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

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. Управление доступом применяется как настроенное в каждой среде.

Пример

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

Пример моделей в каталоге Unity

Перенос рабочих процессов и моделей в каталог Unity

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

Возможность Реестр моделей рабочей области (устаревшая версия) Модели в каталоге Unity (рекомендуется)
Версии эталонной модели по именованным псевдонимам Этапы реестра моделей. Перемещение версий модели на один из четырех фиксированных этапов для их ссылки на этот этап. Не удается переименовать или добавить этапы. Псевдонимы реестра моделей: создайте до 10 пользовательских и переназначаемых именованных ссылок на версии модели для каждой зарегистрированной модели.
Создание управляемых доступом сред для моделей Этапы реестра моделей: использование этапов в одной зарегистрированной модели для обозначения среды своих версий модели с элементами управления доступом только для двух из четырех фиксированных этапов (Staging и Production). Зарегистрированные модели: создайте зарегистрированную модель для каждой среды в рабочем процессе MLOps, используя трехуровневые пространства имен и разрешения каталога Unity для выражения управления.
Повышение уровня моделей в разных средах (модель развертывания) transition_model_version_stage() Используйте API клиента MLflow для перемещения версии модели на другой этап, потенциально критических рабочих процессов, ссылающихся на предыдущий этап. copy_model_version() Используйте API клиента MLflow для копирования версии модели из одной зарегистрированной модели в другую.
Доступ и совместное использование моделей в рабочих областях Вручную экспортируйте и импортируйте модели в рабочих областях или настройте подключения к удаленным реестрам моделей с помощью личных маркеров доступа и областей секретов рабочей области. Вне поля доступа к моделям в разных рабочих областях в одной учетной записи. не требуется дополнительная настройка.
Настройка разрешений Задайте разрешения на уровне рабочей области. Задайте разрешения на уровне учетной записи, которая применяет согласованное управление в рабочих областях.
Доступ к моделям в метке Databricks Недоступный. Загрузите модели из Marketplace Databricks в хранилище метаданных каталога Unity и доступ к ним в рабочих областях.

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

Ограничения

  • Этапы не поддерживаются для моделей в каталоге Unity. Databricks рекомендует использовать трехуровневое пространство имен в каталоге Unity, чтобы выразить среду, в которой находится модель, и использовать псевдонимы для продвижения моделей для развертывания. Дополнительные сведения см. в статье "Повышение уровня модели в разных средах ".
  • Веб-перехватчики не поддерживаются для моделей в каталоге Unity. Ознакомьтесь с предлагаемыми альтернативами в руководстве по обновлению.
  • Некоторые поля и операторы API поиска не поддерживаются для моделей в каталоге Unity. Это можно устранить, вызвав API поиска с помощью поддерживаемых фильтров и сканирования результатов. Ниже приведены некоторые примеры.
    • Параметр order_by не поддерживается в search_model_versions или search_registered_models клиентских API.
    • Фильтры на основе тегов (tags.mykey = 'myvalue') не поддерживаются или search_registered_modelsне поддерживаютсяsearch_model_versions.
    • Операторы, отличные от точного равенства (например, LIKE, ILIKE), !=не поддерживаются или search_registered_modelsне поддерживаютсяsearch_model_versions.
    • Поиск зарегистрированных моделей по имени (например, MlflowClient().search_registered_models(filter_string="name='main.default.mymodel'") не поддерживается. Чтобы получить определенную зарегистрированную модель по имени, используйте get_registered_model.
  • Уведомления по электронной почте и потоки обсуждения комментариев в зарегистрированных моделях и версиях моделей не поддерживаются в каталоге Unity.
  • Журнал действий не поддерживается для моделей в каталоге Unity. Чтобы отслеживать действия моделей в каталоге Unity, используйте журналы аудита.
  • search_registered_models Может возвращать устаревшие результаты для моделей, общих через разностный общий доступ. Чтобы обеспечить последние результаты, используйте интерфейс командной строки Databricks или пакет SDK для перечисления моделей в схеме.