Gerencie o ciclo de vida do modelo no Unity Catalog
Importante
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. Em vez disso, consulte gerenciar o ciclo de vida do modelo usando o site Workspace Model Registry (legado). 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.
Os modelos no Unity Catalog não estão disponíveis nas regiões AWS GovCloud.
Este artigo descreve como usar modelos no Unity Catalog como parte de seu workflow do machine learning para gerenciar todo o ciclo de vida dos modelos de ML. Databricks fornece uma versão hospedada do MLflow Model Registry no Unity Catalog. Os modelos no Unity Catalog estendem os benefícios do Unity Catalog aos modelos de ML, incluindo controle de acesso centralizado, auditoria, linhagem e descoberta de modelos no workspace. Os modelos no Unity Catalog são compatíveis com o cliente MLflow Python de código aberto.
Para obter uma visão geral dos conceitos do Model Registry, consulte Gerenciamento do ciclo de vida de ML usando MLflow.
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 de usuário único. Para obter mais informações, consulte Modos de acesso.
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 interface do usuário do Catalog Explorer ou o seguinte comando SQL GRANT:
GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
Observação
Seu workspace deve estar conectado a um metastore do Unity Catalog que ofereça suporte à herança de privilégios. Isso vale para todas as metastores criadas após 25 de agosto de 2022. Se estiver sendo executado em um metastore mais antigo, siga os documentos para atualizar.
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.
Instale o cliente MLflow Python
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
cluster Databricks Runtime LTS Se o catálogo default do seu estiver em (em vez de) e o senhor estiver executando um usando 13.3 ou acima, os modelos serão automaticamente criados e carregados no catálogo. O senhor não precisa realizar esse passo.
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 autologging do Databricks, que modela automaticamente o log com assinaturas para muitas estruturas de ML populares. Consulte as estruturas suportadas na documentação 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 APIs 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 modelo nesta seção criam uma nova versão do modelo e registram-na 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, esquema e modelo registrado da versão do modelo refletem seu ambiente (prod
) e regras de governança associadas (por exemplo, privilégios podem ser configurados para que apenas administradores possam excluir do catálogo prod
), mas não sua implantação status. Para gerenciar o status de implantação, use aliases de modelo.
Registrar um modelo no 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"
)
Registre um modelo no 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 estes passos:
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 atribuir uma referência nomeada e mutável a uma versão específica de um modelo registrado. Você pode usar aliases para indicar o status de implementação de uma versão de modelo. Por exemplo, você poderia alocar um alias “Champion” para a versão do modelo atualmente em produção e direcionar esse alias em cargas de trabalho que usam o modelo de produção. Você pode então atualizar o modelo de produção reatribuindo o alias “Champion” a uma versão de modelo diferente.
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.
Você pode definir, atualizar e remover aliases de modelos no Unity Catalog usando o Catalog Explorer. Você pode gerenciar aliases em um modelo registrado na página de detalhes do modelo e configurar aliases para uma versão de modelo específica na página de detalhes da versão do modelo.
Para definir, atualizar e excluir aliases usando a API do cliente MLflow, veja 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 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)
Rastrear a linhagem de dados de um modelo no Unity Catalog
Observação
O suporte à tabela para modelar a linhagem no Unity Catalog está disponível no MLflow 2.11.0 e acima.
Quando o senhor ensina um modelo em uma tabela em Unity Catalog, pode rastrear a linhagem do modelo até o(s) dataset(s) upstream em que 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 logs de modelos usando o repositório de recursos APIs. Ver recurso governança e linhagem.
Quando o senhor registra o modelo no Unity Catalog, as informações de linhagem são salvas automaticamente e ficam visíveis no Lineage tab da interface do usuário da versão do modelo 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",
)
Controlar o acesso aos modelos
No Unity Catalog, os modelos registrados são um subtipo do objeto securable 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.
Exibir modelos na UI
Permissões necessárias: para visualizar um modelo registrado e suas versões de modelo na UI, você precisa de privilégio EXECUTE
no modelo registrado, além de privilégios USE SCHEMA
e USE CATALOG
no esquema e catálogo que contém o modelo
Você pode view e gerenciar modelos registrados e versões de modelos no 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 estes passos:
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.
É possível excluir um modelo registrado ou uma versão de modelo dentro de um modelo registrado usando a UI do Catalog Explorer ou a API.
Aviso
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 versão de modelo em Unity Catalog, siga estes passos.
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>")
Usar tags em modelos
tags são par key-valor que o senhor associa a modelos registrados e versões de modelos, permitindo que os rótulo e categorize por função ou status. Por exemplo, o senhor poderia aplicar um 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, o senhor poderia tag as versões em validação pré-implantação com validation_status:pending
e as liberadas para implantação com validation_status:approved
.
Permissões necessárias: proprietário ou privilégio APPLY_TAG
no modelo registrado, além de privilégios USE SCHEMA
e USE CATALOG
no esquema e 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 cliente MLflow, veja 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")
As tags do modelo registrado e da versão do modelo devem atender às restrições de toda a plataforma.
Para obter mais detalhes sobre as APIs do cliente de tag, 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 modelos, o senhor também tem a opção de usar comentários gerados por IA. Consulte Adicionar comentários gerados por IA aos objetos do Unity Catalog.
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 pela IA ou inserir seus próprios comentários. O senhor pode editar os comentários gerados pela IA conforme 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 em Unity Catalog, siga estes passos:
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>"
)
Lista e modelos de pesquisa
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>'")]
Observação
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 download de arquivos de modelo usando mlflow.artifacts.download_artifacts
, como segue:
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)
Promover um modelo em todos os ambientes
Databricks recomenda que o senhor implante o site ML pipelines 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.
Entretanto, em alguns casos, pode ser muito caro treinar novamente os modelos em vários 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, o senhor 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, o senhor poderá realizar qualquer validação necessária antes da implementação. Em seguida, o senhor 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. O senhor não precisa configurar nenhuma outra regra ou política para controlar a promoção e a implementação do modelo.
O senhor 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
"Este exemplo ilustra como usar Modelos no Unity Catalog para criar uma aplicação de machine learning.
Migrar workflows e modelos para o Unity Catalog
A Databricks recomenda o uso de modelos no Unity Catalog para melhorar a governança, facilitar o compartilhamento entre workspace e ambientes e fluxo de trabalho de MLOps mais flexível. A tabela compara os recursos do Workspace Model Registry e do Unity Catalog.
Capacidade |
Workspace Model Registry (legado) |
Modelos no Unity Catalog (recomendado) |
---|---|---|
Versões de modelo de referência por aliases nomeados |
Estágios Model Registry : mova as versões do modelo para um dos quatro estágios fixos para referenciá-las nesse estágio. Não é possível renomear ou adicionar estágios. |
Aliases Model Registry : crie até 10 referências nomeadas personalizadas e reatribuíveis para versões de modelo para cada modelo registrado. |
Crie ambientes com acesso controlado para modelos |
Estágios Model Registry : 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 MLOps, utilizando namespaces de três níveis e permissões do Unity Catalog para expressar governança. |
Promover modelos em todos os ambientes (modelo implantado) |
Use a |
Use a |
Acesse e compartilhe modelos no workspace |
Exporte e importe modelos manualmente no workspace ou configure conexões com registros de modelos remotos usando pessoal access token e workspace Secret Scope. |
Acesso imediato a modelos no workspace na mesma account. Nenhuma configuração necessária. |
Configurar permissões |
Defina permissões no nível do workspace . |
Defina permissões no nível da account , o que aplica governança consistente em todo workspace. |
Acessar modelos no markplace do Databricks |
Indisponível. |
Carregue modelos do marketplace Databricks em seu metastore do Unity Catalog e acesse-os no workspace. |
Os artigos vinculados abaixo descrevem como migrar fluxo de trabalho (treinamento de modelo e Job de inferência de lotes) e modelos do Workspace Model Registry 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. Para obter detalhes, consulte Promover um modelo entre ambientes.
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.
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 do Unity Catalog, use os registros de auditoria.
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.