Exécuter un pipeline - Amazon SageMaker AI

Exécuter un pipeline

Après avoir défini les étapes de votre pipeline sous la forme d’un graphe orienté acyclique (DAG), vous pouvez exécuter votre pipeline, qui exécute les étapes définies dans votre graphe DAG. Les procédures pas à pas suivantes vous montrent comment exécuter un pipeline Amazon SageMaker AI à l’aide de l’éditeur visuel par glisser-déposer d’Amazon SageMaker Studio ou du kit Amazon SageMaker Python SDK.

Pour démarrer une nouvelle exécution de votre pipeline, procédez comme suit :

Studio
  1. Ouvrez SageMaker Studio en suivant les instructions fournies dans Lancement d’Amazon SageMaker Studio.

  2. Dans le volet de navigation de gauche, choisissez Pipelines.

  3. (Facultatif) Pour filtrer la liste des pipelines par nom, entrez un nom de pipeline complet ou partiel dans le champ de recherche.

  4. Choisissez un nom de pipeline pour ouvrir la vue des détails du pipeline.

  5. Choisissez Éditeur visuel en haut à droite.

  6. Pour démarrer une exécution à partir de la dernière version, choisissez Exécutions.

  7. Pour démarrer une exécution à partir d’une version spécifique, procédez comme suit :

    • Choisissez l’icône de version dans la barre d’outils inférieure pour ouvrir le panneau des versions.

    • Choisissez la version de pipeline que vous souhaitez exécuter.

    • Passez le curseur sur l’élément de version pour afficher le menu à trois points, puis choisissez Exécuter.

    • (Facultatif) Pour visualiser une version précédente du pipeline, choisissez Aperçu dans le menu à trois points du panneau des versions. Vous pouvez également modifier la version en choisissant Modifier dans la barre de notification.

Note

Si votre pipeline échoue, la bannière de statut affiche le statut Échec. Après avoir résolu l’étape qui a échoué, choisissez Retry (Réessayer) sur la bannière d’état pour reprendre l’exécution du pipeline à partir de cette étape.

Studio Classic
  1. Connectez-vous à Amazon SageMaker Studio Classic. Pour plus d’informations, consultez Lancement d’Amazon SageMaker Studio Classic.

  2. Dans la barre latérale de Studio Classic, choisissez l’icône Accueil ( Black square icon representing a placeholder or empty image. ).

  3. Sélectionnez Pipelines dans le menu.

  4. Pour affiner la liste des pipelines par nom, entrez un nom complet ou partiel de pipeline dans le champ de recherche.

  5. Sélectionnez un nom de pipeline.

  6. Dans l’onglet Exécutions ou Graphique de la liste d’exécution, choisissez Créer une exécution.

  7. Saisissez ou mettez à jour les informations requises suivantes :

    • Nom : doit être unique dans votre compte et au sein d’une région AWS.

    • ProcessementInstanceCount : nombre d’instances à utiliser pour le traitement.

    • ModelApprovalStatus – Pour votre commodité.

    • InputDataUrl : URI Amazon S3 des données d’entrée.

  8. Sélectionnez Démarrer.

Une fois que votre pipeline est en cours d’exécution, vous pouvez visualiser les détails de l’exécution en choisissant Afficher les détails sur la bannière de statut.

Pour arrêter l’exécution, choisissez Arrêter sur la bannière de statut. Pour reprendre l’exécution à partir de l’endroit où elle a été arrêtée, choisissez Resume (Reprendre) sur la bannière d’état.

Note

Si votre pipeline échoue, la bannière de statut affiche le statut Échec. Après avoir résolu l’étape qui a échoué, choisissez Retry (Réessayer) sur la bannière d’état pour reprendre l’exécution du pipeline à partir de cette étape.

Une fois que vous avez créé une définition de pipeline à l’aide du kit SageMaker AI Python SDK, vous pouvez l’envoyer à SageMaker AI pour lancer votre exécution. Le tutoriel suivant montre comment envoyer un pipeline, lancer une exécution, examiner les résultats de cette exécution et supprimer votre pipeline.

Prérequis

Pour suivre ce tutoriel, vous devez disposer de la configuration suivante :

  • Une instance de bloc-notes Amazon SageMaker. 

  • Une définition du pipeline Pipelines. Ce tutoriel suppose que vous utilisez la définition de pipeline créée en suivant le tutoriel Définition d’un pipeline.

