Implantar modelos do MLflow como serviços Web do Azure
APLICA-SE A:azureml do SDK do Python v1
Nesse artigo, aprenda a implementar o seu modelo MLflow como um serviço web do Azure, para que possa aproveitar e aplicar as capacidades de gestão de modelos e de detecção de desvios de dados do Azure Machine Learning aos seus modelos de produção. Para obter mais integrações de funcionalidade MLflow e Azure Machine Learning, veja MLflow e Azure Machine Learning (v2), que utiliza o SDK v2.
O Azure Machine Learning oferece configurações de implantação para:
- ACI (Instância de Contêiner do Azure), que é uma opção adequada para uma implantação rápida de desenvolvimento/teste.
- AKS (Serviço de Kubernetes do Azure), que é recomendado para implantações escalonáveis de produção.
Observação
Os Pontos de Extremidade do Azure Machine Learning (v2) fornecem uma experiência de implantação aprimorada e mais simples. Os pontos de extremidade dão suporte a cenários de inferência em tempo real e em lote. Os pontos de extremidade oferecem uma interface unificada para invocar e gerenciar implantações de modelo dentre os tipos de computação. Veja O que são os pontos de extremidade do Azure Machine Learning?.
Dica
As informações contidas neste documento destinam-se principalmente a cientistas de dados e desenvolvedores que desejam implantar o seu modelo do MLflow em um ponto de extremidade de serviço Web do Azure Machine Learning. Se você for um administrador interessado em monitorar o uso de recursos e os eventos do Azure Machine Learning, como cotas, execuções de treinamento concluídas ou implantações de modelo concluídas, consulte Monitoramento do Azure Machine Learning.
Implantação do MLflow com o Azure Machine Learning
O MLflow é uma biblioteca de open-source para gerenciar o ciclo de vida dos experimentos de aprendizado de máquina. A integração dele ao Azure Machine Learning permite que você estenda esse gerenciamento para além do treinamento de modelos, chegando até a fase de implantação do seu modelo de produção.
O diagrama a seguir demonstra que, com a API de implantação do MLflow e o Azure Machine Learning, você pode implantar modelos criados com estruturas populares, como PyTorch, Tensorflow, scikit-learn etc., como serviços Web do Azure e gerenciá-los no seu workspace.
Pré-requisitos
- Um modelo de machine learning. Se você não tiver um modelo treinado, encontre o exemplo de notebook que melhor se adapta ao seu cenário de computação neste repositório e siga as instruções.
- Configure o URI de acompanhamento do MLflow para se conectar ao Azure Machine Learning.
- Instale o pacote
azureml-mlflow
.- Esse pacote automaticamente traz
azureml-core
do SDK Python do Azure Machine Learning, que fornece a conectividade para o MLflow acessar seu espaço de trabalho.
- Esse pacote automaticamente traz
- Veja quais permissões de acesso são necessárias para executar suas operações de MLflow com seu workspace.
Implantar na ACI
Para implantar o modelo do MLflow em um serviço Web do Azure Machine Learning, o modelo deve ser configurado com o URI de acompanhamento do MLflow para se conectar ao Azure Machine Learning.
Para implantar na ACI, você não precisa definir uma configuração de implantação. O serviço assumirá uma implantação na ACI como padrão quando uma configuração não for informada. Em seguida, registre e implante o modelo em uma etapa com o método deploy do MLflow para Azure Machine Learning.
from mlflow.deployments import get_deploy_client
# set the tracking uri as the deployment client
client = get_deploy_client(mlflow.get_tracking_uri())
# set the model path
model_path = "model"
# define the model path and the name is the service name
# the model gets registered automatically and a name is autogenerated using the "name" parameter below
client.create_deployment(name="mlflow-test-aci", model_uri='runs:/{}/{}'.format(run.id, model_path))
Personalizar a configuração de implantação
Se preferir não usar os padrões, você poderá definir sua configuração de implantação com um arquivo JSON de configuração de implantação que usa parâmetros do método deploy_configuration() como referência.
Para o arquivo JSON de configuração de implantação, cada um dos parâmetros de configuração de implantação precisa ser definido na forma de um dicionário. A seguir, é mostrado um exemplo. Saiba mais sobre o que seu arquivo JSON de configuração de implantação pode conter.
Esquema de configuração de implantação da Instância de Contêiner do Azure
{"computeType": "aci",
"containerResourceRequirements": {"cpu": 1, "memoryInGB": 1},
"location": "eastus2"
}
O arquivo json pode ser usado para criar sua implantação.
# set the deployment config
deploy_path = "deployment_config.json"
test_config = {'deploy-config-file': deploy_path}
client.create_deployment(model_uri='runs:/{}/{}'.format(run.id, model_path),
config=test_config,
name="mlflow-test-aci")
Implantar no AKS (Serviço de Kubernetes do Azure)
Para implantar o modelo do MLflow em um serviço Web do Azure Machine Learning, o modelo deve ser configurado com o URI de acompanhamento do MLflow para se conectar ao Azure Machine Learning.
Para implantar no AKS, primeiro, crie um cluster do AKS. Crie um cluster do AKS usando o método ComputeTarget.ceate(). A criação de um novo cluster pode levar de 20-25 minutos.
from azureml.core.compute import AksCompute, ComputeTarget
# Use the default configuration (can also provide parameters to customize)
prov_config = AksCompute.provisioning_configuration()
aks_name = 'aks-mlflow'
# Create the cluster
aks_target = ComputeTarget.create(workspace=ws,
name=aks_name,
provisioning_configuration=prov_config)
aks_target.wait_for_completion(show_output = True)
print(aks_target.provisioning_state)
print(aks_target.provisioning_errors)
Crie um json de configuração de implantação usando os valores do método deploy_configuration() como uma referência. Cada um dos parâmetros de configuração de implantação precisa ser definido como um dicionário. Este é um exemplo:
{"computeType": "aks", "computeTargetName": "aks-mlflow"}
Em seguida, registre e implante o modelo em uma etapa com o cliente de implantação do MLflow.
from mlflow.deployments import get_deploy_client
# set the tracking uri as the deployment client
client = get_deploy_client(mlflow.get_tracking_uri())
# set the model path
model_path = "model"
# set the deployment config
deploy_path = "deployment_config.json"
test_config = {'deploy-config-file': deploy_path}
# define the model path and the name is the service name
# the model gets registered automatically and a name is autogenerated using the "name" parameter below
client.create_deployment(model_uri='runs:/{}/{}'.format(run.id, model_path),
config=test_config,
name="mlflow-test-aci")
A implantação do serviço pode levar vários minutos.
Limpar os recursos
Se você não planeja usar o serviço Web implantado, use service.delete()
para excluí-lo do notebook. Para mais informações, confira a documentação do WebService.delete().
Blocos de anotações de exemplo
O MLflow com notebooks do Azure Machine Learning demonstra e expande os conceitos apresentados neste artigo.
Observação
Um repositório de exemplos voltado para a comunidade que usa mlflow pode ser encontrado em https://github.com/Azure/azureml-examples.
Próximas etapas
- Gerenciar os modelos.
- Monitore os modelos de produção para descompasso de dados.
- Acompanhar as execuções do Azure Databricks com o MLflow.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de