gerenciar o ciclo de vida do modelo em Unity Catalog
Este artigo documenta os Modelos em Unity Catalog, que Databricks recomenda para os modelos governantes e implantados. Se o seu workspace não estiver habilitado para Unity Catalog, a funcionalidade desta página não estará disponível. Para obter orientações sobre como fazer o upgrade do Workspace Model Registry para o Unity Catalog, consulte Migrar fluxo de trabalho e modelos para Unity Catalog.
Este artigo descreve como usar Models in Unity Catalog como parte de seu fluxo de trabalho de aprendizado de máquina para gerenciar o ciclo de vida completo dos modelos ML. A Databricks fornece uma versão hospedada do MLflow Model Registry no Unity Catalog. Os modelos em Unity Catalog estendem os benefícios de Unity Catalog aos modelos de ML, incluindo controle de acesso centralizado, auditoria, linhagem e descoberta de modelos em todo o espaço de trabalho. O Models in Unity Catalog é compatível com o cliente MLflow Python de código aberto.
Para obter uma visão geral dos conceitos do Model Registry, consulte MLflow for gen AI agent and ML model lifecycle.
Requisitos
-
Unity Catalog deve estar ativado em seu site workspace. Consulte Get começar usando Unity Catalog para criar um Unity Catalog Metastore, habilitá-lo em um workspace e criar um catálogo. Se o site Unity Catalog não estiver ativado, use o workspace registro de modelo.
-
O senhor deve usar um recurso compute que tenha acesso a Unity Catalog. Para as cargas de trabalho do ML, isso significa que o modo de acesso para o compute deve ser Dedicado (anteriormente, usuário único). Para obter mais informações, consulte Modos de acesso. Com Databricks Runtime 15.4 LTS ML e acima, o senhor também pode usar o modo de acesso de grupo dedicado.
-
Para criar novos modelos registrados, você precisa dos seguintes privilégios:
USE SCHEMA
e privilégiosUSE CATALOG
no esquema e em seu catálogo anexo.CREATE_MODEL
privilégio no esquema. Para conceder esse privilégio, use a UI do Catalog Explorer ou o seguinte comando SQL GRANT:
SQLGRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
Instalar e configurar o cliente MLflow para o Unity Catalog
Esta seção inclui instruções para instalar e configurar o cliente MLflow para o Unity Catalog.
Instalar o cliente Python do MLflow
O suporte para modelos no Unity Catalog está incluído no Databricks Runtime 13.2 MLe acima.
O senhor também pode usar modelos em Unity Catalog em Databricks Runtime 11.3 LTS e acima instalando a versão mais recente do cliente MLflow Python em seu Notebook, usando o seguinte código.
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
Configurar o cliente MLflow para acessar modelos no Unity Catalog
workspace default Unity Catalog hive_metastore
Databricks Runtime LTS Se o catálogo default do seu estiver em (em vez de) e o senhor estiver executando um clustering usando 13.3 ou acima, os modelos serão automaticamente criados e carregados no catálogo. Você não precisa executar essa etapa.
Para outros espaços de trabalho, o cliente MLflow Python cria modelos no Databricks workspace registro de modelo. Para atualizar para os modelos em Unity Catalog, use o seguinte código em seu Notebook para configurar o cliente MLflow:
import mlflow
mlflow.set_registry_uri("databricks-uc")
Para um pequeno número de espaços de trabalho em que o catálogo default foi configurado para um catálogo em Unity Catalog antes de janeiro de 2024 e o registro de modelo workspace foi usado antes de janeiro de 2024, o senhor deve definir manualmente o catálogo default para Unity Catalog usando o comando mostrado acima.
Treinar e registrar modelos compatíveis com o Unity Catalog
Permissões necessárias : para criar um novo modelo registrado, você precisa dos USE SCHEMA
privilégios CREATE_MODEL
e no esquema anexo e do USE CATALOG
privilégio no catálogo anexo. Para criar novas versões de modelo em um modelo registrado, você deve ser o proprietário do modelo registrado USE SCHEMA
e ter USE CATALOG
privilégios no esquema e no catálogo que contêm o modelo.
As versões do modelo ML no UC devem ter uma assinatura de modelo. Se você ainda não está registrando modelos MLflow com assinaturas em suas cargas de trabalho de treinamento de modelos, você pode optar por:
- Use o registro automático do Databricks, que registra automaticamente modelos com assinaturas para muitas estruturas de ML populares. Consulte as estruturas suportadas nos documentos do MLflow.
- Com o MLflow 2.5.0e acima, você pode especificar um exemplo de entrada na sua chamada
mlflow.<flavor>.log_model
, e a assinatura do modelo é automaticamente inferida. Para obter mais informações, consulte a documentação do MLflow.
Em seguida, passe o nome de três níveis do modelo para as APIs do MLflow, no formato <catalog>.<schema>.<model>
.
Os exemplos nesta seção criam e acessam modelos no esquema ml_team
no catálogo prod
.
Os exemplos de treinamento de modelos desta seção criam uma nova versão de modelo e a registram no catálogo prod
. Usar o catálogo prod
não significa necessariamente que a versão do modelo atenda ao tráfego de produção. O catálogo anexo, o esquema e o modelo registrado da versão do modelo refletem seu ambiente (prod
) e as regras de governança associadas (por exemplo, privilégios podem ser configurados para que somente administradores possam excluir do catálogo prod
), mas não seu status de implantação. Para gerenciar o status da implementação, use aliases de modelo.
registro de um modelo para Unity Catalog usando autologging
Para registrar um modelo, use o método MLflow Client API register_model()
. Consulte mlflow.registro.
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")
registrar um modelo usando o API
mlflow.register_model(
"runs:/<run_uuid>/model", "prod.ml_team.iris_model"
)
registro de um modelo para Unity Catalog com assinatura inferida automaticamente
O suporte para assinaturas inferidas automaticamente está disponível na versão 2.5.0 do MLflow e acima, e é compatível com o Databricks Runtime 11.3 LTS ML e acima.Para usar assinaturas inferidas automaticamente, use o seguinte código para instalar o cliente MLflow Python mais recente em seu notebook:
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
O código a seguir mostra um exemplo de uma assinatura inferida automaticamente.
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",
)
registrar um modelo usando a UI
Siga estas etapas:
-
Na página de execução do experimento, clique em registrar model no canto superior direito da UI.
-
Na caixa de diálogo, selecione Unity Catalog e selecione um modelo de destino na lista suspensa.
-
Clique em Registrar .
O registro de um modelo pode levar algum tempo. Para monitorar o progresso, navegue até o modelo de destino em Unity Catalog e refresh periodicamente.
modelos implantados usando aliases
Os aliases de modelo permitem que você atribua uma referência nomeada mutável a uma versão específica de um modelo registrado. Você pode usar aliases para indicar o status de implantação de uma versão do modelo. Por exemplo, você pode alocar um alias “Champion” para a versão do modelo atualmente em produção e direcionar esse alias para cargas de trabalho que usam o modelo de produção. Em seguida, você pode atualizar o modelo de produção reatribuindo o alias “Champion” a uma versão diferente do modelo.
Definir e excluir aliases em modelos
Permissões necessárias : proprietário do modelo registrado, além de privilégios USE SCHEMA
e USE CATALOG
no esquema e no catálogo que contêm o modelo.
O senhor pode definir, atualizar e remover aliases para modelos no Unity Catalog usando o Catalog Explorer. O senhor pode gerenciar aliases em um modelo registrado na página de detalhes do modelo e configurar aliases para uma versão específica do modelo na página de detalhes da versão do modelo.
Para definir, atualizar e excluir aliases usando a API do MLflow Client, consulte os exemplos abaixo:
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")
Para obter mais detalhes sobre APIs de cliente de alias, consulte a documentação da API do MLflow.
Carregue a versão do modelo por alias para cargas de trabalho de inferência
Permissões necessárias : privilégio EXECUTE
no modelo registrado, mais privilégios USE SCHEMA
e USE CATALOG
no esquema e no catálogo que contém o modelo.
As cargas de trabalho de inferência de lotes podem fazer referência a uma versão do modelo por alias. O snippet abaixo carrega e aplica a versão do modelo "Champion" para inferência de lotes. Se a versão "Champion" for atualizada para fazer referência a uma nova versão do modelo, a carga de trabalho de inferência de lotes a pegará automaticamente em sua próxima execução. Isso permite que o senhor desacoplasse as implementações de modelos das cargas de trabalho de inferência de lotes.
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)
O endpoint servindo modelo também pode fazer referência a uma versão do modelo por alias. O senhor pode escrever um fluxo de trabalho de implantação para obter uma versão do modelo por alias e atualizar um servindo modelo endpoint para servir essa versão, usando o servindo modelo REST API . Por exemplo:
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(...)
Carregue a versão do modelo por número de versão para cargas de trabalho de inferência
Você também pode carregar versões de modelo por número de versão:
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)
Compartilhe modelos em todo o espaço de trabalho
Compartilhe modelos com usuários na mesma região
Desde que tenha os privilégios adequados, o senhor pode acessar os modelos em Unity Catalog de qualquer workspace que esteja anexado ao metastore que contém o modelo. Por exemplo, o senhor pode acessar modelos do catálogo prod
em um dev workspace, para facilitar a comparação de modelos recém-desenvolvidos com a linha de base de produção.
Para colaborar com outros usuários (compartilhar privilégios de gravação) em um modelo registrado que você criou, você deve conceder a propriedade do modelo a um grupo contendo você e os usuários com os quais você gostaria de colaborar. Os colaboradores também devem ter os privilégios USE CATALOG
e USE SCHEMA
no catálogo e no esquema que contém o modelo. Para obter detalhes, consulte Privilégios e objetos protegíveis do Unity Catalog.
Compartilhe modelos com usuários em outra região ou account
Para compartilhar modelos com usuários de outras regiões ou contas, use o Delta Sharing Databricks-to-Databricks fluxo de compartilhamento. Consulte Adicionar modelos a um compartilhamento (para provedores) e Obter acesso no modelo Databricks-to-Databricks (para destinatários). Como destinatário, depois de criar um catálogo a partir de um compartilhamento, o senhor acessa os modelos desse catálogo compartilhado da mesma forma que qualquer outro modelo no Unity Catalog.
Rastrear a linhagem de dados de um modelo no Unity Catalog
O suporte à tabela para modelar a linhagem em Unity Catalog está disponível em MLflow 2.11.0 e acima.
Quando o senhor treina um modelo em uma tabela no site Unity Catalog, é possível rastrear a linhagem do modelo até o(s) site(s) upstream dataset no qual ele foi treinado e avaliado. Para fazer isso, use mlflow.logs. Isso salva as informações da tabela de entrada com a execução do MLflow que gerou o modelo. A linhagem de dados também é capturada automaticamente para registros de modelos usando o recurso store APIs. Ver recurso governança e linhagem.
Quando o senhor registra o modelo em Unity Catalog, as informações de linhagem são salvas automaticamente e ficam visíveis em Lineage tab da versão do modelo UI no Catalog Explorer.
O código a seguir mostra um exemplo.
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",
)
Controle o acesso aos modelos
No Unity Catalog, os modelos registrados são um subtipo do objeto securizável FUNCTION
. Para conceder acesso a um modelo registrado no Unity Catalog, o senhor usa GRANT ON FUNCTION
. Para obter detalhes, consulte Privilégios e objetos protegíveis do Unity Catalog. Para ver as melhores práticas de organização de modelos em catálogos e esquemas, consulte Organizar seus dados.
O senhor pode configurar as permissões do modelo de forma programática usando a API REST de concessões. Quando o senhor configurar as permissões do modelo, defina securable_type
como "FUNCTION"
nas solicitações da API REST. Por exemplo, use PATCH /api/2.1/unity-catalog/permissions/function/{full_name}
para atualizar as permissões registradas do modelo.
modelos de visualização na interface do usuário
Permissões necessárias : Para view um modelo registrado e suas versões de modelo na UI, o senhor precisa do privilégio EXECUTE
no modelo registrado, além dos privilégios USE SCHEMA
e USE CATALOG
no esquema e no catálogo que contêm o modelo
O senhor pode view e gerenciar modelos registrados e versões de modelos em Unity Catalog usando o Catalog Explorer.
Renomear um modelo
Permissões exigidas : proprietário do modelo registrado, privilégio do CREATE_MODEL
no esquema contendo o modelo registrado e privilégios do USE SCHEMA
e USE CATALOG
no esquema e catálogo contendo o modelo.
Para renomear um modelo registrado, use o método MLflow Client API rename_registered_model()
:
client=MlflowClient()
client.rename_registered_model("<full-model-name>", "<new-model-name>")
Copiar uma versão do modelo
O senhor pode copiar uma versão de modelo de um modelo para outro no Unity Catalog.
Copie uma versão do modelo usando a interface
Siga estas etapas:
-
Na página da versão do modelo, clique em Copiar esta versão no canto superior direito da interface do usuário.
-
Selecione um modelo de destino na lista suspensa e clique em Copiar .
Copiar um modelo pode levar tempo. Para monitorar o progresso, navegue até o modelo de destino em Unity Catalog e refresh periodicamente.
Copiar uma versão do modelo usando a API
Para copiar uma versão do modelo, use a API Python copy_model_version() do MLflow:
client = MlflowClient()
client.copy_model_version(
"models:/<source-model-name>/<source-model-version>",
"<destination-model-name>",
)
Excluir um modelo ou versão do modelo
Permissões necessárias : proprietário do modelo registrado, além de privilégios USE SCHEMA
e USE CATALOG
no esquema e no catálogo que contêm o modelo.
O senhor pode excluir um modelo registrado ou uma versão de modelo dentro de um modelo registrado usando a UI do Catalog Explorer ou a API.
Você não pode desfazer esta ação. Quando você exclui um modelo, todos os artefatos de modelo armazenados pelo Unity Catalog e todos os metadados associados ao modelo registrado são excluídos.
Excluir uma versão ou modelo do modelo usando a interface
Para excluir um modelo ou uma versão de modelo no Unity Catalog, siga estas etapas.
-
Na página do modelo ou na página da versão do modelo, clique no menu de kebab
no canto superior direito.
Na página do modelo:
Na página da versão do modelo:
-
Selecione Excluir .
-
Uma caixa de diálogo de confirmação é exibida. Clique em Excluir para confirmar.
Excluir uma versão do modelo ou um modelo usando a API
Para excluir uma versão do modelo, use o método delete_model_version()
da API do cliente 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)
Para excluir um modelo, use o método MLflow Client API delete_registered_model()
:
client = MlflowClient()
client.delete_registered_model(name="<model-name>")
Use etiquetas em modelos
A s tags são keyvalores que o senhor associa a modelos e versões de modelos registrados, permitindo que os rótulo e categorize por função ou status. Por exemplo, o senhor pode aplicar uma tag com key "task"
e valor "question-answering"
(exibido na UI como task:question-answering
) a modelos registrados destinados à tarefa de resposta a perguntas. No nível da versão do modelo, você pode marcar as versões em validação pré-implantação com validation_status:pending
e aquelas liberadas para implantação com validation_status:approved
.
Permissões necessárias : proprietário ou ter o privilégio APPLY_TAG
no modelo registrado, além dos privilégios USE SCHEMA
e USE CATALOG
no esquema e no catálogo que contém o modelo.
Consulte Adicionar e atualizar tags usando o Catalog Explorer para saber como definir e excluir tags usando a interface do usuário.
Para definir e excluir tags usando a API do MLflow Client, consulte os exemplos abaixo:
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")
Tanto o modelo registrado quanto as tags de versão do modelo devem atender às restrições de toda a plataforma.
Para obter mais detalhes sobre as APIs do cliente de tags, consulte a documentação da API do MLflow.
Adicionar uma descrição (comentários) a um modelo ou versão do modelo
Permissões necessárias : proprietário do modelo registrado, além de privilégios USE SCHEMA
e USE CATALOG
no esquema e no catálogo que contêm o modelo.
O senhor pode incluir uma descrição de texto para qualquer modelo ou versão de modelo no Unity Catalog. Por exemplo, o senhor pode fornecer uma visão geral do problema ou informações sobre a metodologia e o algoritmo usados.
Para os modelos, o senhor também tem a opção de usar os comentários gerados pelo site AI. Consulte Adicionar AIcomentários gerados pelo Unity Catalog site aos objetos.
Adicionar uma descrição a um modelo usando a interface
Para adicionar uma descrição a um modelo, o senhor pode usar os comentários gerados pelo site AIou inserir seus próprios comentários. O senhor pode editar os comentários gerados pelo site AIconforme necessário.
- Para adicionar comentários gerados automaticamente, clique no botão AI generate (Geração de IA ).
- Para adicionar seus próprios comentários, clique em Adicionar . Insira seus comentários na caixa de diálogo e clique em Salvar .
Adicione uma descrição a uma versão do modelo usando a interface
Para adicionar uma descrição a uma versão de modelo no Unity Catalog, siga estas etapas:
-
Na página da versão do modelo, clique no ícone de lápis em Descrição .
-
Insira seus comentários na caixa de diálogo e clique em Salvar .
Adicionar uma descrição a um modelo ou versão de modelo usando a API
Para atualizar a descrição de um modelo registrado, use o update_registered_model()
método MLflow Client API:
client = MlflowClient()
client.update_registered_model(
name="<model-name>",
description="<description>"
)
Para atualizar a descrição de uma versão do modelo, use o método API do cliente MLflow update_model_version()
:
client = MlflowClient()
client.update_model_version(
name="<model-name>",
version=<model-version>,
description="<description>"
)
Listar e pesquisar modelos
Para obter uma lista de modelos registrados no Unity Catalog, use a API Python search_registered_models() do MLflow:
client=MlflowClient()
client.search_registered_models()
Para pesquisar um nome de modelo específico e obter informações sobre as versões desse modelo, use search_model_versions()
:
from pprint import pprint
client=MlflowClient()
[pprint(mv) for mv in client.search_model_versions("name='<model-name>'")]
Nem todos os campos e operadores da API de pesquisa são compatíveis com os modelos do Unity Catalog. Consulte Limitações para obter detalhes.
baixar arquivos de modelo (caso de uso avançado)
Na maioria dos casos, para carregar modelos, o senhor deve usar APIs do MLflow como mlflow.pyfunc.load_model
ou mlflow.<flavor>.load_model
(por exemplo, mlflow.transformers.load_model
para modelos HuggingFace).
Em alguns casos, pode ser necessário fazer o download de arquivos de modelo para depurar o comportamento do modelo ou problemas de carregamento do modelo. O senhor pode fazer o download de arquivos de modelo usando o site mlflow.artifacts.download_artifacts
, da seguinte forma:
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)
Promova um modelo em todos os ambientes
Databricks recomenda que o senhor implante o pipeline ML como código. Isso elimina a necessidade de promover modelos entre ambientes, pois todos os modelos de produção podem ser produzidos por meio do treinamento automatizado fluxo de trabalho em um ambiente de produção.
No entanto, em alguns casos, pode ser muito caro treinar novamente os modelos em todos os ambientes. Em vez disso, o senhor pode copiar versões de modelos entre modelos registrados no Unity Catalog para promovê-los entre ambientes.
O senhor precisa dos seguintes privilégios para executar o código de exemplo abaixo:
USE CATALOG
nos catálogosstaging
eprod
.USE SCHEMA
nos esquemasstaging.ml_team
eprod.ml_team
.EXECUTE
emstaging.ml_team.fraud_detection
.
Além disso, você deve ser o proprietário do modelo registrado prod.ml_team.fraud_detection
.
O trecho de código a seguir usa o copy_model_version
MLflow Client API, disponível em MLflow versão 2.8.0 e acima.
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)
Depois que a versão do modelo estiver no ambiente de produção, você poderá realizar qualquer validação de pré-implantação necessária. Em seguida, você pode marcar a versão do modelo para implantação usando aliases.
client = mlflow.tracking.MlflowClient()
client.set_registered_model_alias(name="prod.ml_team.fraud_detection", alias="Champion", version=copied_model_version.version)
No exemplo acima, somente os usuários que podem ler do modelo registrado staging.ml_team.fraud_detection
e gravar no modelo registrado prod.ml_team.fraud_detection
podem promover modelos de preparação para o ambiente de produção. Os mesmos usuários também podem usar aliases para gerenciar quais versões do modelo estão implantadas no ambiente de produção. Você não precisa configurar nenhuma outra regra ou política para governar a promoção e a implantação do modelo.
Você pode personalizar esse fluxo para promover a versão do modelo em vários ambientes que correspondam à sua configuração, como dev
, qa
e prod
. O controle de acesso é aplicado conforme configurado em cada ambiente.
Exemplo de notebook
Este exemplo de Notebook ilustra como usar Models em Unity Catalog APIs para gerenciar modelos em Unity Catalog, inclusive registrar modelos e versões de modelos, adicionar descrições, carregar e implantar modelos, usar aliases de modelos e excluir modelos e versões de modelos.
Modelos em Unity Catalog Notebook de exemplo
Migrar fluxo de trabalho e modelos para Unity Catalog
Databricks recomenda o uso de modelos em Unity Catalog para melhorar a governança, facilitar o compartilhamento entre espaços e ambientes de trabalho e tornar mais flexível MLOps o fluxo de trabalho. A tabela compara os recursos do Workspace Model Registry e do Unity Catalog.
Capacidade | Workspace Model Registry (legado) | Modelos no Unity Catalog (recomendado) |
---|---|---|
Referenciar versões do modelo por aliases nomeados | Model Registry Estágios: Mova as versões do modelo para um dos quatro estágios fixos para referenciá-las por esse estágio. Não é possível renomear nem adicionar estágios. | Model Registry Aliases: Crie até 10 referências nomeadas personalizadas e reatribuíveis a versões de modelos para cada modelo registrado. |
Crie ambientes com acesso controlado para modelos | Model Registry Estágios: Use estágios dentro de um modelo registrado para denotar o ambiente de suas versões de modelo, com controles de acesso para apenas dois dos quatro estágios fixos ( | Modelos registrados: Crie um modelo registrado para cada ambiente em seu fluxo de trabalho de MLOps, utilizando namespaces de três níveis e permissões do Unity Catalog para expressar a governança. |
Promover modelos entre ambientes (modelo implantado) | Use o | Use o |
Acesse e compartilhe modelos em todo o espaço de trabalho | Exporte e importe modelos manualmente pelo espaço de trabalho ou configure conexões com registros de modelos remotos usando o acesso pessoal tokens e workspace Secret Scope. | Acesso imediato a modelos em todo o espaço de trabalho no mesmo account. Nenhuma configuração é necessária. |
Configurar permissões | Defina as permissões no nível workspace. | Defina as permissões no nível account, que aplica uma governança consistente em todo o espaço de trabalho. |
Modelos de acesso no site Databricks marketplace | Indisponível. | Carregue modelos do site Databricks marketplace em seu metastore Unity Catalog e acesse-os no espaço de trabalho. |
Os artigos vinculados abaixo descrevem como migrar o fluxo de trabalho (modelo de treinamento e lotes inference Job) e os modelos do site Workspace Model Registry para Unity Catalog.
- Atualizar fluxos de trabalho de ML para modelos de destino no Unity Catalog
- Atualizar modelos para o Unity Catalog
Limitações
-
Os estágios não são suportados para modelos no Unity Catalog. A Databricks recomenda o uso do namespace de três níveis no Unity Catalog para expressar o ambiente em que um modelo está e o uso de aliases para promover modelos para implantação. Consulte Promover um modelo em todos os ambientes para obter detalhes.
-
Os webhooks não são compatíveis com os modelos do Unity Catalog. Veja as alternativas sugeridas no guia de upgrade.
-
Alguns campos e operadores da API de pesquisa não são compatíveis com modelos no Unity Catalog. Isso pode ser mitigado chamando-se as APIs de pesquisa com filtros compatíveis e examinando os resultados. Veja a seguir alguns exemplos:
- O parâmetro
order_by
não é suportado pelas APIs de cliente search_model_versions ou search_registered_models. - Filtros baseados em tags (
tags.mykey = 'myvalue'
) não são suportados parasearch_model_versions
ousearch_registered_models
. - Operadores diferentes de igualdade exata (por exemplo,
LIKE
,ILIKE
,!=
) não são suportados emsearch_model_versions
ousearch_registered_models
. - A pesquisa de modelos registrados por nome (por exemplo, não
MlflowClient().search_registered_models(filter_string="name='main.default.mymodel'")
é suportada). Para buscar um modelo registrado específico pelo nome, use get_registered_model.
- O parâmetro
-
Notificações por e-mail e tópicos de discussão de comentários em modelos registrados e versões de modelo não são suportados no Catálogo Unity.
-
A atividade log não é compatível com os modelos em Unity Catalog. Para rastrear a atividade nos modelos em Unity Catalog, use audit logs.
-
search_registered_models
pode retornar resultados desatualizados para modelos compartilhados por meio do Delta Sharing. Para garantir os resultados mais recentes, use a CLI ou o SDK da Databricks para listar os modelos em um esquema.