Pular para o conteúdo principal

Compartilhe modelos em todo o espaço de trabalho

important

Databricks recomenda o uso de Models in Unity Catalog para compartilhar modelos entre espaços de trabalho. A abordagem deste artigo está obsoleta.

Databricks suporta o compartilhamento de modelos em vários espaços de trabalho. Por exemplo, o senhor pode desenvolver e log um modelo em um site de desenvolvimento workspace e, em seguida, acessá-lo e compará-lo com modelos em um site de produção separado workspace. Isso é útil quando várias equipes compartilham o acesso aos modelos ou quando sua organização tem vários espaços de trabalho para lidar com os diferentes estágios de desenvolvimento. Para o desenvolvimento e a implementação de modelos entreworkspace, Databricks recomenda a abordagem de código implantado, em que o código de treinamento do modelo é implantado em vários ambientes.

Em situaçõesworkspace múltiplas, o senhor pode acessar modelos em todo o espaço de trabalho Databricks usando um registro remoto de modelo. Por exemplo, o site data scientists poderia acessar o registro de modelo de produção com acesso somente de leitura para comparar seus modelos em desenvolvimento com os modelos de produção atuais. Um exemplo de configuração multiworkspace é mostrado abaixo.

Espaço de trabalho múltiplo

O acesso a um registro remoto é controlado por tokens. Cada usuário ou script que precisa de acesso cria tokens de acesso pessoal no registro remoto e copia esses tokens no gerenciador de segredos de seu site local workspace. Cada solicitação API enviada ao registro remoto workspace deve incluir os tokens de acesso; MLflow fornece um mecanismo simples para especificar os segredos a serem usados ao realizar operações de registro de modelo.

nota

Como prática recomendada de segurança ao se autenticar com ferramentas, sistemas, scripts e aplicativos automatizados, a Databricks recomenda que você use tokens OAuth.

Se o senhor usar a autenticação de tokens de acesso pessoal, a Databricks recomenda usar o acesso pessoal tokens pertencente à entidade de serviço em vez de usuários workspace. Para criar tokens o site para uma entidade de serviço, consulte gerenciar tokens para uma entidade de serviço.

Todos os métodos do cliente e do fluent API para registro de modelo são compatíveis com o espaço de trabalho remoto.

Requisitos

O uso de um registro de modelo no workspace requer o cliente MLflow Python, versão 1.11.0 ouacima.

nota

Esse fluxo de trabalho é implementado a partir da lógica no cliente MLflow. Certifique-se de que o ambiente que executa o cliente tenha acesso para fazer solicitações de rede no site Databricks workspace que contém o registro de modelo remoto. Uma restrição comum colocada no registro workspace é uma lista de permissões de IP, que pode impedir conexões de clientes MLflow executados em um clustering em outro workspace.

Configure os tokens API para um registro remoto

  1. No registro do modelo workspace, crie um token de acesso.
  2. No site workspace local, crie segredos para armazenar os tokens de acesso e as informações do site workspace remoto:
    1. Criar um escopo secreto: databricks secrets create-scope <scope>.
    2. Escolha um nome exclusivo para o destino workspace, mostrado aqui como <prefix>. Em seguida, crie três segredos:
      • databricks secrets put-secret <scope> <prefix>-host Digite o nome do host do registro do modelo workspace. Por exemplo, https://cust-success.cloud.databricks.com/.
      • databricks secrets put-secret <scope> <prefix>-token Digite os tokens de acesso do registro do modelo workspace.
      • databricks secrets put-secret <scope> <prefix>-workspace-id Digite a ID workspace para o registro do modelo workspace que pode ser encontrado no URL de qualquer página.
nota

Talvez o senhor queira compartilhar o Secret Scope com outros usuários, pois há um limite para o número de Secret Scope por workspace.

Especificar um registro remoto

Com base no escopo secreto e no prefixo de nome que você criou para o registro remoto workspace, é possível construir um URI de registro no formato:

Python
registry_uri = f'databricks://<scope>:<prefix>'

O senhor pode usar o URI para especificar um registro remoto para métodos de API fluente chamando primeiro:

Python
mlflow.set_registry_uri(registry_uri)

Ou você pode especificá-lo explicitamente ao instanciar um MlflowClient:

Python
client = MlflowClient(registry_uri=registry_uri)

O fluxo de trabalho a seguir mostra exemplos de ambas as abordagens.

Registre um modelo no registro remoto

Uma maneira de registrar um modelo é usar o mlflow.register_model API:

Python
mlflow.set_registry_uri(registry_uri)
mlflow.register_model(model_uri=f'runs:/<run-id>/<artifact-path>', name=model_name)

Exemplos de outros métodos de registro de modelos podem ser encontrados no Notebook no final desta página.

nota

O registro de um modelo em um site remoto workspace cria uma cópia temporária dos artefatos do modelo em DBFS no site remoto workspace. Talvez você queira excluir essa cópia quando a versão do modelo estiver no status READY. Os arquivos temporários podem ser encontrados na pasta /dbfs/databricks/mlflow/tmp-external-source/<run-id>.

O senhor também pode especificar um tracking_uri para apontar para um MLflow serviço de acompanhamento em outro workspace de forma semelhante ao registry_uri. Isso significa que o senhor pode executar uma ação em um site remoto workspace e registrar seu modelo no site atual ou em outro site remoto workspace.

Use um modelo do registro remoto

Você pode carregar e usar uma versão do modelo em um registro remoto com os métodos mlflow.<flavor>.load_model definindo primeiro o URI do registro:

Python
mlflow.set_registry_uri(registry_uri)
model = mlflow.pyfunc.load_model(f'models:/<model-name>/Staging')
model.predict(...)

Ou você pode especificar explicitamente o registro remoto no URI models:/:

Python
model = mlflow.pyfunc.load_model(f'models://<scope>:<prefix>@databricks/<model-name>/Staging')
model.predict(...)

Outros métodos auxiliares para acessar os arquivos do modelo também são suportados, como:

Python
client.get_latest_versions(model_name)
client.get_model_version_download_uri(model_name, version)

Gerenciar um modelo no registro remoto

Você pode realizar qualquer ação em modelos no registro remoto, desde que tenha as permissões necessárias. Por exemplo, se o senhor tiver permissões CAN MANAGE em um modelo, poderá fazer a transição de um estágio de versão do modelo ou excluir o modelo usando os métodos MlflowClient:

Python
client = MlflowClient(tracking_uri=None, registry_uri=registry_uri)
client.transition_model_version_stage(model_name, version, 'Archived')
client.delete_registered_model(model_name)

Notebook exemplo: Registro remoto de modelo

O seguinte Notebook é aplicável ao espaço de trabalho que não está habilitado para Unity Catalog. Ele mostra como os modelos logsão enviados para o servidor de acompanhamento MLflow a partir do site workspace atual e como registrar os modelos em Model Registry em um site workspace diferente. Databricks recomenda o uso de Models in Unity Catalog para compartilhar modelos entre espaços de trabalho.

Remote Model Registry exemplo Notebook

Open notebook in new tab