Управление жизненным циклом модели в каталоге Unity
Внимание
- В этой статье описываются модели в каталоге Unity, которые Databricks рекомендует использовать для управления и развертывания моделей. Если рабочая область не активирована для Unity Catalog, функции на этой странице недоступны. Вместо этого см. раздел "Управление жизненным циклом модели" с помощью реестра моделей рабочей области (устаревшая версия). Инструкции по обновлению из реестра моделей рабочей области в каталог Unity см. в статье Перенос рабочих процессов и моделей в каталог Unity.
- Модели в каталоге Unity недоступны в регионах Azure для государственных организаций.
В этой статье описывается использование моделей в каталоге Unity в рамках рабочего процесса машинного обучения для управления полным жизненным циклом моделей машинного обучения. Databricks предоставляет размещенную версию реестра моделей MLflow в каталоге Unity. Модели в каталоге Unity расширяют преимущества каталога Unity до моделей машинного обучения, включая централизованное управление доступом, аудит, происхождение и обнаружение моделей в рабочих областях. Модели в каталоге Unity совместимы с клиентом Python с открытым кодом MLflow.
Общие сведения о концепциях реестра моделей см. в разделе MLflow в контексте агента генерации ИИ и жизненного цикла модели машинного обучения.
Требования
Каталог Unity должен быть включен в рабочей области. См. статью Начало работы с каталогом Unity для создания хранилища метаданных каталога Unity, включения его в рабочей области и создания каталога. Если каталог Unity не включен, используйте реестр моделей рабочей области .
Необходимо использовать вычислительный ресурс, имеющий доступ к каталогу Unity. Для рабочих нагрузок машинного обучения это означает, что режим доступа для вычислений должен быть одним пользователем. Дополнительные сведения см. в режимах доступа. С помощью Databricks Runtime 15.4 LTS ML и более поздних версий можно также использовать режим доступа к выделенной группе.
Чтобы создать новые зарегистрированные модели, вам потребуются следующие привилегии:
-
USE SCHEMA
иUSE CATALOG
привилегии для схемы и содержащего её каталога. -
CREATE_MODEL
привилегия на схему. Чтобы предоставить эту привилегию, используйте пользовательский интерфейс обозревателя каталогов или следующую команду SQL GRANT:
GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
-
Примечание.
Рабочая область должна быть присоединена к хранилищу метаданных Unity Catalog, поддерживающему наследование привилегий. Это верно для всех хранилищ метаданных, созданных после 25 августа 2022 года. Если выполняется в более старом хранилище метаданных, следуйте инструкциям по обновлению.
Установка и настройка клиента MLflow для каталога Unity
В этом разделе содержатся инструкции по установке и настройке клиента MLflow для каталога Unity.
Установка клиента Python MLflow
Поддержка моделей в каталоге Unity включена в 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
Если каталог по умолчанию рабочей области находится в Unity Catalog (а не в hive_metastore
), и вы запускаете кластер с помощью Databricks Runtime 13.3 LTS или более поздней версии (Databricks Runtime 15.0 или более поздней версии в регионах Azure China), модели автоматически создаются и загружаются из каталога по умолчанию. Вам не нужно выполнять этот шаг.
Для других рабочих областей клиент 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 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",
)
Регистрация модели с помощью пользовательского интерфейса
Выполните следующие действия:
На странице запуска эксперимента щелкните "Регистрация модели " в правом верхнем углу пользовательского интерфейса.
В диалоговом окне выберите Unity Catalog, чтобы указать целевую модель из раскрывающегося списка.
Щелкните Зарегистрировать.
Регистрация модели может занять некоторое время. Чтобы отслеживать ход выполнения, перейдите к целевой модели в каталоге 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 Catalog доступна в MLflow 2.11.0 и выше.
При обучении модели на таблице в Unity Catalog можно отслеживать происхождение модели до исходных наборов данных, на которых она была обучена и оценена. Для этого используйте mlflow.log_input. При этом данные входной таблицы сохраняются с помощью запуска MLflow, создающего модель. Данные происхождения данных также автоматически фиксируются для моделей, зарегистрированных с помощью API хранилища компонентов. См. сведения об управлении функциями и происхождении.
При регистрации модели в каталоге Unity данные о происхождении автоматически сохраняются и отображаются на вкладке Lineage пользовательского интерфейса версии модели в обозревателе каталогов.
Следующий код показывает пример.
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.
Копирование версии модели с помощью пользовательского интерфейса
Выполните следующие действия:
На странице версии модели щелкните "Копировать эту версию " в правом верхнем углу пользовательского интерфейса.
Выберите целевую модель из раскрывающегося списка и щелкните Копировать.
Копирование модели может занять некоторое время. Чтобы отслеживать ход выполнения, перейдите к целевой модели в каталоге 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, выполните следующие действия.
На странице модели или на странице версии модели щелкните меню
kebab в правом верхнем углу.
На странице модели:
На странице версии модели:
Выберите Удалить.
Открывается диалог запроса подтверждения. Нажмите кнопку Удалить, чтобы подтвердить операцию.
Удаление модели или версии модели с помощью 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 Catalog.
Добавление описания в модель с помощью пользовательского интерфейса
Чтобы добавить описание модели, можно использовать примечания, созданные ИИ, или ввести собственные комментарии. При необходимости можно изменять созданные ИИ комментарии.
- Чтобы добавить автоматически сгенерированные примечания, нажмите кнопку ИИ создать .
- Чтобы добавить собственные комментарии, нажмите кнопку "Добавить". Введите комментарии в диалоговом окне и нажмите кнопку "Сохранить".
Добавление описания в версию модели с помощью пользовательского интерфейса
Чтобы добавить описание в версию модели в каталоге Unity, выполните следующие действия.
На странице версии модели щелкните значок карандаша в разделе "Описание".
Введите комментарии в диалоговом окне и нажмите кнопку "Сохранить".
Добавление описания в версию модели или модели с помощью API
Чтобы обновить описание зарегистрированной модели, используйте метод update_registered_model()
API клиента MLflow:
client = MlflowClient()
client.update_registered_model(
name="<model-name>",
description="<description>"
)
Чтобы обновить описание версии модели, используйте метод api клиента MLflow update_model_version()
:
client = MlflowClient()
client.update_model_version(
name="<model-name>",
version=<model-version>,
description="<description>"
)
Модели списка и поиска
Чтобы получить список зарегистрированных моделей в каталоге Unity, используйте search_registered_models() MLflow API Python:
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 CATALOG
в каталогахstaging
иprod
. -
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 для управления моделями в каталоге Unity, включая регистрацию моделей и версий моделей, добавление описаний, загрузку и развертывание моделей, использование псевдонимов моделей, а также удаление моделей и версий моделей.
Модели в образцовом ноутбуке каталога Unity
Перенос рабочих процессов и моделей в каталог Unity
Databricks рекомендует использовать модели в каталоге Unity для улучшения управления, простого совместного использования в рабочих областях и средах, а также более гибких рабочих процессов MLOps. В таблице сравниваются возможности реестра моделей рабочей области и каталога Unity.
Возможность | Реестр моделей рабочей области (устаревшая версия) | Модели в каталоге Unity (рекомендуется) |
---|---|---|
Версии эталонной модели по именованным псевдонимам | Этапы реестра моделей. Перемещение версий модели на один из четырех фиксированных этапов для их ссылки на этот этап. Не удается переименовать или добавить этапы. | Псевдонимы реестра моделей: создайте до 10 пользовательских и переназначаемых именованных ссылок на версии модели для каждой зарегистрированной модели. |
Создание управляемых доступом сред для моделей | Этапы реестра моделей: использование этапов в одной зарегистрированной модели для обозначения среды своих версий модели с элементами управления доступом только для двух из четырех фиксированных этапов (Staging и Production ). |
Зарегистрированные модели: создайте зарегистрированную модель для каждой среды в рабочем процессе MLOps, используя трехуровневые пространства имен и разрешения Unity Catalog для реализации управления. |
Повышение уровня моделей в разных средах (модель развертывания) |
transition_model_version_stage() Используйте API клиента MLflow для перемещения версии модели на другой этап, потенциально критических рабочих процессов, ссылающихся на предыдущий этап. |
copy_model_version() Используйте API клиента MLflow для копирования версии модели из одной зарегистрированной модели в другую. |
Доступ и совместное использование моделей в рабочих областях | Вручную экспортируйте и импортируйте модели в рабочих областях или настройте подключения к удаленным реестрам моделей с помощью личных маркеров доступа и областей секретов рабочей области. | Вне поля доступа к моделям в разных рабочих областях в одной учетной записи. не требуется дополнительная настройка. |
Настройка разрешений | Задайте разрешения на уровне рабочей области. | Задайте разрешения на уровне учетной записи, которая применяет согласованное управление в рабочих областях. |
Доступ к моделям в Marketplace Databricks | Недоступный. | Загрузите модели из маркетплейса Databricks в хранилище метаданных Unity Catalog и используйте их в рабочих областях. |
В статьях ниже описано, как перенести рабочие процессы (задания обучения модели и пакетного вывода) и модели из реестра моделей рабочей области в каталог Unity.
- Обновите рабочие процессы машинного обучения до целевых моделей в каталоге Unity
- Перевод моделей на каталог Unity
Ограничения
- Этапы не поддерживаются для моделей в каталоге Unity. Databricks рекомендует использовать трехуровневое пространство имен в каталоге Unity, чтобы выразить среду, в которой находится модель, и использовать псевдонимы для продвижения моделей для развертывания. Дополнительные сведения см. в статье "Повышение уровня модели в разных средах ".
- Веб-перехватчики не поддерживаются для моделей в каталоге Unity. Ознакомьтесь с предлагаемыми альтернативами в руководстве по обновлению.
- Некоторые поля и операторы API поиска не поддерживаются для моделей в каталоге Unity. Это можно устранить, вызвав 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.
- Журнал действий не поддерживается для моделей в каталоге Unity. Чтобы отслеживать действия моделей в каталоге Unity, используйте журналы аудита .
-
search_registered_models
Может возвращать устаревшие результаты для моделей, общих через разностный общий доступ. Чтобы обеспечить самые последние результаты, используйте CLI Databricks или пакет SDK , чтобы перечислить модели в схеме.