Gerencie o ciclo de vida do modelo no Unity Catalog
Importante
- Este artigo documenta Modelos em Unity Catalog, que a Databricks recomenda para governar e implantar modelos. Se seu espaço de trabalho não estiver habilitado para o Unity Catalog, a funcionalidade nesta página não estará disponível. Em vez disso, consulte Gerenciar o ciclo de vida do modelo usando o Registro de Modelo de Espaço de Trabalho (legado). Para obter orientação sobre como atualizar do Registro de Modelo de Espaço de Trabalho para o Unity Catalog, consulte Migrar fluxos de trabalho e modelos para o Unity Catalog.
- Os modelos no Unity Catalog não estão disponíveis nas regiões do Azure Government.
Este artigo descreve como usar modelos no Unity Catalog como parte de seu fluxo de trabalho de aprendizado de máquina para gerenciar o ciclo de vida completo dos modelos de ML. O 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 em espaços de trabalho. Modelos em Unity Catalog são compatíveis com o cliente Python MLflow de código aberto.
Para obter uma visão geral dos conceitos do Registro de Modelo, consulte MLflow for gen AI agent e ML model lifecycle.
Requisitos
O Unity Catalog deve estar habilitado em seu espaço de trabalho. Veja Get começou a usar o Unity Catalog para criar um Unity Catalog Metastore, ativá-lo num espaço de trabalho e criar um catalog. Se o Unity Catalog não estiver habilitado, utilize o registo de modelo do espaço de trabalho .
Você deve usar um recurso de computação que tenha acesso ao Unity Catalog. Para cargas de trabalho de ML, isso significa que o modo de acesso para a computação deve ser Usuário único. Para obter mais informações, consulte Modos de acesso. Com o Databricks Runtime 15.4 LTS ML e superior, você também pode usar modo de acesso de grupo dedicado.
Para criar novos modelos registrados, você precisa dos seguintes privilégios:
-
USE SCHEMA
eUSE CATALOG
privilégios sobre o schema e o catalogque o envolve. -
CREATE_MODEL
privilégio no schema. Para grant 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>
-
Nota
Seu espaço de trabalho deve ser anexado a um metastore do Unity Catalog que ofereça suporte à herança de privilégios. Isso vale para todos os metastores criados 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 Unity Catalog.
Instalar o cliente Python MLflow
O suporte para modelos no Unity Catalog está incluído no Databricks Runtime 13.2 ML e superior (Databricks Runtime 15.0 ML e superior no Azure China).
Você também pode usar modelos no Unity Catalog no Databricks Runtime 11.3 LTS e superior, instalando a versão mais recente do cliente Python MLflow em seu notebook, usando o código a seguir.
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
Configurar o cliente MLflow para acessar modelos no Unity Catalog
Se o
Para outros espaços de trabalho, o cliente Python MLflow cria modelos no registro do modelo de espaço de trabalho Databricks. Para atualizar modelos no Unity Catalog, utilize o seguinte código nos seus notebooks para configurar o cliente MLflow:
import mlflow
mlflow.set_registry_uri("databricks-uc")
Para um pequeno número de espaços de trabalho where o catalog padrão foi configurado para um catalog no Unity Catalog antes de janeiro de 2024 e o registro do modelo de espaço de trabalho foi usado antes de janeiro de 2024, você deve set manualmente o catalog padrão para o Unity Catalog usando o comando mostrado acima.
Treine e registre modelos compatíveis com Unity Catalog
Permissões necessárias: Para criar um novo modelo registado, precisa dos privilégios de CREATE_MODEL
e USE SCHEMA
na entidade schema, e do privilégio de USE CATALOG
na entidade catalog. Para criar novas versões de modelo sob um modelo registrado, você deve ser o proprietário do modelo registrado e ter privilégios de USE SCHEMA
e USE CATALOG
no schema e catalog que contém o modelo.
As versões do modelo de ML na UC devem ter uma assinatura de modelo. Se você ainda não estiver registrando modelos MLflow com assinaturas em suas cargas de trabalho de treinamento de modelo, poderá:
- 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 MLflow.
- Com o MLflow 2.5.0 e superior, você pode especificar um exemplo de entrada em sua
mlflow.<flavor>.log_model
chamada 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 secção criam e acedem a modelos no ml_team
schema sob o prod
catalog.
Os exemplos de treinamento de modelo nesta seção criam uma nova versão do modelo e a registram no prod
catalog. Usar o prod
catalog não significa necessariamente que a versão do modelo atenda ao tráfego de produção. A versão do modelo, os elementos cataloge schema, e o modelo registrado refletem o seu ambiente (prod
) e as regras de governança associadas (por exemplo, os privilégios podem ser set para que apenas os administradores possam excluir do prod
catalog), mas não o seu estado de implementação. Para gerenciar o status da implantação, use aliases de modelo.
Registrar um modelo no Unity Catalog usando o registro automático
Para registrar um modelo, use o método MLflow Client API register_model()
. Ver 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")
Registar um modelo com a API
mlflow.register_model(
"runs:/<run_uuid>/model", "prod.ml_team.iris_model"
)
Registrar um modelo no Unity Catalog com assinatura inferida automaticamente
O suporte para assinaturas inferidas automaticamente está disponível no MLflow versão 2.5.0 e superior, e é suportado no Databricks Runtime 11.3 LTS ML e superior. Para usar assinaturas inferidas automaticamente, use o código a seguir para instalar o cliente Python MLflow mais recente em seu bloco de anotações:
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
O código a seguir mostra um exemplo de uma assinatura automaticamente inferida.
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 interface do usuário
Siga estes passos:
Na página de execução do experimento, clique em Registrar modelo no canto superior direito da interface do usuário.
Na caixa de diálogo, selectUnity Cataloge select um modelo de destino na lista suspensa list.
Clique em Registar.
Registrar um modelo pode levar tempo. Para monitorar o progresso, navegue até o modelo de destino no Unity Catalog e refresh periodicamente.
Implantar modelos usando aliases
Os aliases de modelo permitem atribuir uma referência mutável e nomeada 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 "Campeão" 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. Em seguida, você pode update o modelo de produção reatribuindo o alias "Campeão" a uma versão diferente do modelo.
Set e excluir aliases em modelos
Permissões necessárias: Proprietário do modelo registado, além de privilégios de USE SCHEMA
e USE CATALOG
no schema e catalog que contêm o modelo.
Você pode criar pseudónimos set, updatee remove para modelos no Unity Catalog utilizando 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 específica do modelo na página de detalhes da versão do modelo.
Para set, updatee excluir aliases usando a API do cliente MLflow, 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 MLflow.
Carregar versão do modelo por alias para cargas de trabalho de inferência
Permissões necessárias: privilégio EXECUTE
no modelo registado, além dos privilégios USE SCHEMA
e USE CATALOG
nos schema e catalog que contêm o modelo.
As cargas de trabalho de inferência em lote podem fazer referência a uma versão do modelo por alias. O trecho abaixo carrega e aplica a versão do modelo "Campeão" para inferência em lote. 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 em lote a pegará automaticamente em sua próxima execução. Isso permite que você desacople implantações de modelo de suas cargas de trabalho de inferência em lote.
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)
Os pontos de extremidade de serviço de modelo também podem fazer referência a uma versão do modelo por alias. Você pode escrever fluxos de trabalho de implantação para get uma versão do modelo por alias e update um modelo que serve o ponto de extremidade para servir essa versão, usando o modelo que serve a API REST. 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(...)
Carregar versão do modelo por número de versão para cargas de trabalho de inferência
Você também pode carregar versões do 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)
Partilhar modelos entre áreas de trabalho
Compartilhar modelos com usuários na mesma região
Contanto que você tenha os privilégios apropriados, você pode acessar modelos no Unity Catalog a partir de qualquer espaço de trabalho anexado ao metastore que contém o modelo. Por exemplo, você pode acessar modelos do prod
catalog em um espaço de trabalho de desenvolvimento 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 grant a propriedade do modelo a um grupo que contenha você mesmo e os usuários com quem você gostaria de colaborar. Os colaboradores também devem ter os privilégios USE CATALOG
e USE SCHEMA
no catalog e schema que contêm o modelo. Consulte Unity Catalog privilégios e objetos protegíveis para obter detalhes.
Compartilhar modelos com usuários em outra região ou conta
Para compartilhar modelos com usuários em outras regiões ou contas, use o fluxo de compartilhamento Delta Sharing Databricks-to-Databricks. Consulte Adicionar modelos a uma partilha (para providers) e Get acesso no modelo Databricks-to-Databricks (para recipients). Como destinatário, depois de criar um catalog a partir de um compartilhamento, você acessa modelos nesse catalog compartilhado da mesma forma que qualquer outro modelo no Unity Catalog.
Acompanhe a linhagem de dados de um modelo no Unity Catalog
Nota
O suporte para table para linhagem de modelo no Unity Catalog está disponível no MLflow 2.11.0 e superior.
Quando treinas um modelo em um table em Unity Catalog, podes rastrear a proveniência do modelo para o(s) conjunto(s) de dados de origem em que foi treinado e avaliado. Para fazer isso, use mlflow.log_input. Isso guarda as informações de entrada table juntamente com a execução do MLflow que gerou o modelo. A linhagem de dados também é capturada automaticamente para modelos registrados usando APIs de armazenamento de recursos. Consulte Governança e linhagem de recursos.
Quando regista o modelo no Unity Catalog, as informações de linhagem são salvas automaticamente e ficam visíveis no separador Linhagem da interface de utilizador da versão do modelo Catalog no Explorer.
O código seguinte 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 registados são um subtipo do objeto FUNCTION
protegível. Para grant acesso a um modelo registrado no Unity Catalog, use GRANT ON FUNCTION
. Para obter detalhes, consulte Unity Catalog privilégios e objetos protegíveis. Para obter práticas recomendadas sobre como organizar modelos em catalogs e esquemas, consulte Organizar os dados.
Você pode configurar permissões de modelo programaticamente usando a API REST do Grants. Ao configurar permissões de modelo, setsecurable_type
para "FUNCTION"
em solicitações de API REST. Por exemplo, use PATCH /api/2.1/unity-catalog/permissions/function/{full_name}
até update para permissões de modelos registados.
Exibir modelos na interface do usuário
Permissões necessárias: Para visualizar um modelo registado e as suas versões de modelo na interface do utilizador, precisa de privilégio EXECUTE
no modelo registado, além de privilégios USE SCHEMA
e USE CATALOG
nos schema e catalog que contêm o modelo
Você pode visualizar e gerenciar modelos registrados e versões de modelos no Unity Catalog usando o Catalog Explorer.
Renomear um modelo
Permissões necessárias: Proprietário do modelo registado, privilégio CREATE_MODEL
no schema que contém o modelo registado, e privilégios USE SCHEMA
e USE CATALOG
nos schema e catalog que contêm o modelo.
Para mudar o nome de um modelo registado, utilize o método rename_registered_model()
da API do Cliente do MLflow:
client=MlflowClient()
client.rename_registered_model("<full-model-name>", "<new-model-name>")
Copiar uma versão do modelo
Você pode copiar uma versão de um modelo para outro modelo no Unity Catalog.
Copiar uma versão do modelo usando a interface do usuário
Siga estes passos:
Na página versão do modelo, clique em Copiar esta versão no canto superior direito da interface do usuário.
Escolha Select um modelo de destino na lista list suspensa e clique em Copiar.
Copiar um modelo pode levar tempo. Para monitorar o progresso, navegue até o modelo de destino no 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>",
)
Eliminar um modelo ou versão de modelo
Permissões necessárias: Proprietário do modelo registado, além de privilégios de USE SCHEMA
e USE CATALOG
no schema e catalog que contêm o modelo.
Você pode excluir um modelo registrado ou uma versão de modelo dentro de um modelo registrado usando o da interface do usuário do
Aviso
Não é possível desfazer essa 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.
Eliminar um modelo ou versão de modelo com a IU
Para excluir um modelo ou uma versão do modelo no Unity Catalog, siga estas etapas.
Na página do modelo ou na página da versão do modelo, clique no menu kebab no canto superior direito.
Na página do modelo:
Na página da versão do modelo:
Select Excluir.
É apresentado um diálogo de confirmação. Clique em Excluir para confirmar.
Eliminar um modelo ou versão de modelo com a API
Para eliminar uma versão de modelo, utilize o método delete_model_version()
da API do Cliente do 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 eliminar um modelo, utilize o método delete_registered_model()
da API do Cliente do MLflow:
client = MlflowClient()
client.delete_registered_model(name="<model-name>")
Usar tags em modelos
As tags são pares chave-valor que você associa a modelos registrados e versões de modelos, permitindo que você os rotule e categorize por função ou status. Por exemplo, você pode aplicar uma tag com chave "task"
e valor "question-answering"
(exibido na interface do usuário como task:question-answering
) a modelos registrados destinados a tarefas de resposta a perguntas. No nível da versão do modelo, você pode marcar as versões que estão passando pela 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 ter privilégio APPLY_TAG
no modelo registado, além dos privilégios USE SCHEMA
e USE CATALOG
no schema e catalog que contêm o modelo.
Consulte Adicionar e update tags usando o Catalog Explorer sobre como set e excluir tags usando a interface do usuário.
Para set e excluir tags usando a API do cliente MLflow, 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 APIs de cliente de tag, consulte a documentação da API MLflow.
Adicionar uma descrição (comentários) a um modelo ou versão do modelo
Permissões necessárias: Proprietário do modelo registado, além de privilégios de USE SCHEMA
e USE CATALOG
no schema e catalog que contêm o modelo.
Você pode incluir uma descrição de texto para qualquer modelo ou versão de modelo no Unity Catalog. Por exemplo, você pode fornecer uma visão geral do problema ou informações sobre a metodologia e o algoritmo usados.
Para modelos, você também tem a opção de usar comentários gerados por IA. Consulte Adicionar comentários gerados por IA a objetos do Unity Catalog.
Adicionar uma descrição a um modelo usando a interface do usuário
Para adicionar uma descrição para um modelo, você pode usar comentários gerados por IA ou inserir seus próprios comentários. Você pode editar comentários gerados por IA conforme necessário.
- Para adicionar comentários gerados automaticamente, clique no botão AI generate.
- Para adicionar seus próprios comentários, clique em Adicionar. Introduza os seus comentários na caixa de diálogo e clique em Guardar.
Adicionar uma descrição a uma versão do modelo usando a interface do usuário
Para adicionar uma descrição a uma versão do modelo no Unity Catalog, siga estas etapas:
Na página da versão do modelo, clique no ícone de lápis em Descrição.
Introduza os seus comentários na caixa de diálogo e clique em Guardar.
Adicionar uma descrição a um modelo ou versão do modelo usando a API
Para update uma descrição de modelo registrado, use o método MLflow Client API update_registered_model()
:
client = MlflowClient()
client.update_registered_model(
name="<model-name>",
description="<description>"
)
Para update fazer uma descrição da versão do modelo, use o método MLflow Client API update_model_version()
:
client = MlflowClient()
client.update_model_version(
name="<model-name>",
version=<model-version>,
description="<description>"
)
List e modelos de pesquisa
Para
client=MlflowClient()
client.search_registered_models()
Para procurar um nome de modelo específico e get informações acerca das 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>'")]
Nota
Nem todos os campos e operadores da API de pesquisa são suportados para modelos no Unity Catalog. Para obter mais detalhes, veja Limitações.
Download de arquivos de modelo (caso de uso avançado)
Na maioria dos casos, para carregar modelos, você deve usar APIs 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 baixar arquivos de modelo para depurar o comportamento do modelo ou problemas de carregamento do modelo. Você pode baixar arquivos de modelo usando o , da mlflow.artifacts.download_artifacts
seguinte maneira:
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
O Databricks recomenda que você implante pipelines de ML como código. Isso elimina a necessidade de promover modelos em todos os ambientes, já que todos os modelos de produção podem ser produzidos por meio de fluxos de trabalho de treinamento automatizados em um ambiente de produção.
No entanto, em alguns casos, pode ser muito caro treinar novamente os modelos entre ambientes. Em vez disso, você pode copiar versões de modelos entre modelos registrados no Unity Catalog para promovê-los em todos os ambientes.
Você precisa dos seguintes privilégios para executar o código de exemplo abaixo:
-
USE CATALOG
sobre ostaging
eprod
catalogs. -
USE SCHEMA
sobre osstaging.ml_team
eprod.ml_team
esquemas. -
EXECUTE
emstaging.ml_team.fraud_detection
.
Além disso, você deve ser o proprietário do modelo prod.ml_team.fraud_detection
registrado.
O trecho de código a seguir usa a API do copy_model_version
cliente MLflow, disponível no MLflow versão 2.8.0 e superior.
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á executar qualquer validação 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, apenas os usuários que podem ler a staging.ml_team.fraud_detection
partir do modelo registrado e gravar no prod.ml_team.fraud_detection
modelo registrado podem promover modelos de preparo para o ambiente de produção. Os mesmos usuários também podem usar aliases para gerenciar quais versões de modelo são implantadas no ambiente de produção. Não é necessário configurar outras regras ou políticas 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 é imposto conforme configurado em cada ambiente.
Exemplo de bloco de notas
Este bloco de anotações de exemplo ilustra como usar Models in Unity Catalog APIs para gerenciar modelos no Unity Catalog, incluindo o registro de modelos e versões de modelos, a adição de descrições, o carregamento e a implantação de modelos, o uso de aliases de modelo e a exclusão de modelos e versões de modelos.
Modelos no caderno de exemplo Unity Catalog
Migrar fluxos de trabalho 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 espaços de trabalho e ambientes e fluxos de trabalho MLOps mais flexíveis. O table compara as capacidades do Registro de Modelos do Workspace e do Unity Catalog.
Funcionalidade | Registro de modelo de espaço de trabalho (legado) | Modelos em Unity Catalog (recomendado) |
---|---|---|
Versões de modelo de referência por aliases nomeados | Estágios do Registro do Modelo: mova as versões do modelo para um dos quatro estágios fixos para fazer referência a eles por esse estágio. Não é possível renomear ou adicionar estágios. | Aliases do Registro do Modelo: crie até 10 referências nomeadas personalizadas e reatribuíveis às versões do modelo para cada modelo registrado. |
Crie ambientes de acesso controlado para modelos | Estágios do Registro do Modelo: 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 (Staging e Production ). |
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 a governança. |
Promover modelos entre ambientes (implantar modelo) | Use a API do cliente MLflow para mover uma versão do transition_model_version_stage() modelo para um estágio diferente, potencialmente quebrando fluxos de trabalho que fazem referência ao estágio anterior. |
Use a API do copy_model_version() cliente MLflow para copiar uma versão do modelo de um modelo registrado para outro. |
Acessar e compartilhar modelos entre espaços de trabalho | Exporte e importe manualmente modelos entre diferentes espaços de trabalho ou configure o connections para registos de modelos remotos usando tokens de acesso pessoal e áreas secretas do espaço de trabalho. | Acesso imediato a modelos em espaços de trabalho na mesma conta. Nenhuma configuração necessária. |
Configurar permissões | Set permissões no nível do espaço de trabalho. | Set permissões ao nível da conta, que aplicam governação consistente entre espaços de trabalho. |
Acessar modelos no mercado Databricks | Indisponível. | Carregue modelos do mercado Databricks em sua metastore Unity Catalog e acesse-os em espaços de trabalho. |
Os artigos vinculados abaixo descrevem como migrar fluxos de trabalho (treinamento de modelos e trabalhos de inferência em lote) e modelos do Registro de Modelo de Espaço de Trabalho para o Unity Catalog.
- Atualize fluxos de trabalho de ML para modelos de destino no Unity Catalog
- Atualize os modelos para o Unity Catalog
Limitações
- Os estágios não são suportados para modelos no Unity Catalog. O 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 entre ambientes para obter detalhes.
- Webhooks não são suportados para modelos no Unity Catalog. Consulte as alternativas sugeridas no guia de atualização.
- Alguns campos e operadores de API de pesquisa não são suportados para modelos no Unity Catalog. Isso pode ser atenuado chamando as APIs de pesquisa usando filtros suportados e verificando os resultados. Seguem-se alguns exemplos:
- O
order_by
parâmetro não é suportado nas 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 da igualdade exata (por exemplo,
LIKE
,ILIKE
,!=
) não são suportados parasearch_model_versions
ousearch_registered_models
. - A pesquisa de modelos registados pelo nome (por exemplo,
MlflowClient().search_registered_models(filter_string="name='main.default.mymodel'")
não é suportada. Para buscar um determinado modelo registrado pelo nome, use get_registered_model.
- O
- Notificações por e-mail e discussões de comentários em modelos registados e versões de modelos não são suportadas no Unity Catalog.
- O log de atividades não é suportado para modelos no Unity Catalog. Para monitorizar a atividade em modelos no Unity Catalog, use logs de auditoria.
-
search_registered_models
pode retornar resultados obsoletos para modelos compartilhados por meio do Delta Sharing. Para garantir os resultados mais recentes, use a CLI do Databricks ou a SDK dopara os modelos em um .