Compartilhar via


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.

 implanta modelos do MLflow com o Azure Machine Learning

Pré-requisitos

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