Distribuire il modello MLflow in un endpoint batch
Un modo semplice per distribuire un modello in un endpoint batch consiste nell'usare un modello MLflow . Azure Machine Learning genererà automaticamente lo script di assegnazione dei punteggi e l'ambiente per i modelli MLflow.
Per distribuire un modello MLflow, è necessario aver creato un endpoint. È quindi possibile distribuire il modello nell'endpoint.
Registrare un modello MLflow
Per evitare che sia necessario uno script di assegnazione dei punteggi e un ambiente, è necessario registrare un modello MLflow nell'area di lavoro di Azure Machine Learning prima di distribuirlo in un endpoint batch.
Per registrare un modello MLflow, si userà la Model classe , specificando il tipo di modello come MLFLOW_MODEL. Per registrare il modello con Python SDK, è possibile usare il codice seguente:
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)
)
In questo esempio i file del modello vengono recuperati da un percorso locale. I file sono tutti archiviati in una cartella locale denominata model. La cartella deve includere il MLmodel file , che descrive come il modello può essere caricato e usato.
Suggerimento
Altre informazioni sul formato MLmodel.
Distribuire un modello MLflow in un endpoint
Per distribuire un modello MLflow in un endpoint batch, si userà la BatchDeployment classe .
Quando si distribuisce un modello, è necessario specificare il comportamento del processo di assegnazione dei punteggi batch. Il vantaggio dell'uso di un cluster di calcolo per eseguire lo script di assegnazione dei punteggi ,generato automaticamente da Azure Machine Learning, è che è possibile eseguire lo script di assegnazione dei punteggi in istanze separate in parallelo.
Quando si configura la distribuzione del modello, è possibile specificare:
-
instance_count: numero di nodi di calcolo da usare per la generazione di stime. -
max_concurrency_per_instance: numero massimo di esecuzioni di script di assegnazione dei punteggi paralleli per ogni nodo di calcolo. -
mini_batch_size: numero di file passati per esecuzione dello script di assegnazione dei punteggi. -
output_action: operazioni da eseguire con le stime:summary_onlyoappend_row. -
output_file_name: file a cui verranno aggiunte le stime, se si sceglieappend_rowperoutput_action.
Suggerimento
Esplorare la documentazione di riferimento per creare una distribuzione batch con Python SDK v2.
Per distribuire un modello MLflow in un endpoint batch, è possibile usare il codice seguente:
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)