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 l'interruzione automatica del processo di formazione utilizzando e 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. Le sezioni seguenti descrivono il processo necessario per automatizzare l'interruzione dei lavori di formazione utilizzando e CloudWatch Lambda.
Argomenti
Fase 1: Creazione di una funzione Lambda
Per creare una funzione Lambda
Apri la console all'indirizzo. AWS Lambda https://console.aws.amazon.com/lambda/
-
Nel riquadro di navigazione a sinistra, scegli Funzioni, quindi scegli Crea funzione.
-
Nella pagina Crea funzione, scegli l’opzione Crea da zero.
-
Nella sezione Informazioni di base, inserisci il nome di una funzione (ad esempio, debugger-rule-stop-training-job).
-
In Runtime, scegliere Python 3.7.
-
Per Autorizzazioni, espandi l'opzione a discesa e scegli Cambia il ruolo di esecuzione predefinito.
-
Per Ruolo di esecuzione, scegli Usa un ruolo esistente e scegli il IAM ruolo da utilizzare per i lavori di formazione sull' SageMaker intelligenza artificiale.
Nota
Assicurati di utilizzare il ruolo di esecuzione con
AmazonSageMakerFullAccess
eAWSLambdaBasicExecutionRole
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 sagemaker.get_execution_role()
-
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.
Fase 2: configurare la funzione Lambda
Per configurare la funzione Lambda
-
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.StopTrainingJob
API The AWS SDK for Python (Boto3)client
for SageMaker AI fornisce un metodo di alto livello che attiva l'operazione.stop_training_job
StopTrainingJob
APIimport 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.
-
Salta tutte le altre impostazioni e scegli Salva nella parte superiore della pagina di configurazione.
Passaggio 3: creare una regola CloudWatch degli eventi e collegarsi alla funzione Lambda per Debugger
Per creare una regola CloudWatch Events e collegarsi alla funzione Lambda per Debugger
Apri la console all'indirizzo. CloudWatch https://console.aws.amazon.com/cloudwatch/
-
Nel pannello di navigazione a sinistra, scegli Regole sotto al nodo Eventi.
-
Scegli Crea regola.
-
Nella sezione Origine dell'evento della pagina Step 1: Create rule, scegli SageMaker AI come Service Name e scegli SageMaker AI Training Job State Change for Event Type. L'Event Pattern Preview dovrebbe avere l'aspetto delle seguenti JSON stringhe di esempio:
{ "source": [ "aws.sagemaker" ], "detail-type": [ "SageMaker Training Job State Change" ] }
-
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.
-
Scegli Configura dettagli e vai alla pagina Fase 2: configurare i dettagli della regola.
-
Specificate il nome della definizione della CloudWatch regola. Ad esempio debugger-cw-event-rule.
-
Per finire, scegli Crea regola.
-
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.