Gerencie o ciclo de vida do modelo no Unity Catalog

Importante

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

  1. 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.

  2. 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.

  3. Para criar novos modelos registrados, você precisa dos seguintes privilégios:

    • USE SCHEMA e privilégios USE 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:

  1. Na página de execução do experimento, clique em registrar model no canto superior direito da UI.

  2. Na caixa de diálogo, selecione Unity Catalog e selecione um modelo de destino na lista suspensa.

    caixa de diálogo da versão do modelo de registro com o menu dropdown
  3. Clique em Registrar.

    Diálogo de registro da versão do modelo com botão

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)

Compartilhe modelos entre workspaces

Compartilhe modelos com usuários da mesma região

Desde que tenha os privilégios adequados, o senhor pode acessar os modelos em Unity Catalog de qualquer workspace que esteja anexado ao metastore que contém o modelo. Por exemplo, o senhor pode acessar modelos do catálogo prod em um dev workspace, para facilitar a comparação de modelos recém-desenvolvidos com a linha de base de produção.

Para colaborar com outros usuários (compartilhar privilégios de gravação) em um modelo registrado que você criou, é 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 USE SCHEMA privilégios USE CATALOG e no catálogo e no esquema que contém o modelo. Para obter detalhes, consulte Privilégios e objetos protegíveis do Unity Catalog.

Compartilhe modelos com usuários em outra região ou conta

Para compartilhar modelos com usuários de outras regiões ou contas, use o fluxo de compartilhamento Delta Sharing Databricks-to-Databricks . Consulte Adicionar modelos a um compartilhamento (para provedores) e Obter acesso no modelo Databricks-to-Databricks (para destinatários). Como destinatário, depois de criar um catálogo a partir de um compartilhamento, o senhor acessa os modelos desse catálogo compartilhado da mesma forma que qualquer outro modelo no Unity Catalog.

Rastrear a linhagem de dados de um modelo no Unity Catalog

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:

  1. Na página da versão do modelo, clique em Copiar esta versão no canto superior direito da interface do usuário.

  2. Selecione um modelo de destino na lista suspensa e clique em Copiar.

    Caixa de diálogo Copiar versão do modelo

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.

  1. Na página do modelo ou na página da versão do modelo, clique no menu de kebab Menu kebab no canto superior direito.

    Na página do modelo:

    menu de kebab de página modelo com exclusão

    Na página da versão do modelo:

    página de versão do modelo: menu de kebab com exclusão
  2. Selecione Excluir.

  3. 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.

botões de descrição do modelo uc

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:

  1. Na página da versão do modelo, clique no ícone de lápis em Descrição.

    ícone de lápis para adicionar comentários a uma versão modelo
  2. 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álogos staging e prod.

  • USE SCHEMA nos esquemas staging.ml_team e prod.ml_team.

  • EXECUTE em staging.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 de notebook

Este exemplo de Notebook ilustra como usar Models em Unity Catalog APIs para gerenciar modelos em Unity Catalog, inclusive registrar modelos e versões de modelos, adicionar descrições, carregar e implantar modelos, usar aliases de modelos e excluir modelos e versões de modelos.

Modelos em Unity Catalog Notebook de exemplo

Abra o bloco de anotações em outra guia

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 (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 governança.

Promover modelos em todos os ambientes (modelo implantado)

Use a transition_model_version_stage() API MLflow Client para mover uma versão do modelo para um estágio diferente, potencialmente interrompendo o fluxo de trabalho que faz referência ao estágio anterior.

Use a copy_model_version() API MLflow Client para copiar uma versão de modelo de um modelo registrado para outro.

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 para search_model_versions ou search_registered_models.

    • Operadores diferentes de igualdade exata (por exemplo, LIKE, ILIKE, !=) não são suportados em search_model_versions ou search_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.