

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configura Debugger per la cessazione automatica dei lavori di formazione utilizzando e Lambda CloudWatch
<a name="debugger-stop-training"></a>

**Nota**  
Amazon SageMaker Debugger non è più aperto a nuovi clienti. I clienti esistenti possono continuare a utilizzare il servizio normalmente. AWS continua a investire in miglioramenti della sicurezza e della disponibilità di Debugger, ma non prevediamo di introdurre nuove funzionalità. Per ulteriori informazioni, consulta [Modifica della disponibilità del debugger](debugger-availability-change.md). 

Le regole Debugger monitorano lo stato del processo di formazione e una regola CloudWatch Events controlla lo stato di valutazione del lavoro di formazione delle regole Debugger. Le sezioni seguenti descrivono il processo necessario per automatizzare la cessazione del lavoro di formazione utilizzando e Lambda. CloudWatch 

**Topics**
+ [Fase 1: creare una funzione Lambda](#debugger-lambda-function-create)
+ [Fase 2: configurare la funzione Lambda](#debugger-lambda-function-configure)
+ [Passaggio 3: creare una regola per CloudWatch gli eventi e collegarla alla funzione Lambda per Debugger](#debugger-cloudwatch-events)

## Fase 1: creare una funzione Lambda
<a name="debugger-lambda-function-create"></a>

**Come creare una funzione Lambda**

1. Apri la console all'indirizzo. AWS Lambda [ https://console.aws.amazon.com/lambda/ ](https://console.aws.amazon.com/lambda/)

1. Nel riquadro di navigazione a sinistra, scegli **Funzioni**, quindi scegli **Crea funzione**.

1. Nella pagina **Crea funzione**, scegli l’opzione **Crea da zero**.

1. Nella sezione **Informazioni di base**, inserisci un **Nome funzione** (ad esempio, **debugger-rule-stop-training-job**).

1. In **Runtime**, scegliere **Python 3.7**.

1. Per **Autorizzazioni**, espandi l'opzione a discesa e scegli **Cambia il ruolo di esecuzione predefinito**.

1. Per il ruolo di ** esecuzione**, scegli ** Usa un ruolo esistente ** e scegli il ruolo IAM da utilizzare per i lavori di formazione sull' SageMaker IA.
**Nota**  
Assicurati di utilizzare il ruolo di esecuzione con `AmazonSageMakerFullAccess` e `AWSLambdaBasicExecutionRole` collegati. In caso contrario, la funzione Lambda non reagirà correttamente alle modifiche allo stato della regola di Debugger del processo di addestramento. Se non sei sicuro del ruolo di esecuzione utilizzato, esegui il codice seguente in una cella del notebook Jupyter per recuperare l'output del ruolo di esecuzione:  

   ```
   import sagemaker
   from sagemaker.core.helper.session_helper import get_execution_role
   get_execution_role()
   ```

1. Nella parte inferiore della pagina, scegli **Crea funzione**.

La figura seguente mostra un esempio della pagina **Crea funzione** con i campi di input e le selezioni completati.

![Pagina Crea Funzione.](https://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/debugger/debugger-lambda-create.png)


## Fase 2: configurare la funzione Lambda
<a name="debugger-lambda-function-configure"></a>

**Per configurare la funzione Lambda**

1. Nella sezione **Codice funzione** della pagina di configurazione, incolla il seguente script Python nel riquadro dell'editor di codice Lambda. La `lambda_handler` funzione monitora lo stato di valutazione delle regole del Debugger raccolto da CloudWatch e attiva l'operazione dell'`StopTrainingJob`API. Il AWS SDK per Python (Boto3) `client` for SageMaker AI fornisce un metodo di alto livello che attiva il `stop_training_job` funzionamento dell'API. `StopTrainingJob`

   ```
   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
   ```

   Per ulteriori informazioni sull'interfaccia dell'editor di codice Lambda, consulta [ Creazione di funzioni utilizzando l'editor della console AWS Lambda. ](https://docs.aws.amazon.com/lambda/latest/dg/code-editor.html)

1. Salta tutte le altre impostazioni e scegli **Salva** nella parte superiore della pagina di configurazione.

## Passaggio 3: creare una regola per CloudWatch gli eventi e collegarla alla funzione Lambda per Debugger
<a name="debugger-cloudwatch-events"></a>

**Per creare una regola CloudWatch Events e collegarla alla funzione Lambda per Debugger**

1. Apri la console all' CloudWatch indirizzo. [ https://console.aws.amazon.com/cloudwatch/ ](https://console.aws.amazon.com/cloudwatch/)

1. Nel pannello di navigazione a sinistra, scegli **Regole** sotto al nodo **Eventi**.

1. Scegli **Crea regola**.

1. Nella ** sezione Origine dell'**evento della ** pagina ** Passaggio 1: creazione della regola, scegli ** SageMaker AI ** come Nome ** del ** servizio e scegli ** SageMaker AI Training Job State Change ** per il tipo di ** evento**. L'anteprima del modello di evento deve apparire simile alle seguenti stringhe JSON di esempio: 

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

1. Nella sezione **Target**, scegli **Aggiungi target\*** e scegli la funzione Lambda **debugger-rule-stop-training-job** che hai creato. Questo passaggio collega la regola CloudWatch Events con la funzione Lambda.

1. Scegli **Configura dettagli** e vai alla pagina **Fase 2: configurare i dettagli della regola**.

1. Specifica il nome della definizione della CloudWatch regola. Ad esempio, **debugger-cw-event-rule**.

1. Per finire, scegli **Crea regola**.

1. Torna alla pagina di configurazione della funzione Lambda e aggiorna la pagina. Verifica che sia configurata correttamente nel pannello **Designer**. La regola CloudWatch Events deve essere registrata come trigger per la funzione Lambda. Il design della configurazione deve essere simile all'esempio seguente.  
<a name="lambda-designer-example"></a>![Pannello di progettazione per la CloudWatch configurazione.](https://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/debugger/debugger-lambda-designer.png)