

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.

# Actions relatives aux règles à l'aide d'Amazon CloudWatch et AWS Lambda
<a name="debugger-cloudwatch-lambda"></a>

Amazon CloudWatch collecte les journaux des tâches de formation des modèles Amazon SageMaker AI et les journaux des tâches de traitement des règles Amazon SageMaker Debugger. Configurez Debugger avec Amazon CloudWatch Events et prenez des mesures en fonction AWS Lambda de l'état d'évaluation des règles du Debugger. 

## Exemples de blocs-notes
<a name="debugger-test-stop-training"></a>

Vous pouvez exécuter les exemples de blocs-notes suivants, qui sont préparés pour expérimenter l'arrêt d'une tâche de formation à l'aide d'actions sur les règles intégrées de Debugger à l'aide d'Amazon et. CloudWatch AWS Lambda
+ [Amazon SageMaker Debugger - Réagir aux CloudWatch événements à partir de règles](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-debugger/tensorflow_action_on_rule/tf-mnist-stop-training-job.html)

  Cet exemple de bloc-notes exécute une tâche d'entraînement qui présente un problème de disparition de gradient. La règle [VanishingGradient](debugger-built-in-rules.md#vanishing-gradient) intégrée du Debugger est utilisée lors de la construction de l'estimateur SageMaker AI TensorFlow . Lorsque la règle Debugger détecte le problème, la tâche d'entraînement est interrompue.
