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


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

Внимание

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

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

Требования

  1. В вашей рабочей области должен быть включен Unity Catalog. Ознакомьтесь с тем, как Get начали использовать Unity Catalog для создания Unity метахранилища Catalog, включения его в рабочую область и создания catalog. Если Unity Catalog не включена, используйте модельный реестр рабочей области .

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

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

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

Примечание.

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

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

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

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

Поддержка моделей в Unity Catalog включена в Databricks Runtime 13.2 ML и выше (Databricks Runtime 15.0 ML и выше в Azure China).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Чтобы зарегистрировать модель, используйте метод 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 Catalog с автоматически выведенной сигнатурой

Поддержка автоматически выводимых подписей доступна в 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. В диалоговом окне selectUnity, Catalogи select модель назначения из раскрывающегося списка list.

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

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

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

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

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

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

Set и удаление псевдонимов для моделей

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

Можно использовать псевдонимы set, updateи remove для моделей в Unity Catalog с помощью Эксплорера Catalog. Псевдонимы можно управлять в зарегистрированной модели на странице сведений о модели и настраивать псевдонимы для конкретной версии модели на странице сведений о версии модели.

Чтобы set, updateи удалить псевдонимы с помощью клиентского 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 на schema и 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)

Конечные точки обслуживания моделей также могут ссылаться на версию модели по псевдониму. Рабочие процессы развертывания можно записать в get версию модели по псевдониму и update конечную точку обслуживания модели для обслуживания этой версии с помощью модели , обслуживающей 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 Catalog из любой рабочей области, подключенной к хранилищу метаданных, содержащей модель. Например, можно получить доступ к моделям из prodcatalog в рабочей области разработки, чтобы упростить сравнение недавно разработанных моделей с производственными базовыми показателями.

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

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

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

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

Примечание.

Поддержка родословной моделей table в Unity Catalog доступна в версиях MLflow 2.11.0 и более поздних.

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

При регистрации модели в Unity Catalogинформация о происхождении автоматически сохраняется и отображается на вкладке Lineage в интерфейсе версии модели в Catalog Explorer.

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

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 Catalogзарегистрированные модели являются подтипом защищаемого объекта FUNCTION. Чтобы grant получить доступ к модели, зарегистрированной в CatalogUnity, вы используете GRANT ON FUNCTION. Дополнительные сведения см. в разделе Unity Catalog привилегий и защищаемых объектов. Для получения рекомендаций по наилучшей организации моделей и схем в catalogs, обратитесь к разделу Организуйте ваши данные.

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. Select модель назначения из выпадающего списка list и щелкните Копировать.

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

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

Копирование версии модели с помощью 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 для schema и catalog, содержащих модель.

Вы можете удалить зарегистрированную модель или версию модели в составе зарегистрированной модели, используя пользовательский интерфейс Catalog Explorer или API.

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

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

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

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

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

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

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

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

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

  2. Select Удалить.

  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 для schema и catalog, содержащих модель.

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

Сведения о set и удалении тегов с помощью 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 для schema и catalog, содержащих модель.

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

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

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

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

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

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

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

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

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

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

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

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

Для update описания зарегистрированной модели используйте метод API клиента MLflow update_registered_model():

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

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

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

List и модели поиска

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

client=MlflowClient()
client.search_registered_models()

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

from pprint import pprint

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

Примечание.

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

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

В большинстве случаев для загрузки моделей следует использовать 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 Catalog, чтобы продвигать их в разных средах.

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

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

пример записной книжки

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

Пример записной книжки с моделями в Unity Catalog

Get записная книжка

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

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

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

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

Ограничения

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