Управление жизненным циклом модели в Unity Catalog
Внимание
- В этой статье описаны модели в Unity Catalog, которые Databricks рекомендует для управления и развертывания моделей. Если для рабочей области не включена Unity Catalog, функциональность на этой странице недоступна. Вместо этого см. раздел "Управление жизненным циклом модели" с помощью реестра моделей рабочей области (устаревшая версия). Инструкции по обновлению из реестра моделей рабочей области в Unity Catalogсм. в статье Миграция рабочих процессов и моделей в Unity Catalog.
- Модели в Unity Catalog недоступны в государственных регионах Azure.
В этой статье описывается, как использовать модели в Unity Catalog в рамках рабочего процесса машинного обучения для управления полным жизненным циклом моделей машинного обучения. Databricks предоставляет размещенную версию реестра моделей MLflow в Unity Catalog. Модели в Unity Catalog предоставляют модели машинного обучения те же преимущества, что и Unity Catalog, включая централизованное управление доступом, аудит, прослеживаемость и обнаружение моделей в рабочих пространствах. Модели в Unity Catalog совместимы с клиентом Python с открытым кодом MLflow.
Общие сведения о концепциях реестра моделей см. в разделе "Управление жизненным циклом машинного обучения" с помощью MLflow.
Требования
В вашей рабочей области должен быть включен Unity Catalog. Ознакомьтесь с тем, как Get начали использовать Unity Catalog для создания Unity метахранилища Catalog, включения его в рабочую область и создания catalog. Если Unity Catalog не включена, используйте модельный реестр рабочей области .
Необходимо использовать вычислительный ресурс, который имеет доступ к Unity Catalog. Для рабочих нагрузок машинного обучения это означает, что режим доступа для вычислений должен быть одним пользователем. Дополнительные сведения см. в режимах доступа.
Чтобы создать новые зарегистрированные модели, вам потребуются следующие привилегии:
-
USE SCHEMA
иUSE CATALOG
привилегии на schema и его включающий catalog. - Привилегии на
CREATE_MODEL
schema. Чтобыэтой привилегии, используйте пользовательский интерфейс обозревателя или следующуюкоманду 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_team
schema в prod
catalog.
Примеры обучения модели в этом разделе создают новую версию модели и регистрируют ее в prod
catalog. Использование prod
catalog не обязательно означает, что версия модели обслуживает рабочий трафик. Версия модели, включающая catalog, schemaи зарегистрированная модель отражают свою среду (prod
) и связанные правила управления (например, привилегии можно set, чтобы только администраторы могли удаляться из prod
catalog), но не его состояние развертывания. Для управления состоянием развертывания используйте псевдонимы модели.
Регистрация модели в 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",
)
Регистрация модели с помощью пользовательского интерфейса
Выполните следующие действия:
На странице запуска эксперимента щелкните "Регистрация модели " в правом верхнем углу пользовательского интерфейса.
В диалоговом окне selectUnity, Catalogи select модель назначения из раскрывающегося списка list.
Щелкните Зарегистрировать.
Регистрация модели может занять некоторое время. Чтобы периодически отслеживать ход выполнения, перейдите к целевой модели в 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 из любой рабочей области, подключенной к хранилищу метаданных, содержащей модель. Например, можно получить доступ к моделям из prod
catalog в рабочей области разработки, чтобы упростить сравнение недавно разработанных моделей с производственными базовыми показателями.
Для совместной работы с другими пользователями (предоставление прав на запись) в зарегистрированной модели необходимо 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.
Копирование версии модели с помощью пользовательского интерфейса
Выполните следующие действия:
На странице версии модели щелкните "Копировать эту версию " в правом верхнем углу пользовательского интерфейса.
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, выполните следующие действия.
На странице модели или на странице версии модели щелкните меню kebab в правом верхнем углу.
На странице модели:
На странице версии модели:
Select Удалить.
Открывается диалог запроса подтверждения. Нажмите кнопку Удалить, чтобы подтвердить операцию.
Удаление модели или версии модели с помощью 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.
- Чтобы добавить собственные комментарии, нажмите кнопку "Добавить". Введите комментарии в диалоговом окне и нажмите кнопку "Сохранить".
Добавление описания в версию модели с помощью пользовательского интерфейса
Чтобы добавить описание в версию модели в Unity Catalog, выполните следующие действия.
На странице версии модели щелкните значок карандаша в разделе "Описание".
Введите комментарии в диалоговом окне и нажмите кнопку "Сохранить".
Добавление описания в версию модели или модели с помощью 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
иprod
catalogs. -
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
Перенос рабочих процессов и моделей в 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
- обновление моделей на 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.