+ [Détectez les entraînements bloqués et invoquez des actions à l'aide de la règle du SageMaker débogueur](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-debugger/tensorflow_action_on_rule/detect_stalled_training_job_and_actions.html)

  Cet exemple de bloc-notes exécute un script d'entraînement avec une ligne de code qui le force à rester en veille pendant 10 minutes. La règle intégrée [StalledTrainingRrule](debugger-built-in-rules.md#stalled-training) de Debugger invoque des problèmes et arrête la tâche d'entraînement.

**Topics**
+ [Exemples de blocs-notes](#debugger-test-stop-training)
+ [CloudWatch Journaux d'accès aux règles du débogueur et aux tâches de formation](debugger-cloudwatch-metric.md)
+ [Configurer Debugger pour la fin automatique des tâches de formation à l'aide CloudWatch de Lambda](debugger-stop-training.md)
+ [Désactivez la règle CloudWatch des événements pour arrêter d'utiliser la fin automatique des tâches de formation](debugger-disable-cw.md)

# CloudWatch Journaux d'accès aux règles du débogueur et aux tâches de formation
<a name="debugger-cloudwatch-metric"></a>

Vous pouvez utiliser le statut des tâches relatives à la formation et à la règle du débogueur figurant dans les CloudWatch journaux pour prendre des mesures supplémentaires en cas de problème de formation. La procédure suivante indique comment accéder aux CloudWatch journaux associés. Pour plus d'informations sur le suivi des tâches de formation à l'aide de l'outil CloudWatch, consultez [Monitor Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-overview.html).

**Pour rechercher les journaux des tâches d’entraînement et ceux des tâches de règles Debugger**

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le panneau de navigation de gauche, sous le nœud **Log (Journal)**, choisissez **Log Groupes (Groups de journaux)**.

1. Dans la liste des groupes de journaux, procédez comme suit :
   + Choisissez**/aws/sagemaker/TrainingJobs**pour les journaux des tâches de formation.
   + Choisissez**/aws/sagemaker/ProcessingJobs**pour les journaux des tâches liées aux règles du débogueur.

# Configurer Debugger pour la fin automatique des tâches de formation à l'aide CloudWatch de Lambda
<a name="debugger-stop-training"></a>

Les règles du Debugger surveillent l'état des tâches de formation, tandis qu'une règle d' CloudWatch événements surveille l'état d'évaluation des tâches de formation des règles Debugger. Les sections suivantes décrivent le processus nécessaire pour automatiser la fin des tâches de formation à l'aide de Lambda CloudWatch et de Lambda.

**Topics**
+ [Étape 1 : créer une fonction Lambda](#debugger-lambda-function-create)
+ [Étape 2 : Configurer la fonction Lambda](#debugger-lambda-function-configure)
+ [Étape 3 : créer une règle d' CloudWatch événements et un lien vers la fonction Lambda pour Debugger](#debugger-cloudwatch-events)

## Étape 1 : créer une fonction Lambda
<a name="debugger-lambda-function-create"></a>

**Pour créer une fonction Lambda**

1. Ouvrez la AWS Lambda console à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Dans le panneau de navigation, choisissez **Functions (Fonctions)**, puis **Create function (Créer une fonction)**.

1. Sur la page **Create function (Créer une fonction)**, choisissez l'option **Author from scratch (Créer à partir de zéro)**.

1. Dans la section **Informations de base**, entrez le **nom d'une fonction** (par exemple, **debugger-rule-stop-training-job**).

1. Pour **Runtime**, sélectionnez **Python 3.7**.

1. Pour **Permissions (Autorisations)**, développez la liste d'options déroulante et choisissez **Change default execution role (Modifier le rôle d'exécution par défaut)**.

1. Pour **le rôle d'exécution**, choisissez **Utiliser un rôle existant** et choisissez le rôle IAM que vous utilisez pour les tâches de formation sur l' SageMaker IA.
**Note**  
Assurez-vous d'utiliser le rôle d'exécution avec `AmazonSageMakerFullAccess` et `AWSLambdaBasicExecutionRole` attachées. Sinon, la fonction Lambda ne réagira pas correctement aux changements de statut de la règle Debugger de la tâche d'entraînement. Si vous ne savez pas quel rôle d'exécution est utilisé, exécutez le code suivant dans une cellule de bloc-notes Jupyter pour récupérer la sortie du rôle d'exécution :  

   ```
   import sagemaker
   sagemaker.get_execution_role()
   ```

1. Dans le bas de la page, choisissez **Create function**.

La figure suivante illustre un exemple de page **Create function (Créer une fonction)** avec les champs de saisie et les sélections remplis.

![\[Page Create function (Créer une fonction).\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/debugger/debugger-lambda-create.png)


## Étape 2 : Configurer la fonction Lambda
<a name="debugger-lambda-function-configure"></a>

**Pour configurer la fonction Lambda**

1. Dans la section **Function code (Code de fonction)** de la page de configuration, collez le script Python suivant dans le volet de l'éditeur de code Lambda. La `lambda_handler` fonction surveille l'état d'évaluation des règles du débogueur collecté par l'`StopTrainingJob`API CloudWatch et déclenche l'opération. Le AWS SDK pour Python (Boto3) `client` for SageMaker AI fournit une méthode de haut niveau`stop_training_job`, qui déclenche le fonctionnement de l'`StopTrainingJob`API.

   ```
   import json
   import boto3
   import logging
   
   logger = logging.getLogger()
   logger.setLevel(logging.INFO)
   
   def lambda_handler(event, context):
       training_job_name = event.get("detail").get("TrainingJobName")
       logging.info(f'Evaluating Debugger rules for training job: {training_job_name}')
       eval_statuses = event.get("detail").get("DebugRuleEvaluationStatuses", None)
   
       if eval_statuses is None or len(eval_statuses) == 0:
           logging.info("Couldn't find any debug rule statuses, skipping...")
           return {
               'statusCode': 200,
               'body': json.dumps('Nothing to do')
           }
   
       # should only attempt stopping jobs with InProgress status
       training_job_status = event.get("detail").get("TrainingJobStatus", None)
       if training_job_status != 'InProgress':
           logging.debug(f"Current Training job status({training_job_status}) is not 'InProgress'. Exiting")
           return {
               'statusCode': 200,
               'body': json.dumps('Nothing to do')
           }
   
       client = boto3.client('sagemaker')
   
       for status in eval_statuses:
           logging.info(status.get("RuleEvaluationStatus") + ', RuleEvaluationStatus=' + str(status))
           if status.get("RuleEvaluationStatus") == "IssuesFound":
               secondary_status = event.get("detail").get("SecondaryStatus", None)
               logging.info(
                   f'About to stop training job, since evaluation of rule configuration {status.get("RuleConfigurationName")} resulted in "IssuesFound". ' +
                   f'\ntraining job "{training_job_name}" status is "{training_job_status}", secondary status is "{secondary_status}"' +
                   f'\nAttempting to stop training job "{training_job_name}"'
               )
               try:
                   client.stop_training_job(
                       TrainingJobName=training_job_name
                   )
               except Exception as e:
                   logging.error(
                       "Encountered error while trying to "
                       "stop training job {}: {}".format(
                           training_job_name, str(e)
                       )
                   )
                   raise e
       return None
   ```

   Pour plus d'informations sur l'interface de l'éditeur de code Lambda, voir [Création de fonctions à l'aide de l'éditeur de console AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/code-editor.html).

1. Ignorez tous les autres paramètres et choisissez **Save (Enregistrer)** en haut de la page de configuration.

## Étape 3 : créer une règle d' CloudWatch événements et un lien vers la fonction Lambda pour Debugger
<a name="debugger-cloudwatch-events"></a>

**Pour créer une règle d' CloudWatch événements et créer un lien vers la fonction Lambda pour Debugger**

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le panneau de navigation de gauche, choisissez **Rules (Règles)** sous le nœud **Events (Événements)**.

1. Choisissez **Créer une règle**.

1. Dans la section **Source de l'événement** de la page **Étape 1 : Créer une règle**, choisissez **SageMaker AI** pour le **nom du service**, puis choisissez **SageMaker AI Training Job State Change** pour le **type d'événement**. La prévisualisation du modèle d'événement doit ressembler à l'exemple de chaînes JSON suivant : 

   ```
   {
       "source": [
           "aws.sagemaker"
       ],
       "detail-type": [
           "SageMaker Training Job State Change"
       ]
   }
   ```

1. Dans la section **Targets**, choisissez **Add target\$1, puis** choisissez la **debugger-rule-stop-trainingfonction Lambda -job** que vous avez créée. Cette étape lie la règle CloudWatch Events à la fonction Lambda.

1. Choisissez **Configure details (Configurer les détails)** et accédez à la page **Step 2: Configure rule details (Étape 2 : Configurer les détails de la règle)**.

1. Spécifiez le nom de la définition de CloudWatch règle. Par exemple, **debugger-cw-event-rule**.

1. Choisissez **Create rule (Créer la règle)** pour terminer.

1. Revenez dans la page de configuration de la fonction Lambda et actualisez la page. Vérifiez qu'elle est correctement configurée dans le panneau **Designer (Concepteur)**. La règle CloudWatch Events doit être enregistrée comme déclencheur pour la fonction Lambda. La conception de configuration doit ressembler à l'exemple suivant :  
<a name="lambda-designer-example"></a>![\[Panneau de conception pour la CloudWatch configuration.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/debugger/debugger-lambda-designer.png)

# Désactivez la règle CloudWatch des événements pour arrêter d'utiliser la fin automatique des tâches de formation
<a name="debugger-disable-cw"></a>

Si vous souhaitez désactiver l'arrêt automatique des tâches de formation, vous devez désactiver la règle CloudWatch des événements. Dans le panneau Lambda **Designer**, choisissez le bloc **EventBridge (CloudWatch Events)** lié à la fonction Lambda. Cela montre un **EventBridge**panneau situé sous le panneau **Designer** (par exemple, voir la capture d'écran précédente). Cochez la case à côté de **EventBridge (CloudWatch Événements) : debugger-cw-event-rule**, puis choisissez **Désactiver**. Si vous souhaitez utiliser la fonctionnalité de résiliation automatique ultérieurement, vous pouvez réactiver la règle CloudWatch Événements.