Gerenciar o ciclo de vida do modelo no Catálogo do Unity
Importante
- Este artigo documenta modelos no Catálogo do Unity, o que o Databricks recomenda para controlar e implantar modelos. Se o workspace não estiver habilitado para o Catálogo do Unity, a funcionalidade nesta página não estará disponível. Em vez disso, veja Gerenciar o ciclo de vida do modelo usando o Workspace Model Registry (legado). Para obter as diretrizes sobre como atualizar do Registro de Modelos do Espaço de Trabalho para o Catálogo do Unity, consulte Migrar fluxos de trabalho e modelos para o Catálogo do Unity.
- Os modelos no Catálogo do Unity não estão disponíveis em regiões do Azure Governamental.
Este artigo descreve como usar Modelos no Catálogo do Unity como parte do 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 Registro de Modelo do MLflow no Catálogo do Unity. Os modelos no Catálogo do Unity estendem os benefícios do Catálogo do Unity aos modelos de ML, incluindo o controle de acesso centralizado, a auditoria, a linhagem e a descoberta de modelos entre os espaços de trabalho. Os Modelos no Catálogo do Unity são compatíveis com o cliente Python do MLflow de código aberto.
Para obter uma visão geral dos conceitos do Registro de Modelo, consulte Gerenciamento do ciclo de vida de ML usando o MLflow.
Requisitos
O Catálogo do Unity deve estar habilitado no seu espaço de trabalho. Consulte Comece a usar o Catálogo do Unity para criar um Metastore do Catálogo do Unity, habilitá-lo em um espaço de trabalho e criar um catálogo. Se o Catálogo do Unity não estiver habilitado, use o registro de modelo do espaço de trabalho.
Você deve usar um recurso de computação que tenha acesso ao Catálogo do Unity. 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, confira Modos de acesso.
Para criar novos modelos registrados, você precisa dos seguintes privilégios:
- Privilégios
USE SCHEMA
eUSE CATALOG
no esquema e seu catálogo anexo. - privilégios
CREATE_MODEL
no esquema. Para conceder esse privilégio, use a interface do usuário do Explorador de Catálogos ou o seguinte comando SQL GRANT:
GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
- Privilégios
Observação
Seu espaço de trabalho deve ser anexado a um metastore do Catálogo do Unity com suporte para a herança de privilégios. Isso se aplica a todos os metastores criados após 25 de agosto de 2022. Se estiver executando em um metastore mais antigo, siga os documentos para fazer a atualização.
Instalar e configurar o cliente MLflow para o Catálogo do Unity
Esta seção inclui instruções para instalar e configurar o cliente MLflow para o Catálogo do Unity.
Instalar o cliente Python do MLflow
Você também pode usar os modelos no Catálogo do Unity no Databricks Runtime 11.3 LTS e superior instalando a versão mais recente do cliente Python do MLflow no seu notebook, usando o código a seguir.
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
Configurar o cliente do MLflow para acessar modelos no Catálogo do Unity
Se o catálogo padrão do seu workspace estiver no Catálogo do Unity (em vez de hive_metastore
) e você estiver executando um cluster usando o Databricks Runtime 13.3 LTS ou superior (Databricks Runtime 15.0 ou superior nas regiões do Azure China), os modelos serão automaticamente criados e carregados no catálogo padrão, sem necessidade de configuração. Você não precisa executar esta etapa.
Para outros espaços de trabalho, o cliente Python do MLflow cria modelos no registro de modelos do espaço de trabalho do Databricks. Para atualizar para modelos no Catálogo do Unity, use o código a seguir em seu notebook para configurar o cliente do MLflow:
import mlflow
mlflow.set_registry_uri("databricks-uc")
Para um pequeno número de workspaces em que o catálogo padrão foi configurado para um catálogo no Catálogo do Unity antes de janeiro de 2024 e o registro do modelo de workspace foi usado antes de janeiro de 2024, defina manualmente o catálogo padrão como Catálogo do Unity usando o comando mostrado acima.
Treinar e registrar modelos compatíveis com o Catálogo do Unity
Permissões necessárias: Para criar um novo modelo registrado, você precisa dos privilégios CREATE_MODEL
e USE SCHEMA
no esquema anexo e do privilégio USE CATALOG
no catálogo anexo. Para criar novas versões do modelo em um modelo registrado, você deve ser o proprietário do modelo registrado e ter os privilégios USE SCHEMA
e USE CATALOG
no esquema e no catálogo que contêm o modelo.
As versões do modelo ML no UC devem ter um modelo de assinatura. Se ainda não estiver registrando os modelos do MLflow com assinaturas em suas cargas de trabalho de treinamento de modelos, você poderá:
- Use o Databricks Autologging, que registra automaticamente os modelos com assinaturas para muitas estruturas populares de ML. Confira as estruturas com suporte na documentação do MLflow.
- Com o MLflow 2.5.0 e superior, você pode especificar um exemplo de entrada na sua
mlflow.<flavor>.log_model
chamada e a assinatura do modelo é inferida automaticamente. 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 ml_team
esquema do prod
catálogo.
Os exemplos de treinamento de modelo nesta seção criam uma nova versão de modelo e a registram no prod
catálogo. Usar o prod
catálogo não significa necessariamente que a versão do modelo atenda ao tráfego de produção. O catálogo, 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 apenas os administradores possam excluir do prod
catálogo), mas não o status da sua implantação. Para gerenciar o status da implantação, use aliases de modelo.
Registrar um modelo no Catálogo do Unity usando o log automático
Para registrar uma versão do modelo, use o método register_model()
da API do Cliente MLflow. Veja 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")
Registrar um modelo usando a API
mlflow.register_model(
"runs:/<run_uuid>/model", "prod.ml_team.iris_model"
)
Registrar um modelo no Catálogo do Unity com uma assinatura especificada manualmente
O suporte para assinaturas inferidas automaticamente está disponível no MLflow versão 2.5.0 e superior e tem suporte no Databricks Runtime 11.3 LTS ML e superior. Para usar as assinaturas inferidas automaticamente, use o seguinte código para instalar o cliente mais recente do Python do MLflow no 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",
)
Registre um modelo usando a interface de usuário
Siga estas etapas:
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, selecione Catálogo do Unity e selecione um modelo de destino na lista suspensa.
Clique em Registrar.
O registro de um modelo pode levar tempo. Para monitorar o progresso, navegue até o modelo de destino no Catálogo do Unity e atualize periodicamente.
Implantar modelos usando aliases
Os aliases do modelo permitem que você atribua uma referência mutável e nomeada a uma versão específica em 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" na versão do modelo atualmente em produção e direcionar esse alias nas cargas de trabalho que usam o modelo de produção. Em seguida, você pode atualizar o modelo de produção reatribuindo o alias "Champion" para uma versão de modelo diferente.
Definir e excluir aliases nos modelos
Permissões necessárias: Proprietário do modelo registrado, além dos 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 dos modelos no Catálogo do Unity usando o Explorador do Catálogo. Você pode gerenciar aliases em um modelo registrado na página de detalhes do modelo e configurar os aliases em 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 de Cliente do 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 do MLflow.
Versão do modelo de carga por alias para cargas de trabalho de inferência
Permissões necessárias: EXECUTE
privilégios no modelo registrado, além dos privilégios USE SCHEMA
e USE CATALOG
privilégios no esquema e no catálogo que contêm o modelo.
Cargas de trabalho de inferência em lote que fazem referência a uma versão do modelo por alias. O trecho abaixo carrega e aplica a versão do modelo “Champion” 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 desacoplar as implantações de modelos das 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 de modelo por alias. Você pode escrever fluxos de trabalho de implantação para obter uma versão do modelo por alias e atualizar um ponto de extremidade de serviço de modelo para servir essa versão, usando a API REST de serviço de modelo. 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 as versões de modelos por número de versão nas cargas de trabalho de inferência
Você também pode carregar versões de modelos 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)
Compartilhar modelos entre workspaces
Compartilhar modelos com usuários na mesma região
Desde que você tenha os privilégios apropriados, poderá acessar modelos no Catálogo do Unity de qualquer workspace anexado ao metastore que contém o modelo. Por exemplo, você pode acessar os modelos do catálogo prod
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, é necessário conceder a propriedade do modelo a um grupo que contenha você e os usuários com os quais 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. Confira Privilégios e objetos protegíveis do Catálogo do Unity 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 Databricks para Databricks do Delta Sharing. Consulte Adicionar modelos a um compartilhamento (para provedores) e Obter acesso no modelo Databricks para Databricks (para destinatários). Como destinatário, depois de criar um catálogo a partir de um compartilhamento, você acessa modelos nesse catálogo compartilhado da mesma forma que qualquer outro modelo no Catálogo do Unity.
Acompanhar a linhagem de dados de um modelo no Catálogo do Unity
Observação
O suporte para linhagem de tabela para modelo no Catálogo do Unity está disponível no MLflow 2.11.0 e superior.
Ao treinar um modelo em uma tabela no Catálogo do Unity, você pode acompanhar a linhagem do modelo até os conjuntos de dados upstream em que ele foi treinado e avaliado. Para fazer isso, use mlflow.log_input. 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 modelos registrados usando APIs do repositório de recursos. Consulte Governança e linhagem de recursos.
Ao registrar o modelo no Catálogo do Unity, as informações de linhagem são salvas automaticamente e ficam visíveis na guia Linhagem da interface do usuário da versão do modelo no Explorador do Catálogo.
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 a modelos
No Catálogo do Unity, os modelos registrados são um subtipo do objeto protegível FUNCTION
. Para permitir acesso a um modelo registrado no Catálogo do Unity, use GRANT ON FUNCTION
. Para obter detalhes, consulte Privilégios e objetos protegíveis do Catálogo do Unity. Para ver as melhores práticas sobre como organizar modelos nos catálogos e esquemas, consulte Organizar seus dados.
Você pode configurar as permissões de modelo de forma programática usando a API REST de Concessões. Quando você configura permissões de 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 de modelo registradas.
Exibir modelos na interface do usuário
Permissões necessárias: para exibir um modelo registrado e suas versões de modelo na interface do usuário, é necessário ter o 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
Você pode exibir e gerenciar os modelos registrados e as versões de modelos no Catálogo do Unity usando o Gerenciador de Catálogos.
Renomear um modelo
Permissões necessárias: Proprietário do modelo registrado, privilégio CREATE_MODEL
no esquema que contém o modelo registrado e privilégios USE SCHEMA
e USE CATALOG
no esquema e no catálogo que contêm o modelo.
Para renomear um modelo registrado, use o método rename_registered_model()
da API do Cliente 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 modelo de um modelo para outro no Catálogo do Unity.
Copiar uma versão do modelo usando a interface do usuário
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.
A cópia de um modelo pode levar tempo. Para monitorar o progresso, navegue até o modelo de destino no Catálogo do Unity e atualize 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 uma versão do modelo
Permissões necessárias: Proprietário do modelo registrado, além dos privilégios USE SCHEMA
e USE CATALOG
no esquema e no catálogo que contêm o modelo.
Você pode excluir um modelo registrado ou uma versão do modelo dentro de um modelo registrado usando a interface do usuário do Explorador do Catálogo ou a API.
Aviso
Você não pode desfazer essa ação. Quando você exclui um modelo, todos os artefatos de modelo armazenados pelo Catálogo do Unity e todos os metadados associados ao modelo registrado são excluídos.
Excluir um modelo ou uma versão do modelo usando a interface do usuário
Para excluir um modelo ou uma versão de modelo no Catálogo do Unity, siga estas etapas.
Na página do modelo ou na página da versão do modelo, clique no meu kebab , no canto superior direito.
Na página de modelos:
Na página da versão do modelo:
Selecione Excluir.
Uma caixa de diálogo de confirmação será exibida. Clique em Excluir para confirmar.
Excluir um modelo ou uma versão do 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 delete_registered_model()
da API do Cliente MLflow:
client = MlflowClient()
client.delete_registered_model(name="<model-name>")
Usar tags em modelos
As Marcas são pares de chave-valor associados aos modelos registrados e versões de modelo, permitindo rotulá-los e categorizá-los por função ou status. Por exemplo, você pode aplicar uma marca com chave "task"
e valor "question-answering"
(exibida na interface do usuário como task:question-answering
) aos modelos registrados destinados a tarefas de resposta a perguntas. No nível de versão do modelo, você pode marcar versões que passam por validação de pré-implantação com validation_status:pending
e aquelas desmarcadas para implantação com validation_status:approved
.
Permissões necessárias: proprietário ou tem APPLY_TAG
privilégio no modelo registrado, além de USE SCHEMA
e USE CATALOG
privilégios no esquema e catálogo que contém o modelo.
Consulte Adicionar e atualizar marcas usando o Explorador de Catálogos para saber como definir e excluir marcas usando a interface do usuário.
Para definir e excluir aliases usando a API de Cliente do 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")
As marcas do modelo e de versão do modelo registrados devem atender às restrições na plataforma.
Para obter mais detalhes sobre APIs de cliente de marcas, consulte a documentação da API do MLflow.
Adicione uma descrição (comentários) a um modelo ou uma versão do modelo
Permissões necessárias: Proprietário do modelo registrado, além dos privilégios USE SCHEMA
e USE CATALOG
no esquema e no catálogo que contêm o modelo.
Você pode incluir uma descrição de texto para qualquer modelo ou versão de modelo no Catálogo do Unity. Por exemplo, você pode incluir 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. Confira Adicionar comentários gerados por IA a objetos do Catálogo do Unity.
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. Edite os comentários gerados por IA conforme necessário.
- Para adicionar comentários gerados automaticamente, clique no botão Gerar IA.
- Para adicionar seus próprios comentários, clique em Adicionar. Insira seus comentários na caixa de diálogo e clique em Salvar.
Adicionar uma descrição à nova versão do modelo
Para adicionar uma descrição a uma versão de modelo no Catálogo do Unity, 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 descrições de modelo e versão de modelo usando a API
Para atualizar uma descrição do modelo registrado, utilize o método da API do cliente do MLflow update_registered_model()
:
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 update_model_version()
da API do Cliente MLflow:
client = MlflowClient()
client.update_model_version(
name="<model-name>",
version=<model-version>,
description="<description>"
)
Listar e pesquisar modelos
Para obter uma lista dos modelos registrados no Catálogo do Unity, use os 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 de API de pesquisa têm suporte para modelos no Catálogo do Unity. Confira Limitações para obter detalhes.
Baixar arquivos de modelo (caso de uso avançado)
Na maioria dos casos, para carregar modelos, você 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, talvez seja 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 mlflow.artifacts.download_artifacts
, da 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)
Promover um modelo entre ambientes
O Databricks recomenda que você implante pipelines de 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 de fluxos de trabalho de treinamentos automatizados em um ambiente de produção.
No entanto, em alguns casos, pode ficar muito caro treinar os modelos de novo em todos os ambientes. Em vez disso, você pode copiar versões de modelo em modelos registrados no Catálogo do Unity para promovê-las entre ambientes.
Você precisa ter os 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ê precisa ser o proprietário do modelo registrado prod.ml_team.fraud_detection
.
O trecho de código a seguir usa a copy_model_version
API do 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 de pré-implantação necessária. Em seguida, marque 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 fazer leituras no modelo registrado staging.ml_team.fraud_detection
e gravações no modelo registrado prod.ml_team.fraud_detection
podem promover os modelos de preparo para o ambiente de produção. Os mesmos usuários também podem usar aliases para gerenciar as versões de modelo que são implantadas no ambiente de produção. Você não precisa configurar nenhuma outra regra ou política para controlar a promoção e a implantação do modelo.
Personalize esse fluxo para promover a versão do modelo em vários ambientes que correspondem à sua configuração, como dev
, qa
e prod
. O controle de acesso é imposto conforme configurado em cada ambiente.
Exemplo
Este exemplo ilustra como usar os Modelos no Catálogo Unity para criar um aplicativo de aprendizado de máquina.
Exemplo de modelos no Catálogo do Unity
Migrar modelos e fluxos de trabalho para o Catálogo do Unity
O Databricks recomenda usar os modelos no Catálogo do Unity para governança aprimorada, fácil compartilhamento entre os espaços de trabalho e ambientes e fluxos de trabalho MLOps mais flexíveis. A tabela compara os recursos do Registro de Modelo de Workspace e do Catálogo do Unity.
Recurso | Registro do Modelo do Workspace (herdado) | Modelos no Catálogo do Unity (recomendado) |
---|---|---|
Versões de modelo de referência por aliases nomeados | Fases do Registro de Modelo: mover versões de modelo para uma das quatro fases fixas para referenciá-las por essa fase. Não é possível renomear ou adicionar fases. | Aliases do Registro de Modelo: crie até 10 referências nomeadas personalizadas e reatribuíveis para versões de modelo para cada modelo registrado. |
Criar ambientes controlados por acesso para modelos | Estágios do Registro de Modelo: use fases em um modelo registrado para denotar o ambiente de suas versões de modelo, com controles de acesso para apenas dois dos quatro fases fixas (Staging e Production ). |
Modelos registrados: crie um modelo registrado para cada ambiente em seu fluxo de trabalho do MLOps, utilizando namespaces de três níveis e permissões do Catálogo do Unity para expressar governança. |
Promover modelos entre ambientes (modelo de implantação) | Use a API do Cliente MLflow transition_model_version_stage() para mover uma versão do modelo para uma fase diferente, potencialmente interrompendo fluxos de trabalho que fazem referência à fase anterior. |
Use a API do cliente MLflow copy_model_version() para copiar uma versão de modelo de um modelo registrado para outro. |
Acessar e compartilhar modelos entre workspaces | Exporte e importe manualmente modelos entre workspaces ou configure conexões para registros de modelo remoto usando tokens de acesso pessoal e escopos secretos do workspace. | Acesso pronto para uso a modelos em workspaces na mesma conta. Não é necessária nenhuma configuração. |
Configurar permissões | Defina permissões no nível do workspace. | Defina permissões no nível da conta, que aplica governança consistente entre workspaces. |
Acessar modelos no marketplace do Databricks | Não disponível. | Carregue modelos do marketplace do Databricks no metastore do Catálogo do Unity e acesse-os em workspaces. |
Os artigos vinculados abaixo descrevem como migrar fluxos de trabalho (treinamento de modelo e trabalhos de inferência em lote) e modelos do Registro de Modelo de Workspace para o Catálogo do Unity.
- Atualizar os fluxos de trabalho ML nos modelos de destino no Catálogo do Unity
- Atualizar os modelos no Catálogo do Unity
Limitações
- Não há suporte para estágios dos modelos no Catálogo do Unity. O Databricks recomenda usar o namespace de três níveis no Catálogo do Unity para expressar o ambiente em que um modelo está e usar os aliases para promover os modelos para implantação. Confira Promover um modelo entre ambientes para obter detalhes.
- Não há suporte para os estágios dos modelos no Catálogo do Unity. Consulte as alternativas sugeridas no guia de atualização.
- Não há suporte para alguns campos e operadores de API de pesquisa dos modelos no Catálogo do Unity. Isso pode ser mitigado chamando as APIs de pesquisa usando filtros com suporte e verificando os resultados. Estes são alguns exemplos:
- Não
order_by
há suporte para o parâmetro nas APIs de cliente search_model_versions ou search_registered_models. - Não há suporte para filtros baseados em marca (
tags.mykey = 'myvalue'
) parasearch_model_versions
ousearch_registered_models
. - Operadores diferentes da igualdade exata (por exemplo,
LIKE
,ILIKE
,!=
) não têm suporte parasearch_model_versions
ousearch_registered_models
. - Não há suporte para a pesquisa de modelos registrados por nome (por exemplo,
MlflowClient().search_registered_models(filter_string="name='main.default.mymodel'")
não há suporte. Para buscar um modelo registrado específico por nome, use get_registered_model.
- Não
- Notificações por email e tópicos de discussão de comentários dos modelos registrados e versões de modelos não são suportados no Catálogo do Unity.
- Não há suporte para o log de atividades dos modelos no Catálogo do Unity. Para acompanhar a atividade nos modelos no Catálogo do Unity use os logs de auditoria.
search_registered_models
pode retornar resultados obsoletos para modelos compartilhados por meio do Compartilhamento Delta. Para garantir os resultados mais recentes, use a CLI ou o SDK do Databricks para listar os modelos em um esquema.