Exécuter un pipeline - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exécuter un pipeline

Après avoir défini les étapes de votre pipeline sous forme de graphe acyclique dirigé (DAG), vous pouvez exécuter votre pipeline, qui exécute les étapes définies dans votre. DAG Les procédures pas à pas suivantes vous montrent comment exécuter un SageMaker pipeline Amazon à l'aide de l'éditeur drag-and-drop visuel d'Amazon SageMaker Studio ou d'Amazon Python SageMaker . SDK

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

Studio
  1. Ouvrez SageMaker Studio en suivant les instructions de la section Lancer Amazon SageMaker Studio.

  2. Dans le volet de navigation de gauche, sélectionnez 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. Sélectionnez un nom de pipeline.

  5. Choisissez l'onglet Exécutions.

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

    • Nom : nom propre à votre compte dans la AWS région.

    • Description : description facultative de votre exécution.

    • ProcessingInstanceType— Le type d'EC2instance Amazon à utiliser pour la tâche de traitement.

    • TrainingInstanceType— Le type d'EC2instance Amazon à utiliser pour le travail de formation

    • InputData— De l'Amazon S3 URI aux données d'entrée.

    • PreprocessScript— De l'Amazon S3 URI au script de prétraitement.

    • EvaluateScript— De l'Amazon S3 URI au script d'évaluation du modèle.

    • AccuracyConditionThreshold— Le seuil de précision du modèle à atteindre pour enregistrer le modèle dans le registre.

    • ModelGroup— Le registre dans lequel enregistrer le modèle.

    • MaximumParallelTrainingJobs— Le nombre maximum de tâches de formation à exécuter en parallèle.

    • MaximumTrainingJobs— Le nombre maximum de tâches de formation à exécuter.

  7. Sélectionnez Create (Créer).

Note

Si votre pipeline échoue, le bandeau d'état affichera le statut Échoué. 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 Lancer 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 Executions (Exécutions) ou Graph (Graphique) de la liste d'exécution, choisissez Create execution (Créer une exécution).

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

    • Name (Nom) – Doit être unique dans votre compte et au sein d'une région AWS .

    • ProcessingInstanceCount— Le nombre d'instances à utiliser pour le traitement.

    • ModelApprovalStatus— Pour votre commodité.

    • InputDataUrl— L'Amazon S3 URI des données d'entrée.

  8. Sélectionnez Démarrer.

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

Pour arrêter la course, choisissez Arrêter sur le bandeau d'état. 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, le bandeau d'état affichera le statut Échoué. 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.

Après avoir créé une définition de pipeline à l'aide de SageMaker PythonSDK, vous pouvez la soumettre SageMaker pour démarrer 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 SageMaker bloc-notes. 

  • 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 du JSON pipeline 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-le à jour s'il en existe un. 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 modèle générée par l'RegisterModelétape est automatiquement prête à être déployée via des pipelines CI/CD, tels que Projects. SageMaker Pour de plus amples informations, veuillez consulter MLOpsAutomatisation avec des SageMaker projets.

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