Implementación del modelo de MLflow en un punto de conexión por lotes
Una manera sencilla de desplegar un modelo en un endpoint de lote es usar un modelo MLflow. Azure Machine Learning generará automáticamente el script de puntuación y el entorno para los modelos de MLflow.
Para implementar un modelo de MLflow, debe haber creado un punto de conexión. A continuación, puede implementar el modelo en el punto de conexión.
Registro de un modelo de MLflow
Para evitar que se necesite un entorno y un script de puntuación, es necesario registrar un modelo de MLflow en el área de trabajo de Azure Machine Learning para poder implementarlo en un punto de conexión por lotes.
Para registrar un modelo de MLflow, usará la Model clase , al especificar el tipo de modelo para que sea MLFLOW_MODEL. Para registrar el modelo con el SDK de Python, puede usar el código siguiente:
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)
)
En este ejemplo, vamos a tomar los archivos de modelo de una ruta de acceso local. Todos los archivos se almacenan en una carpeta local denominada model. La carpeta debe incluir el MLmodel archivo , que describe cómo se puede cargar y usar el modelo.
Sugerencia
Obtenga más información sobre el formato MLmodel.
Implementación de un modelo de MLflow en un punto de conexión
Para implementar un modelo de MLflow en un punto de conexión por lotes, usará la clase BatchDeployment.
Al implementar un modelo, deberá especificar cómo desea que se comporte el trabajo de puntuación por lotes. La ventaja de usar un clúster de proceso para ejecutar el script de puntuación (que azure Machine Learning genera automáticamente), es que puede ejecutar el script de puntuación en instancias independientes en paralelo.
Al configurar la implementación del modelo, puede especificar:
instance_count: recuento de nodos de proceso que se van a usar para generar predicciones.max_concurrency_per_instance: Número máximo de ejecuciones de script de puntuación en paralelo por nodo de cómputo.mini_batch_size: número de archivos pasados por ejecución de script de evaluación.output_action: qué hacer con las predicciones:summary_onlyoappend_row.output_file_name: archivo al que se anexarán las predicciones, si eligeappend_rowparaoutput_action.
Sugerencia
Explore la documentación de referencia para crear una implementación por lotes con el SDK de Python v2.
Para implementar un modelo de MLflow en un punto de conexión por lotes, puede usar el código siguiente:
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)