Étape 1 : démarrer le pipeline

Tout d'abord, vous devez démarrer le pipeline.

Pour démarrer le pipeline
  1. Examinez la définition de pipeline JSON pour vous assurer qu’elle est bien formée.

    import json json.loads(pipeline.definition())
  2. Soumettez la définition du pipeline au service Pipelines pour créer un pipeline s’il n’existe pas, ou mettez à jour le pipeline s’il existe. Le rôle transmis est utilisé par Pipelines pour créer toutes les tâches définies dans les étapes.

    pipeline.upsert(role_arn=role)
  3. Démarrez l’exécution d’un pipeline.

    execution = pipeline.start()

Étape 2 : examiner l'exécution d'un pipeline

Ensuite, vous devez examiner l'exécution du pipeline.

Pour examiner l'exécution d'un pipeline
  1. Décrivez le statut d'exécution du pipeline pour vous assurer qu'il a été créé et démarré avec succès.

    execution.describe()
  2. Attendez que l'exécution soit terminée.

    execution.wait()
  3. Répertoriez les étapes d'exécution et leur état.

    execution.list_steps()

    Le résultat doit être similaire à ce qui suit :

    [{'StepName': 'AbaloneTransform', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 870000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 45, 50, 492000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'TransformJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:transform-job/pipelines-cfvy1tjuxdq8-abalonetransform-ptyjoef3jy'}}}, {'StepName': 'AbaloneRegisterModel', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 929000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 28, 15000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'RegisterModel': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model-package/abalonemodelpackagegroupname/1'}}}, {'StepName': 'AbaloneCreateModel', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 895000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 708000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'Model': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model/pipelines-cfvy1tjuxdq8-abalonecreatemodel-jl94rai0ra'}}}, {'StepName': 'AbaloneMSECond', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 25, 558000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 329000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'Condition': {'Outcome': 'True'}}}, {'StepName': 'AbaloneEval', 'StartTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 767000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 18, 80000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneeval-zfraozhmny'}}}, {'StepName': 'AbaloneTrain', 'StartTime': datetime.datetime(2020, 11, 21, 2, 34, 55, 867000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 34000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'TrainingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:training-job/pipelines-cfvy1tjuxdq8-abalonetrain-tavd6f3wdf'}}}, {'StepName': 'AbaloneProcess', 'StartTime': datetime.datetime(2020, 11, 21, 2, 30, 27, 160000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 34, 48, 390000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneprocess-mgqyfdujcj'}}}]
  4. Une fois l'exécution de votre pipeline terminée, téléchargez le fichier evaluation.json résultant d'Amazon S3 pour examiner le rapport.

    evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format( step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"] )) json.loads(evaluation_json)

Étape 3 : remplacer les paramètres par défaut d'une exécution de pipeline

Vous pouvez exécuter d'autres exécutions du pipeline en spécifiant différents paramètres de pipeline pour remplacer les valeurs par défaut.

Pour remplacer les paramètres par défaut
  1. Créez l’exécution du pipeline. Cela démarre une autre exécution de pipeline avec le statut d'approbation de modèle défini sur « Approuvé ». Cela signifie que la version du package de modèles générée par l’étape RegisterModel est automatiquement prête à être déployée via des pipelines CI/CD, par exemple avec SageMaker Projects. Pour plus d’informations, consultez Automatisation MLOps avec les projets SageMaker.

    execution = pipeline.start( parameters=dict( ModelApprovalStatus="Approved", ) )
  2. Attendez que l'exécution soit terminée.

    execution.wait()
  3. Répertoriez les étapes d'exécution et leur état.

    execution.list_steps()
  4. Une fois l'exécution de votre pipeline terminée, téléchargez le fichier evaluation.json résultant d'Amazon S3 pour examiner le rapport.

    evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format( step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"] )) json.loads(evaluation_json)

Étape 4 : arrêter et supprimer une exécution de pipeline

Lorsque vous n'avez plus besoin de votre pipeline, vous pouvez arrêter toutes les exécutions en cours et supprimer le pipeline.

Pour arrêter et supprimer une exécution de pipeline
  1. Arrêtez l'exécution du pipeline.

    execution.stop()
  2. Supprimez le pipeline.

    pipeline.delete()