Partager via


Déployer des modèles MLflow dans des déploiements par lots dans Azure Machine Learning

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (préversion)

Cet article explique comment déployer des modèles MLflow vers Azure Machine Learning pour une inférence par lots à l’aide de points de terminaison de lots. Lorsque vous déployez des modèles MLflow sur des points de terminaison de lots, Azure Machine Learning effectue les tâches suivantes :

  • Fournit une image de base MLflow ou un environnement curé qui contient les dépendances nécessaires pour exécuter un traitement par lots Azure Machine Learning.
  • Crée un pipeline de traitement par lots avec un script de scoring pour vous permettant de traiter des données à l’aide de la parallélisation.

Pour plus d’informations sur les types de fichiers d’entrée pris en charge et des détails sur le fonctionnement du modèle MLflow, consultez Considérations relatives au déploiement sur l’inférence par lots.

Prérequis

  • Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer. Essayez la version gratuite ou payante d’Azure Machine Learning.

  • Un espace de travail Azure Machine Learning. Pour créer un espace de travail, consultez Gérer les espaces de travail Azure Machine Learning.

  • Vérifiez que vous disposez des autorisations suivantes dans l’espace de travail Machine Learning :

    • Créez ou gérez des points de terminaison et des déploiements par lots : utilisez un rôle propriétaire, contributeur ou personnalisé autorisant Microsoft.MachineLearningServices/workspaces/batchEndpoints/*.
    • Créer des déploiements Azure Resource Manager dans le groupe de ressources de l’espace de travail : utilisez un rôle Propriétaire, Contributeur ou un rôle personnalisé autorisant Microsoft.Resources/deployments/write dans le groupe de ressources où l’espace de travail est déployé.
  • Installez le logiciel suivant pour utiliser Machine Learning :

    Exécutez la commande suivante pour installer l’interface de ligne de commande Azure et l’extension pour Azure Machine Learning ml :

    az extension add -n ml
    

    Les déploiements de composants de pipeline pour des points de terminaison Batch sont introduits dans la version 2.7 de l’extension ml pour l’interface de ligne de commande Azure. Utilisez la commande az extension update --name ml pour obtenir la dernière version.


Se connecter à un espace de travail

L’espace de travail est la ressource de niveau supérieur pour le Machine Learning. Il fournit un emplacement centralisé pour travailler avec tous les artefacts que vous créez lorsque vous utilisez Machine Learning. Dans cette section, vous vous connectez à l’espace de travail dans lequel vous effectuez vos tâches de déploiement.

Dans la commande suivante, entrez les valeurs de votre ID d’abonnement, de votre espace de travail, de votre emplacement et de votre groupe de ressources :

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Explorer l’exemple

L’exemple dans cet article montre comment déployer un modèle MLflow sur un point de terminaison de lot pour effectuer des prédictions par lots. Le modèle MLflow est basé sur le jeu de données UCI Heart Disease. La base de données contient 76 attributs, mais l’exemple utilise uniquement un sous-ensemble de 14. Le modèle tente de prédire la présence de maladie cardiaque chez un patient avec une valeur entière comprise entre 0 (aucune présence) et 1 (présence).

Le modèle est entraîné à l’aide d’un classifieur XGBBoost. Tout le prétraitement nécessaire est empaqueté en tant que pipeline scikit-learn, ce qui fait du modèle un pipeline de bout en bout qui va des données brutes aux prédictions.

L’exemple de cet article est basé sur des extraits de code contenus dans le référentiel azureml-examples. Pour exécuter les commandes localement sans avoir à copier/coller le fichier YAML et d’autres fichiers, clonez d’abord le référentiel, puis modifiez les répertoires dans le dossier :

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

Les fichiers de cet exemple se trouvent dans le dossier suivant :

cd endpoints/batch/deploy-models/heart-classifier-mlflow

Suivre dans les notebooks Jupyter

Vous pouvez suivre cet exemple à l’aide d’un Jupyter Notebook public. Dans le référentiel cloné, ouvrez le notebook mlflow-for-batch-tabular.ipynb.

Déployer le modèle MLflow

Dans cette section, vous déployez un modèle MLflow sur un point de terminaison de lot afin de pouvoir exécuter l’inférence par lot sur de nouvelles données. Avant de passer au déploiement, vous devez vous assurer que votre modèle est inscrit et qu’il existe un cluster de calcul disponible sur l’espace de travail.

Inscrire le modèle

Les points de terminaison par lots ne peuvent déployer que des modèles inscrits. Dans cet article, vous utilisez une copie locale du modèle dans le référentiel. Par conséquent, vous devez uniquement publier le modèle dans le registre de l’espace de travail.

Remarque

Si le modèle que vous déployez est déjà inscrit, vous pouvez passer à la section Créer un cluster de calcul.

Inscrivez le modèle en exécutant la commande suivante :

MODEL_NAME='heart-classifier-mlflow'
az ml model create --name $MODEL_NAME --type "mlflow_model" --path "model"

Créer un cluster de calcul

Vous devez vous assurer que les déploiements par lots peuvent s’exécuter sur une infrastructure disponible (de calcul). Les déploiements par lots peuvent s’exécuter sur n’importe quel calcul Machine Learning qui existe déjà dans l’espace de travail. Plusieurs déploiements par lots peuvent partager la même infrastructure de calcul.

Dans cet article, vous utilisez un cluster de calcul Machine Learning nommé cpu-cluster. L’exemple suivant vérifie qu’un calcul existe sur l’espace de travail ou crée un nouveau calcul.

Créer un cluster de calcul :

az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5

Créer un point de terminaison de traitement de lots

Pour créer un point de terminaison, vous avez besoin d’un nom et d’une description. Le nom du point de terminaison apparaît dans l’URI associé à votre point de terminaison, il doit donc être unique au sein d’une région Azure. Par exemple, il ne peut y avoir qu’un seul point de terminaison de lot avec le nom mybatchendpoint dans la région WestUS2.

  1. Placez le nom du point de terminaison dans une variable pour faciliter la référence ultérieure :

    Exécutez la commande suivante :

    ENDPOINT_NAME="heart-classifier"
    
  2. Créez le point de terminaison :

    1. Pour créer un point de terminaison, créez une configuration YAML comme le code suivant :

      endpoint.yml

      $schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json
      name: heart-classifier-batch
      description: A heart condition classifier for batch inference
      auth_mode: aad_token
      
    2. Créez le point de terminaison avec la commande suivante :

      az ml batch-endpoint create -n $ENDPOINT_NAME -f endpoint.yml
      

Créer un déploiement par lots

Les modèles MLflow ne vous obligent pas à indiquer un environnement ou un script de scoring lorsque vous créez le déploiement. L’environnement ou le script de scoring est créé automatiquement. Toutefois, vous pouvez spécifier l’environnement ou le script de scoring si vous souhaitez personnaliser la façon dont le déploiement effectue l’inférence.

  1. Pour créer un nouveau déploiement sous le point de terminaison créé, créez une configuration YAML comme indiqué dans le code suivant. Vous pouvez vérifier le schéma YAML du point de terminaison de lot complet pour obtenir des propriétés supplémentaires.

    deployment-simple/deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json
    endpoint_name: heart-classifier-batch
    name: classifier-xgboost-mlflow
    description: A heart condition classifier based on XGBoost
    type: model
    model: azureml:heart-classifier-mlflow@latest
    compute: azureml:batch-cluster
    resources:
      instance_count: 2
    settings:
      max_concurrency_per_instance: 2
      mini_batch_size: 2
      output_action: append_row
      output_file_name: predictions.csv
      retry_settings:
        max_retries: 3
        timeout: 300
      error_threshold: -1
      logging_level: info
    
  2. Créez le déploiement avec la commande suivante :

    az ml batch-deployment create --file deployment-simple/deployment.yml --endpoint-name $ENDPOINT_NAME --set-default
    

Important

Configurez la valeur timeout dans votre déploiement en fonction du temps nécessaire à l’exécution de l’inférence sur un seul lot. Plus la taille du lot est grande, plus la valeur timeout est longue. N’oubliez pas que la valeur mini_batch_size indique le nombre de fichiers dans un lot et non le nombre d’échantillons. Lorsque vous utilisez des données tabulaires, chaque fichier peut contenir plusieurs lignes, ce qui augmente le temps nécessaire pour que le point de terminaison de lot traite chaque fichier. Dans ce cas, utilisez des valeurs timeout élevées pour éviter les erreurs de délai d’expiration.

Appeler le point de terminaison

Bien que vous puissiez appeler un déploiement spécifique à l’intérieur d’un point de terminaison, il est courant d’appeler le point de terminaison lui-même et de le laisser décider du déploiement à utiliser. Ce type de déploiement s’appelle le déploiement « par défaut ». Cette approche vous permet de modifier le déploiement par défaut, ce qui vous permet de modifier le modèle servant le déploiement sans modifier le contrat avec l’utilisateur appelant le point de terminaison.

Utilisez l’instruction suivante pour mettre à jour le déploiement par défaut :

DEPLOYMENT_NAME="classifier-xgboost-mlflow"
az ml batch-endpoint update --name $ENDPOINT_NAME --set defaults.deployment_name=$DEPLOYMENT_NAME

Le point de terminaison de lot est maintenant prêt à être utilisé.

test du déploiement

Pour tester notre point de terminaison, utilisez un échantillon de données non étiquetées situées dans ce référentiel, qui peut être utiliser avec le modèle. Les points de terminaison de lots peuvent uniquement traiter les données situées dans le cloud et accessibles depuis l’espace de travail Machine Learning. Dans cet exemple, vous chargez les échantillons dans un magasin de données Machine Learning. Vous créez une ressource de données qui permet d’appeler le point de terminaison pour le scoring. Gardez à l’esprit que les points de terminaison de lots acceptent les données pouvant être placées à différents emplacements.

  1. Tout d’abord, créez la ressource de données. La ressource de données se compose d’un dossier contenant plusieurs fichiers CSV que nous voulons traiter en parallèle à l’aide de points de terminaison de lots. Vous pouvez ignorer cette étape si vos données sont déjà inscrites en tant que ressource de données ou que vous souhaitez utiliser un autre type d’entrée.

    1. Créez une définition de ressource de données dans YAML :

      heart-dataset-unlabeled.yml

      $schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
      name: heart-dataset-unlabeled
      description: An unlabeled dataset for heart classification.
      type: uri_folder
      path: data
      
    2. Créez la ressource de données :

      az ml data create -f heart-dataset-unlabeled.yml
      
  2. Après avoir chargé les données, appelez le point de terminaison.

    Conseil

    Dans les commandes suivantes, notez que le nom du déploiement n’est pas indiqué dans l’opération invoke. Le point de terminaison achemine automatiquement le travail vers le déploiement par défaut, car le point de terminaison n’a qu’un seul déploiement. Vous pouvez cibler un déploiement spécifique en indiquant l’argument/paramètre deployment_name.

    Exécutez la commande suivante :

    JOB_NAME = $(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input azureml:heart-dataset-unlabeled@latest --query name -o tsv)
    

    Remarque

    L’utilitaire jq ne sera pas forcément installé sur chaque installation. Pour connaître les instructions d’installation, consultez Télécharger jq.

  3. Une tâche de lot est démarrée dès que la commande retourne son résultat. Vous pouvez surveiller l’état du travail jusqu’à ce qu’il se termine :

    Exécutez la commande suivante :

    az ml job show -n $JOB_NAME --web
    

Analyser les sorties

Les prédictions de sortie sont générées dans le fichier predictions.csv, comme indiqué dans la configuration du déploiement. Le travail génère une sortie nommée score, où ce fichier est placé. Un seul fichier est généré par programme de traitement par lots.

Le fichier est structuré comme suit :

  • Une ligne par point de données envoyé au modèle. Pour les données tabulaires, le fichier predictions.csv contient une ligne pour chaque ligne présente dans chaque fichier traité. Pour les autres types de données (image, audio, texte), il y a une ligne par fichier traité.

  • Les colonnes suivantes se trouvent dans le fichier (dans l’ordre spécifié) :

    • row (facultatif) : index de ligne correspondant dans le fichier de données d’entrée. Cette colonne s’applique uniquement si les données d’entrée sont tabulaires. Les prédictions sont retournées dans le même ordre qu’elles apparaissent dans le fichier d’entrée. Vous pouvez vous appuyer sur le numéro de ligne pour faire correspondre la prédiction correspondante.

    • prediction : prédiction associée aux données d’entrée. Cette valeur est retournée « en l’état » tel qu’elle a été fournie par la fonction predict(). du modèle.

    • file_name : nom du nom de fichier où les données sont lues. Dans les données tabulaires, utilisez ce champ pour déterminer quelle prédiction appartient à chaque donnée d’entrée.

Vous pouvez télécharger les résultats du travail à l’aide du nom du travail.

Utilisez les commandes suivantes pour télécharger les prédictions :

az ml job download --name $JOB_NAME --output-name score --download-path ./

Après avoir téléchargé le fichier, vous pouvez ouvrir le fichier avec votre outil d’édition préféré. L’exemple suivant charge les prédictions à l’aide d’un dataframe Pandas.

import pandas as pd

score = pd.read_csv(
    "named-outputs/score/predictions.csv", names=["row", "prediction", "file"]
)

La sortie affiche une table :

Ligne Prédiction File
0 0 heart-unlabeled-0.csv
1 1 heart-unlabeled-0.csv
2 0 heart-unlabeled-0.csv
... ... ...
307 0 heart-unlabeled-3.csv

Conseil

Notez que dans cet exemple, les données d’entrée contiennent des données tabulaires au format CSV. Il existe quatre fichiers d’entrée différents : heart-unlabeled-0.csv, heart-unlabeled-1.csv, heart-unlabeled-2.csvet heart-unlabeled-3.csv.

Examiner les considérations relatives à l’inférence par lots

Machine Learning prend en charge le déploiement de modèles MLflow sur des points de terminaison de lots sans indiquer de script de scoring. Cette approche est un moyen pratique de déployer des modèles qui nécessitent un traitement de grandes quantités de données similaires au traitement par lots. Machine Learning utilise des informations dans la spécification du modèle MLflow pour orchestrer le processus d’inférence.

Explorer la distribution du travail sur les workers

Les points de terminaison Batch distribuent le travail au niveau du fichier, pour les données structurées et non structurées. Par conséquent, seuls les fichier URI et les dossiers d’URI sont pris en charge pour cette fonctionnalité. Chaque Worker traite les lots de Mini batch size fichiers à la fois. Pour les données tabulaires, les points de terminaison de lot ne tiennent pas compte du nombre de lignes à l’intérieur de chaque fichier lors de la distribution du travail.

Avertissement

Les structures de dossiers imbriquées ne sont pas explorées lors de l’inférence. Si vous partitionnez vos données à l’aide de dossiers, veillez à aplatir la structure avant de continuer.

Les déploiements par lots appellent la fonction predict du modèle MLflow une fois par fichier. Pour les fichiers CSV avec plusieurs lignes, cette action peut imposer une sollicitation de la mémoire dans le calcul sous-jacent. Le comportement peut augmenter le temps nécessaire au modèle pour donner un score à un fichier unique, en particulier pour les modèles coûteux comme les grands modèles de langage. Si vous rencontrez plusieurs exceptions de mémoire insuffisante ou d’entrées de délai d’attente dans les journaux, envisagez de fractionner les données dans des fichiers plus petits avec moins de lignes ou d’implémenter le traitement par lots au niveau des lignes à l’intérieur du script de scoring du modèle.

Vérifier la prise en charge des types de fichiers

Les types de données suivants sont pris en charge pour l’inférence par lots lors du déploiement de modèles MLflow sans environnement ou script de scoring. Pour traiter un autre type de fichier ou exécuter une inférence différemment, vous pouvez créer le déploiement en personnalisant un modèle de déploiement MLflow avec un script de scoring.

Extension de fichier Type retourné en tant qu’entrée du modèle Exigence de signature
.csv, .parquet, .pqt pd.DataFrame ColSpec. Si non fourni, la saisie de colonnes n’est pas appliquée.
.png, .jpg, .jpeg, .tiff, .bmp, .gif np.ndarray TensorSpec. L’entrée est remodelée pour correspondre à la forme des tenseurs, si disponible. Si aucune signature n’est disponible, les tenseurs de type np.uint8 sont déduits. Pour plus d’informations, consultez Considérations relatives aux modèles MLflow traitant des images.

Avertissement

Tout fichier non pris en charge qui peut être présent dans les données d’entrée provoque l’échec du travail. Dans ce cas, vous pouvez voir une erreur similaire à ERROR:azureml:Erreur de traitement du fichier d’entrée : « /mnt/batch/tasks/.../a-given-file.avro ». Le type de fichier « avro » n’est pas pris en charge.

Comprendre l’application des signatures pour les modèles MLflow

Les travaux de déploiement par lots appliquent les types de données de l’entrée lors de la lecture des données à l’aide de la signature de modèle MLflow disponible. Par conséquent, votre entrée de données est conforme aux types indiqués dans la signature du modèle. Si les données ne peuvent pas être analysées comme prévu, le travail échoue avec une erreur similaire à ERROR:azureml:Erreur de traitement du fichier d’entrée : « /mnt/batch/tasks/.../a-given-file.csv ». Exception : littéral non valide pour int() avec base 10 : « value ».

Conseil

Les signatures dans les modèles MLflow sont facultatives, mais elles sont fortement encouragées. Elles offrent un moyen pratique de détecter rapidement les problèmes de compatibilité des données. Pour obtenir plus d’informations sur la façon d’enregistrer des modèles avec des signatures, consultez Journalisation des modèles avec une signature, un environnement ou des exemples personnalisés.

Vous pouvez inspecter la signature de modèle de votre modèle en ouvrant le fichier MLmodel associé à votre modèle MLflow. Pour plus d’informations sur le fonctionnement des signatures dans MLflow, consultez Signatures dans MLflow.

Examiner la prise en charge des saveurs

Les déploiements par lots prennent uniquement en charge le déploiement de modèles MLflow avec une saveur pyfunc. Pour déployer une autre saveur, consultez Personnaliser le modèle de déploiement avec le script de scoring.

Personnaliser le modèle de déploiement avec le script de scoring

Les modèles MLflow peuvent être déployés sur des points de terminaison de lots sans indiquer un script de scoring dans la définition de déploiement. Toutefois, vous pouvez choisir d’indiquer ce fichier (généralement appelé pilote par lots) pour personnaliser l’exécution de l’inférence.

Vous sélectionnez généralement ce workflow pour les scénarios suivants :

  • Traiter les types de fichiers non pris en charge par les déploiements par lots de déploiements MLflow.
  • Personnalisez la façon dont le modèle s’exécute, par exemple à l’aide d’une saveur spécifique pour le charger avec la fonction mlflow.<flavor>.load().
  • Effectuez le pré ou post-traitement dans votre routine de scoring, lorsqu’il n’est pas terminé par le modèle lui-même.
  • Ajustez la présentation du modèle qui ne se présente pas correctement avec des données tabulaires, telles qu’un graphe tensoriel qui représente une image.
  • Autorisez le modèle à lire des données en blocs, car il ne peut pas traiter chaque fichier à la fois en raison de contraintes de mémoire.

Important

Pour indiquer un script de scoring pour un modèle de déploiement MLflow, vous devez spécifier l’environnement dans lequel le déploiement s’exécute.

Utiliser le script de scoring

Utilisez les étapes suivantes pour déployer un modèle MLflow avec un script de scoring personnalisé :

  1. Identifiez le dossier dans lequel votre modèle MLflow est placé.

    1. Dans le portail Azure Machine Learning, accédez aux Modèles.

    2. Sélectionnez le modèle à déployer, puis sélectionnez l’onglet Artifacts.

    3. Prenez note du dossier affiché. Ce dossier a été indiqué lors de l’inscription du modèle.

      Capture d’écran montrant le dossier dans lequel les artefacts de modèle sont placés.

  2. Créer un script de scoring. Notez que le nom model du dossier précédent est inclus dans la fonction init().

    deployment-custom/code/batch_driver.py

    # Copyright (c) Microsoft. All rights reserved.
    # Licensed under the MIT license.
    
    import os
    import glob
    import mlflow
    import pandas as pd
    import logging
    
    
    def init():
        global model
        global model_input_types
        global model_output_names
    
        # AZUREML_MODEL_DIR is an environment variable created during deployment
        # It is the path to the model folder
        # Please provide your model's folder name if there's one
        model_path = glob.glob(os.environ["AZUREML_MODEL_DIR"] + "/*/")[0]
    
        # Load the model, it's input types and output names
        model = mlflow.pyfunc.load(model_path)
        if model.metadata and model.metadata.signature:
            if model.metadata.signature.inputs:
                model_input_types = dict(
                    zip(
                        model.metadata.signature.inputs.input_names(),
                        model.metadata.signature.inputs.pandas_types(),
                    )
                )
            if model.metadata.signature.outputs:
                if model.metadata.signature.outputs.has_input_names():
                    model_output_names = model.metadata.signature.outputs.input_names()
                elif len(model.metadata.signature.outputs.input_names()) == 1:
                    model_output_names = ["prediction"]
        else:
            logging.warning(
                "Model doesn't contain a signature. Input data types won't be enforced."
            )
    
    
    def run(mini_batch):
        print(f"run method start: {__file__}, run({len(mini_batch)} files)")
    
        data = pd.concat(
            map(
                lambda fp: pd.read_csv(fp).assign(filename=os.path.basename(fp)), mini_batch
            )
        )
    
        if model_input_types:
            data = data.astype(model_input_types)
    
        # Predict over the input data, minus the column filename which is not part of the model.
        pred = model.predict(data.drop("filename", axis=1))
    
        if pred is not pd.DataFrame:
            if not model_output_names:
                model_output_names = ["pred_col" + str(i) for i in range(pred.shape[1])]
            pred = pd.DataFrame(pred, columns=model_output_names)
    
        return pd.concat([data, pred], axis=1)
    
  3. Créez un environnement dans lequel le script de scoring peut être exécuté. Étant donné que le modèle de cet exemple est MLflow, les exigences conda sont également spécifiées dans le package de modèle. Pour plus d’informations sur les modèles MLflow et les fichiers inclus, consultez Format MLmodel.

    Dans cette étape, vous construisez l’environnement à l’aide des dépendances conda du fichier. Vous devez également inclure le package azureml-core, qui est nécessaire pour les déploiements Batch.

    Conseil

    Si votre modèle est déjà inscrit dans le registre de modèles, vous pouvez télécharger et copier le fichier conda.yml associé à votre modèle. Le fichier est disponible dans Azure Machine Learning studio sous Modèles>Sélectionner votre modèle dans la liste>Artifacts. Dans le dossier racine, sélectionnez le fichier conda.yml, puis sélectionnez Télécharger ou copiez son contenu.

    Important

    Cet exemple utilise un environnement conda spécifié dans /heart-classifier-mlflow/environment/conda.yaml. Ce fichier a été créé en combinant le fichier de dépendances conda MLflow d’origine et en ajoutant le package azureml-core. Vous ne pouvez pas utiliser le fichier conda.yml directement à partir du modèle.

    La définition d’environnement est incluse dans la définition de déploiement elle-même en tant qu’environnement anonyme. Vous pouvez voir les lignes suivantes dans le déploiement :

    environment:
      name: batch-mlflow-xgboost
      image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
      conda_file: environment/conda.yaml
    
  4. Configurez le déploiement :

    Pour créer un nouveau déploiement sous le point de terminaison créé, créez une configuration YAML comme indiqué dans l’extrait de code suivant. Vous pouvez vérifier le schéma YAML du point de terminaison de lot complet pour obtenir des propriétés supplémentaires.

    deployment-custom/deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json
    endpoint_name: heart-classifier-batch
    name: classifier-xgboost-custom
    description: A heart condition classifier based on XGBoost
    type: model
    model: azureml:heart-classifier-mlflow@latest
    environment:
      name: batch-mlflow-xgboost
      image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
      conda_file: environment/conda.yaml
    code_configuration:
      code: code
      scoring_script: batch_driver.py
    compute: azureml:batch-cluster
    resources:
      instance_count: 2
    settings:
      max_concurrency_per_instance: 2
      mini_batch_size: 2
      output_action: append_row
      output_file_name: predictions.csv
      retry_settings:
        max_retries: 3
        timeout: 300
      error_threshold: -1
      logging_level: info
    
  5. Créez le déploiement :

    Exécutez le code ci-dessous :

    az ml batch-deployment create --file deployment-custom/deployment.yml --endpoint-name $ENDPOINT_NAME
    

Le point de terminaison de lot est maintenant prêt à être utilisé.

Nettoyer les ressources

Une fois l’exercice terminé, supprimez les ressources qui ne sont plus nécessaires.

Exécutez le code suivant pour supprimer le point de terminaison de lots et tous les déploiements sous-jacents :

az ml batch-endpoint delete --name $ENDPOINT_NAME --yes

Cette commande ne supprime pas les travaux de scoring par lots.