Configuração do Depurador para o encerramento automatizado do trabalho de treinamento usando o CloudWatch e o Lambda
As regras do Debugger monitoram o status do trabalho de treinamento, e uma regra do CloudWatch Events monitora o status da avaliação do trabalho de treinamento da regra do Debugger. As seções a seguir descrevem o processo necessário para automatizar o encerramento do trabalho de treinamento usando o CloudWatch e o Lambda.
Tópicos
Etapa 1: criar uma função do Lambda
Como criar uma função do Lambda
Abra o console AWS Lambda em https://console.aws.amazon.com/lambda/
. -
No painel de navegação à esquerda, selecione Funções e selecione Criar função.
-
Na página Criar função, escolha a opção Criar do zero.
-
Na seção Informações básicas, insira um nome de função (por exemplo, debugger-rule-stop-training-job).
-
Em Runtime, selecione Python 3.7.
-
Em Permissões, expanda a opção suspensa e escolha Alterar função de execução padrão.
-
Em Perfil de execução, escolha Usar um perfil existente e escolha o perfil do IAM que você usa para tarefas de treinamento no SageMaker AI.
nota
Certifique-se de usar a função de execução com
AmazonSageMakerFullAccesseAWSLambdaBasicExecutionRoleanexados. Caso contrário, a função do Lambda não reagirá adequadamente às mudanças de status da regra do Debugger do trabalho de treinamento. Se você não tiver certeza de qual função de execução está sendo usada, execute o código a seguir em uma célula do Caderno Jupyter para recuperar a saída da função de execução:import sagemaker sagemaker.get_execution_role() -
Na parte inferior da página, selecione Create function.
A figura a seguir mostra um exemplo da página Criar função com os campos de entrada e as seleções concluídos.
Etapa 2: configurar a função do Lambda
Para configurar a função do Lambda
-
Na seção Código da função da página de configuração, cole o seguinte script Python no painel do editor de código Lambda: A função
lambda_handlermonitora o status de avaliação da regra do Debugger coletado pelo CloudWatch e aciona a operação da APIStopTrainingJob. OclientAWS SDK para Python (Boto3) para o SageMaker AI oferece um método geral,stop_training_job, que aciona a operação de APIStopTrainingJob.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 NonePara obter mais informações sobre a interface do editor de código Lambda, consulte Criando funções usando o editor do console AWS Lambda.
-
Ignore todas as outras configurações e escolha Salvar na parte superior da página de configuração.
Etapa 3: Criação da regra do CloudWatch Events e vinculação com a função do Lambda para o Depurador
Para criar uma regra do CloudWatch Events e vinculá-la à função do Lambda para o Debugger
Abra o console do CloudWatch, em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação à esquerda, selecione Regras sob o nó Eventos.
-
Escolha Criar regra.
-
Na seção Origem do evento da página Etapa 1: criar regra, escolha SageMaker AI em Nome do serviço e selecione Alteração de estado de tarefa de treinamento do SageMaker AI em Tipo de evento. A visualização do padrão de evento deve ser semelhante aos seguintes exemplos de strings JSON:
{ "source": [ "aws.sagemaker" ], "detail-type": [ "SageMaker Training Job State Change" ] } -
Na seção Destinos, escolha Adicionar destino* e escolha a função do Lambda debugger-rule-stop-training-job que você criou. Esta etapa vincula a regra do CloudWatch Events à função do Lambda.
-
Escolha Configurar detalhes e vá para a página Etapa 2: configurar detalhes da regra.
-
Especifique o nome da definição da regra do CloudWatch. Por exemplo, debugger-cw-event-rule.
-
Escolha Criar regra para concluir.
-
Volte para a página de configuração da função do Lambda e atualize a página. Confirme se está configurado corretamente no painel Designer. A regra do CloudWatch Events deve ser registrada como um gatilho para a função do Lambda. O design da configuração deve ser semelhante ao seguinte exemplo: