Implementación del modelo de MLflow en un punto de conexión por lotes

Completado

Una manera sencilla de implementar un modelo en un punto de conexión por lotes es usar un modelo de 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 la necesidad de 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 clase Model, mientras se especifica que el tipo de modelo 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 archivo MLmodel, 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 (generado automáticamente por Azure Machine Learning), 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 proceso.
  • mini_batch_size: número de archivos pasados en cada ejecución del script de puntuación.
  • output_action: qué hacer con las predicciones (summary_only o append_row).
  • output_file_name: archivo al que se anexarán las predicciones, si elige append_row para output_action.

Sugerencia

Explore la documentación de referencia para crear una implementación por lotes con el SDK v2 de Python.

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)