Déployer votre modèle MLflow sur un point de terminaison de lot

Effectué

Un moyen simple de déployer un modèle sur un point de terminaison de lot consiste à utiliser un modèle MLflow. Azure Machine Learning générera automatiquement le script de scoring et l’environnement pour les modèles MLflow.

Pour déployer un modèle MLflow, vous devez avoir créé un point de terminaison. Vous pouvez ensuite déployer le modèle sur le point de terminaison.

Inscrire un modèle MLflow

Pour éviter qu’un environnement et un script de scoring soient nécessaires, un modèle MLflow doit être inscrit dans l’espace de travail Azure Machine Learning avant que vous puissiez le déployer sur un point de terminaison de lot.

Pour inscrire un modèle MLflow, vous allez utiliser la classe Model, tout en définissant le type de modèle sur MLFLOW_MODEL. Pour inscrire le modèle avec le kit SDK Python, vous pouvez utiliser le code suivant :

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)
)

Dans cet exemple, nous prenons les fichiers de modèle à partir d’un chemin d’accès local. Tous les fichiers sont stockés dans un dossier local appelé model. Le dossier doit inclure le fichier MLmodel, qui indique comment le modèle peut être chargé et utilisé.

Conseil

Découvrez plus en détail le format MLmodel.

Déployer un modèle MLflow sur un point de terminaison

Pour déployer un modèle MLflow sur un point de terminaison de lot, vous allez utiliser la classe BatchDeployment.

Quand vous déployez un modèle, vous devez spécifier la façon dont le travail de scoring par lots doit se comporter. L’utilisation d’un cluster de calcul pour exécuter le script de scoring (qui est généré automatiquement par Azure Machine Learning), présente l’avantage de permettre d’exécuter le script de scoring sur des instances distinctes en parallèle.

Quand vous configurez le modèle de déploiement, vous pouvez spécifier :

  • instance_count : nombre de nœuds de calcul à utiliser pour générer des prédictions.
  • max_concurrency_per_instance : nombre maximal d’exécutions du script de scoring parallèles par nœud de calcul.
  • mini_batch_size : nombre de fichiers par exécution du script de scoring.
  • output_action : action à effectuer avec les prédictions : summary_only ou append_row.
  • output_file_name :fichier auquel les prédictions sont ajoutées si vous choisissez append_row pour output_action.

Conseil

Découvrez la documentation de référence pour créer un déploiement par lot avec le kit SDK Python v2.

Pour déployer un modèle MLflow sur un point de terminaison de lot, vous pouvez utiliser le code suivant :

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)