Déployer des pipelines en utilisant des points de terminaison par lots

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

Vous pouvez déployer des composants de pipeline sous un point de terminaison de traitement par lots, ce qui offre un moyen pratique de les rendre opérationnels dans Azure Machine Learning. Dans cet article, vous allez apprendre à créer un déploiement par lots qui contient un pipeline simple. Vous allez apprendre à :

  • Créer, puis inscrire un composant de pipeline
  • Créer un point de terminaison de traitement par lots, puis déployer un composant de pipeline
  • test du déploiement

À propos de cet exemple

Dans cet exemple, nous allons déployer un composant de pipeline composé d’un simple travail de commande qui affiche « bonjour ! ». Ce composant ne nécessite aucune entrée ou sortie et constitue le scénario de déploiement de pipeline le plus simple.

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 situent dans :

cd endpoints/batch/deploy-pipelines/hello-batch

Suivre avec les notebooks Jupyter

Vous pouvez suivre la version du Kit de développement logiciel (SDK) Python de cet exemple en ouvrant le notebook sdk-deploy-and-test.ipynb dans le référentiel cloné.

Prérequis

Avant de suivre les étapes décrites dans cet article, vérifiez que vous disposez des composants requis suivants :

  • 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. Si vous n’en avez pas, suivez les étapes décrites dans l’article Gérer des espaces de travail Azure Machine Learning pour en créer un.

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

    • 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éez des déploiements ARM dans le groupe de ressources de l’espace de travail : utilisez un rôle propriétaire, contributeur ou personnalisé autorisant Microsoft.Resources/deployments/write dans le groupe de ressources où l’espace de travail est déployé.

  • Vous devez installer le logiciel suivant pour utiliser Azure Machine Learning :

    L’interface Azure CLI et l’mlextension pour Azure Machine Learning.

    az extension add -n ml
    

    Notes

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

Se connecter à un espace de travail

L’espace de travail est la ressource de niveau supérieur pour Azure Machine Learning. Il fournit un emplacement centralisé dans lequel exploiter tous les artefacts que vous créez lorsque vous utilisez Azure Machine Learning. Dans cette section, nous allons nous connecter à l’espace de travail dans lequel vous allez effectuer des tâches de déploiement.

Transmettez les valeurs de votre ID d’abonnement, de votre espace de travail, de votre emplacement et de votre groupe de ressources dans le code suivant :

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

Créer le composant de pipeline

Les points de terminaison de traitement par lots peuvent déployer des modèles ou des composants de pipeline. Les composants de pipeline sont réutilisables et vous pouvez simplifier votre pratique MLOps en utilisant des registres partagés pour déplacer ces composants d’un espace de travail à un autre.

Le composant de pipeline dans cet exemple contient une seule étape qui imprime uniquement un message « bonjour » dans les journaux. Cela ne nécessite aucune entrée ou sortie.

Le fichier hello-component/hello.yml contient la configuration du travail de pipeline :

hello-component/hello.yml

$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponent.schema.json
name: hello_batch
display_name: Hello Batch component
version: 1
type: pipeline
jobs:
  main_job:
    type: command
    component:
      code: src
      environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
      command: >-
        python hello.py

Inscrivez le composant :

az ml component create -f hello-component/hello.yml

Créer un point de terminaison de traitement de lots

  1. Entrez un nom pour le point de terminaison. Le nom d’un point de terminaison de lot doit être unique dans chaque région, car le nom est utilisé pour construire l’URI d’appel. Pour garantir son originalité, ajoutez des caractères de fin au nom spécifié dans le code suivant.

    ENDPOINT_NAME="hello-batch"
    
  2. Configurer le point de terminaison :

    Le fichier endpoint.yml contient la configuration du point de terminaison.

    endpoint.yml

    $schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json
    name: hello-batch
    description: A hello world endpoint for component deployments.
    auth_mode: aad_token
    
  3. Créez le point de terminaison :

    az ml batch-endpoint create --name $ENDPOINT_NAME  -f endpoint.yml
    
  4. Interrogez l’URI du point de terminaison :

    az ml batch-endpoint show --name $ENDPOINT_NAME
    

Déployer le composant de pipeline

Pour déployer le composant de pipeline, nous devons créer un déploiement par lots. Un déploiement est un ensemble de ressources nécessaires à l’hébergement de la ressource qui effectue le travail réel.

  1. Créez un cluster de calcul. Les points de terminaison et les déploiements par lots s’exécutent sur des clusters de calcul. Ils peuvent s’exécuter sur n’importe quel cluster de calcul Azure Machine Learning qui existe déjà dans l’espace de travail. Par conséquent, plusieurs déploiements par lots peuvent partager la même infrastructure de calcul. Dans cet exemple, nous allons travailler sur un cluster de calcul Azure Machine Learning appelé batch-cluster. Nous allons vérifier que le calcul existe sur l’espace de travail ou le créer dans le cas contraire.

    az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
    
  2. Configurez le déploiement :

    Le fichier deployment.yml contient la configuration du déploiement. Pour obtenir des propriétés supplémentaires, vous pouvez vérifier le schéma YAML du point de terminaison de lot complet.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json
    name: hello-batch-dpl
    endpoint_name: hello-pipeline-batch
    type: pipeline
    component: azureml:hello_batch@latest
    settings:
        default_compute: batch-cluster
    
  3. Créez le déploiement :

    Exécutez le code suivant pour créer un déploiement par lots sous le point de terminaison de traitement par lots et le définir comme déploiement par défaut.

    az ml batch-deployment create --endpoint $ENDPOINT_NAME -f deployment.yml --set-default
    

    Conseil

    Notez l’utilisation de l’indicateur --set-default pour indiquer que ce nouveau déploiement est désormais la valeur par défaut.

  4. Votre déploiement est prêt à être utilisé.

test du déploiement

Une fois le déploiement créé, il est prêt à recevoir des travaux. Vous pouvez appeler le déploiement par défaut ainsi :

JOB_NAME=$(az ml batch-endpoint invoke -n $ENDPOINT_NAME --query name -o tsv)

Conseil

Dans cet exemple, le pipeline n’a pas d’entrées ou de sorties. Toutefois, si le composant de pipeline en a besoin, elles peuvent être indiquées au moment de l’appel. Pour en savoir plus sur la manière d’indiquer des entrées et des sorties, consultez Créer des travaux et des données d’entrée pour les points de terminaison par lots ou consultez le tutoriel Déployer un pipeline pour effectuer un scoring par lots avec prétraitement (préversion).

Vous pouvez surveiller la progression de l’affichage et diffuser les journaux en continu à l’aide de :

az ml job stream -n $JOB_NAME

Nettoyer les ressources

Une fois que vous avez terminé, supprimez les ressources associées de l’espace de travail :

Exécutez le code suivant pour supprimer le point de terminaison de lot et ses déploiements sous-jacents. Utilisez --yes pour confirmer la suppression.

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

(Facultatif) Supprimez le calcul, sauf si vous comptez réutiliser votre cluster de calcul dans des déploiements ultérieurs.

az ml compute delete -n batch-cluster

Étapes suivantes