Partager via


Déployer des travaux de pipeline existants sur des points de terminaison de lot

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

Les points de terminaison de lot vous permettent de déployer des composants de pipeline, ce qui offre un moyen pratique de rendre opérationnels les pipelines dans Azure Machine Learning. Les points de terminaison de lot acceptent les composants de pipeline pour le déploiement. Toutefois, si vous avez déjà un travail de pipeline qui s’exécute correctement, Azure Machine Learning peut accepter ce travail comme entrée dans votre point de terminaison de lot et créer automatiquement le composant de pipeline pour vous. Dans cet article, vous allez apprendre à utiliser votre travail de pipeline existant comme entrée pour le déploiement par lots.

Vous allez apprendre à :

  • Exécuter et créer le travail de pipeline que vous souhaitez déployer
  • Créer un déploiement par lots à partir du travail existant
  • test du déploiement

À propos de cet exemple

Dans cet exemple, nous allons déployer un pipeline composé d’un simple travail de commande qui affiche « bonjour ! ». Au lieu d’inscrire le composant de pipeline avant le déploiement, nous indiquons un travail de pipeline existant à utiliser pour le déploiement. Azure Machine Learning crée alors automatiquement le composant de pipeline et le déploie en tant que composant de pipeline de point de terminaison de lot.

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

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>

Exécuter le travail de pipeline que vous souhaitez déployer

Dans cette section, nous commençons par exécuter un travail de pipeline :

Le fichier pipeline-job.yml suivant contient la configuration du travail de pipeline :

pipeline-job.yml

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline

experiment_name: hello-pipeline-batch
display_name: hello-pipeline-batch-job
description: This job demonstrates how to run the a pipeline component in a pipeline job. You can use this example to test a component in an standalone job before deploying it in an endpoint.

compute: batch-cluster
component: hello-component/hello.yml

Créez le travail de pipeline :

JOB_NAME=$(az ml job create -f pipeline-job.yml --query name -o tsv)

Créer un point de terminaison de traitement de lots

Avant de déployer le travail de pipeline, nous devons déployer un point de terminaison de lot pour héberger le déploiement.

  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 travail de pipeline

Pour déployer le composant de pipeline, nous devons créer un déploiement par lots à partir du travail existant.

  1. Nous devons indiquer à Azure Machine Learning le nom du travail que nous voulons déployer. Dans notre cas, ce travail est indiqué dans la variable suivante :

    echo $JOB_NAME
    
  2. Configurez le déploiement.

    Le fichier deployment-from-job.yml contient la configuration du déploiement. Notez comment nous utilisons la clé job_definition au lieu de component pour indiquer que ce déploiement est créé à partir d’un travail de pipeline :

    deployment-from-job.yml

    $schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json
    name: hello-batch-from-job
    endpoint_name: hello-pipeline-batch
    type: pipeline
    job_definition: azureml:job_name_placeholder
    settings:
        continue_on_step_failure: false
        default_compute: batch-cluster
    

    Conseil

    Cette configuration suppose que vous disposez d’un cluster de calcul nommé batch-cluster. Vous pouvez remplacer cette valeur par le nom de votre 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 --set job_definition=azureml:$JOB_NAME -f deployment-from-job.yml
    

    Conseil

    Notez l’utilisation de la clé --set job_definition=azureml:$JOB_NAME. Étant donné que les noms des travaux sont uniques, la commande --set est utilisée ici pour modifier le nom du travail lorsque vous l’exécutez dans votre espace de travail.

  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)

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

Étapes suivantes