Pular para o conteúdo principal

Compartilhe modelos em todo o espaço de trabalho

importante

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