Implantar seu modelo MLflow em um ponto de extremidade em lote

Concluído

Uma maneira fácil de implantar um modelo em um ponto de extremidade em lote é usar um modelo MLflow . O Azure Machine Learning gerará automaticamente o script de pontuação e o ambiente para modelos MLflow.

Para implantar um modelo MLflow, você precisa ter criado um ponto de extremidade. Em seguida, você pode implantar o modelo no ponto de extremidade.

Registrar um modelo MLflow

Para evitar a necessidade de um script e ambiente de pontuação, um modelo MLflow precisa ser registrado no espaço de trabalho do Aprendizado de Máquina do Azure antes que você possa implantá-lo em um ponto de extremidade em lote.

Para registrar um modelo MLflow, você usará a Model classe enquanto especifica o tipo de modelo a ser MLFLOW_MODEL. Para registrar o modelo com o Python SDK, você pode usar o seguinte código:

from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

model_name = 'mlflow-model'
model = ml_client.models.create_or_update(
    Model(name=model_name, path='./model', type=AssetTypes.MLFLOW_MODEL)
)

Neste exemplo, estamos pegando os arquivos de modelo de um caminho local. Os arquivos são todos armazenados em uma pasta local chamada model. A pasta deve incluir o MLmodel arquivo, que descreve como o modelo pode ser carregado e usado.

Gorjeta

Saiba mais sobre o formato MLmodel.

Implantar um modelo MLflow em um ponto de extremidade

Para implantar um modelo MLflow em um ponto de extremidade em lote, você usará a BatchDeployment classe.

Ao implantar um modelo, você precisará especificar como deseja que o trabalho de pontuação em lote se comporte. A vantagem de usar um cluster de computação para executar o script de pontuação (que é gerado automaticamente pelo Azure Machine Learning) é que você pode executar o script de pontuação em instâncias separadas em paralelo.

Ao configurar a implantação do modelo, você pode especificar:

  • instance_count: Contagem de nós de computação a serem usados para gerar previsões.
  • max_concurrency_per_instance: Número máximo de scripts de pontuação paralela executados por nó de computação.
  • mini_batch_size: Número de arquivos passados por script de pontuação executado.
  • output_action: O que fazer com as previsões: summary_only ou append_row.
  • output_file_name: Arquivo ao qual as previsões serão anexadas, se você optar append_row por output_action.

Gorjeta

Explore a documentação de referência para criar uma implantação em lote com o Python SDK v2.

Para implantar um modelo MLflow em um ponto de extremidade em lote, você pode usar o seguinte código:

from azure.ai.ml.entities import BatchDeployment, BatchRetrySettings
from azure.ai.ml.constants import BatchDeploymentOutputAction

deployment = BatchDeployment(
    name="forecast-mlflow",
    description="A sales forecaster",
    endpoint_name=endpoint.name,
    model=model,
    compute="aml-cluster",
    instance_count=2,
    max_concurrency_per_instance=2,
    mini_batch_size=2,
    output_action=BatchDeploymentOutputAction.APPEND_ROW,
    output_file_name="predictions.csv",
    retry_settings=BatchRetrySettings(max_retries=3, timeout=300),
    logging_level="info",
)
ml_client.batch_deployments.begin_create_or_update(deployment)