Compartilhe modelos entre áreas de trabalho
Importante
A Databricks recomenda o uso de modelos no Unity Catalog para compartilhar modelos no workspace. A abordagem neste artigo está obsoleta.
O Databricks oferece suporte ao compartilhamento de modelos em vários workspace. Por exemplo, você pode desenvolver e logs um modelo em um workspace de desenvolvimento e, em seguida, acessá-lo e compará-lo com modelos em um workspace de produção separado. Isso é útil quando várias equipes compartilham acesso a modelos ou quando sua organização possui vários workspace para lidar com os diferentes estágios de desenvolvimento. Para desenvolvimento e implantação de modelo entreworkspace , o Databricks recomenda a abordagem de código de implantação , em que o código de treinamento do modelo é implantado em vários ambientes.
Em situações de váriosworkspace , você pode acessar modelos no workspace do Databricks usando um registro de modelo remoto. Por exemplo, o cientista de dados pode acessar o registro de modelo de produção com acesso somente leitura para comparar seus modelos em desenvolvimento com os modelos de produção atuais. Um exemplo de configuração de váriosworkspace é mostrado abaixo.
O acesso a um registro remoto é controlado por tokens. Cada usuário ou script que precisa de acesso cria um access tokenpessoal no registro remoto e copia esses tokens para o gerenciador secreto de seu espaço de trabalho local. Cada solicitação de API enviada ao registro remoto workspace deve incluir o access token; o MLflow fornece um mecanismo simples para especificar os segredos a serem usados ao executar operações de registro de modelo.
Observação
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 pessoal access token, a Databricks recomenda o uso de pessoal access tokens pertencente à entidade de serviço em vez de usuários workspace. Para criar o site tokens para uma entidade de serviço, consulte gerenciar tokens para uma entidade de serviço.
Todos os métodos de API cliente e fluente para registro de modelo são suportados para workspace remoto.
Requisitos
O uso de um registro de modelo no workspace requer o cliente MLflow Python, versão 1.11.0 ouacima.
Observação
Este 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 workspace Databricks que contém o registro de modelo remoto. Uma restrição comum colocada no workspace do registro é uma lista de permissões de IP, que pode impedir conexões de clientes MLflow em execução em clusters em outro workspace.
Configure os tokens de API para um registro remoto
No espaço de trabalho de registro de modelo, crie um access token.
No workspace local, crie segredos para armazenar as informações do access token e do workspace remoto:
Crie um Secret Scope:
databricks secrets create-scope <scope>
.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 hostname da workspace do registro de modelo . Por exemplo,https://cust-success.cloud.databricks.com/
.databricks secrets put-secret <scope> <prefix>-token
: Insira os access tokens do workspace do registro de modelo.databricks secrets put-secret <scope> <prefix>-workspace-id
: Insira o ID do espaço de trabalho para o espaço de trabalho do registro de modelo, que pode ser encontrado na URL de qualquer página.
Observação
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 Secret Scope e no prefixo do nome que você criou para o workspace do registro remoto, você pode construir um URI de registro no formato:
registry_uri = f'databricks://<scope>:<prefix>'
Você pode usar o URI para especificar um registro remoto para métodos de API fluente chamando primeiro:
mlflow.set_registry_uri(registry_uri)
Ou você pode especificá-lo explicitamente ao instanciar um MlflowClient
:
client = MlflowClient(registry_uri=registry_uri)
O fluxo de trabalho a seguir mostra exemplos de ambas as abordagens.
Registrar um modelo no registro remoto
Uma maneira de registrar um modelo é usar a API mlflow.register_model
:
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 modelo podem ser encontrados no Notebook no final desta página.
Observação
registrar um modelo em um workspace remoto cria uma cópia temporária dos artefatos do modelo em DBFS no workspace remoto. Você pode excluir esta cópia assim que 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>
.
Você também pode especificar um tracking_uri
para apontar para um serviço de acompanhamento MLflow em outro workspace de maneira semelhante a registry_uri
. Isso significa que você pode executar uma execução em um workspace remoto e registrar seu modelo no atual ou em outro workspace remoto.
Use um modelo do registro remoto
Você pode carregar e usar uma versão de modelo em um registro remoto com métodos mlflow.<flavor>.load_model
definindo primeiro o URI do registro:
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 models:/
URI:
model = mlflow.pyfunc.load_model(f'models://<scope>:<prefix>@databricks/<model-name>/Staging')
model.predict(...)
Outros métodos auxiliares para acessar os arquivos de modelo também são suportados, como:
client.get_latest_versions(model_name)
client.get_model_version_download_uri(model_name, version)
gerencia um modelo no registro remoto
O senhor pode executar qualquer ação nos modelos do registro remoto, desde que tenha as permissões necessárias. Por exemplo, se o senhor tiver permissões de gerenciar CAN 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
:
client = MlflowClient(tracking_uri=None, registry_uri=registry_uri)
client.transition_model_version_stage(model_name, version, 'Archived')
client.delete_registered_model(model_name)
Exemplo Notebook : Registro de modelo remoto
O Notebook a seguir é aplicável ao workspace que não está habilitado para o Unity Catalog. Ele mostra como modelar logsged para o servidor de acompanhamento MLflow do workspace atual e Model Registry no registro de modelo em um workspace diferente. A Databricks recomenda o uso de Modelos no Unity Catalog para compartilhar modelos no workspace.