Crea azioni sulle regole utilizzando Amazon CloudWatch e AWS Lambda - Amazon SageMaker

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à.

Crea azioni sulle regole utilizzando Amazon CloudWatch e AWS Lambda

Amazon CloudWatch raccoglie i log dei lavori di formazione dei SageMaker modelli Amazon e i log dei lavori di elaborazione delle regole di Amazon SageMaker Debugger. Configura Debugger con Amazon CloudWatch Events e intraprendi azioni in base AWS Lambda allo stato di valutazione delle regole del Debugger.

CloudWatch Registri relativi alle regole del debugger e ai lavori di formazione

Per trovare i log dei processi di addestramento e i log di elaborazione delle regole di Debugger
  1. Apri la console all'indirizzo https://console.aws.amazon.com/cloudwatch/ CloudWatch .

  2. Nel pannello di navigazione sulla sinistra, nel nodo Log, scegli Gruppi di log.

  3. Nell'elenco Gruppi di log, procedi come segue:

    • Scegli TrainingJobs/aws/sagemaker/ per i registri dei lavori di formazione.

    • Scegli /aws/sagemaker/ per i registri dei lavori delle regole di Debugger. ProcessingJobs

Puoi utilizzare la formazione e lo stato del lavoro della regola Debugger nei log per intraprendere ulteriori azioni in caso di problemi di formazione. CloudWatch

Per ulteriori informazioni sul monitoraggio dei lavori di formazione utilizzando CloudWatch, consulta Monitor Amazon SageMaker.

Configurazione del debugger per la formazione automatizzata Job Termination Using and Lambda CloudWatch

Le regole Debugger monitorano lo stato del processo di formazione e una regola CloudWatch Events controlla lo stato di valutazione del processo di formazione della regola Debugger.

Fase 1: Creazione di una funzione Lambda

Per creare una funzione Lambda
  1. Apri la console all'indirizzo https://console.aws.amazon.com/lambda/. AWS Lambda

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

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

  4. Nella sezione Informazioni di base, inserisci il nome di una funzione (ad esempio, debugger-rule-stop-training-job).

  5. In Runtime, scegliere Python 3.7.

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

  7. Per il ruolo di esecuzione, scegli Usa un ruolo esistente e scegli il ruolo IAM da utilizzare per i lavori di formazione. SageMaker

    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 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 sagemaker.get_execution_role()
  8. 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.

Fase 2: Configurare la funzione Lambda

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'API. StopTrainingJob Il AWS SDK for Python (Boto3) client for SageMaker fornisce un metodo di alto livello che attiva l'operazione dell'APIstop_training_job. 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.

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

Passaggio 3: creazione di una regola CloudWatch degli eventi e collegamento alla funzione Lambda per Debugger

Per creare una regola CloudWatch Events e collegarsi alla funzione Lambda per Debugger
  1. Apri la console all'indirizzo https://console.aws.amazon.com/cloudwatch/ CloudWatch .

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

  3. Scegli Crea regola.

  4. Nella sezione Origine evento della pagina Step 1: Create rule, scegliete Service Name e scegliete SageMakerSageMakerTraining Job State Change for Event Type. 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" ] }
  5. Nella sezione Target, scegli Aggiungi target* e scegli la funzione debugger-rule-stop-training-job Lambda che hai creato. Questo passaggio collega la regola CloudWatch Events alla funzione Lambda.

  6. Scegli Configura dettagli e vai alla pagina Fase 2: Configurare i dettagli della regola.

  7. Specificate il nome della definizione della CloudWatch regola. Ad esempio, debugger-cw-event-rule.

  8. Per finire, scegli Crea regola.

  9. 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.

    
                                Pannello di progettazione per la  CloudWatch  configurazione.

Eseguire notebook di esempio per testare l’interruzione automatica dei processi di addestramento

È possibile eseguire i seguenti notebook di esempio, preparati per sperimentare l'interruzione di un processo di addestramento utilizzando le regole integrate di Debugger.

Disattiva la regola CloudWatch degli eventi per smettere di usare l'Automated Training Job Termination

Se desideri disabilitare l'interruzione automatica del processo di formazione, devi disabilitare la regola CloudWatch Eventi. Nel pannello Lambda Designer, scegli il blocco EventBridge (CloudWatch Eventi) collegato alla funzione Lambda. Questo mostra un EventBridgepannello sotto il pannello Designer (ad esempio, vedi la schermata precedente). Seleziona la casella di controllo accanto a EventBridge (CloudWatch Eventi): debugger-cw-event-rule, quindi scegli Disabilita. Se desideri utilizzare la funzionalità di terminazione automatica in un secondo momento, puoi abilitare nuovamente la regola CloudWatch Events.