Compartilhe modelos em todo o espaço de trabalho
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.
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.
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.
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
- No registro do modelo workspace, crie um token de acesso.
- No site workspace local, crie segredos para armazenar os tokens de acesso e as informações do site workspace remoto:
- Criar um escopo secreto:
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 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.
- Criar um escopo secreto:
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:
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:
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.
Registre um modelo no registro remoto
Uma maneira de registrar um modelo é usar o mlflow.register_model
API:
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.
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:
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:/
:
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:
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
:
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.