Crie ações sobre regras usando a Amazon CloudWatch e AWS Lambda - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Crie ações sobre regras usando a Amazon CloudWatch e AWS Lambda

A Amazon CloudWatch coleta registros de trabalhos de treinamento de SageMaker modelos da Amazon e registros de trabalhos de processamento de regras do Amazon SageMaker Debugger. Configure o Debugger com o Amazon CloudWatch Events e tome medidas com base no AWS Lambda status de avaliação da regra do Debugger.

CloudWatch Registros de regras do depurador e trabalhos de treinamento

Para encontrar logs de tarefas de treinamento e logs de tarefas de regras do Debugger
  1. Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação esquerdo embaixo do nó Log, escolha Grupos de logs.

  3. Na lista de grupos de logs, faça o seguinte:

    • Escolha TrainingJobs/aws/sagemaker/ para registros de tarefas de treinamento.

    • Escolha ProcessingJobs/aws/sagemaker/ para os registros de tarefas da regra do Debugger.

Você pode usar o status do trabalho da regra de treinamento e do Debugger nos CloudWatch registros para realizar outras ações quando houver problemas de treinamento.

Para obter mais informações sobre como monitorar trabalhos de treinamento usando CloudWatch, consulte Monitore a Amazon SageMaker.

Configurar o Debugger para treinamento automatizado: Encerramento de Job usando e Lambda CloudWatch

As regras do Debugger monitoram o status do trabalho de treinamento, e uma regra de CloudWatch Eventos observa o status da avaliação do trabalho de treinamento da regra do Debugger.

Etapa 1: Criar uma função do Lambda

Criar uma função do Lambda
  1. Abra o AWS Lambda console em https://console.aws.amazon.com/lambda/.

  2. No painel de navegação, escolha Funções e escolha Criar função.

  3. Na página Criar função, escolha a opção Criar do zero.

  4. Na seção Informações básicas, insira um nome de função (por exemplo, debugger-rule-stop-training-job).

  5. Em Runtime (Tempo de execução), selecione Python 3.7.

  6. Em Permissões, expanda a opção suspensa e escolha Alterar função de execução padrão.

  7. Em Função de execução, escolha Usar uma função existente e escolha a função do IAM que você usa para treinar trabalhos SageMaker.

    nota

    Certifique-se de usar a função de execução com AmazonSageMakerFullAccess e AWSLambdaBasicExecutionRole anexados. 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 Bloco de anotações Jupyter para recuperar a saída da função de execução:

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

Página Criar função.

Etapa 2: configurar a função do Lambda

Para configurar a função do Lambda
  1. 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 lambda_handler função monitora o status de avaliação da regra do Debugger coletado CloudWatch e aciona a operação da API. StopTrainingJob O AWS SDK for Python (Boto3) client for SageMaker fornece um método de alto nível,stop_training_job, que aciona a operação da 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

    Para obter mais informações sobre a interface do editor de código Lambda, consulte Criação de funções usando o editor do console AWS Lambda.

  2. Ignore todas as outras configurações e escolha Salvar na parte superior da página de configuração.

Etapa 3: criar uma regra de CloudWatch eventos e vincular à função Lambda para depurador

Para criar uma regra de CloudWatch eventos e vincular à função Lambda para o Debugger
  1. Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação esquerdo, escolha Regras no nó Eventos.

  3. Escolha a opção Criar regra.

  4. Na seção Origem do evento da página Etapa 1: Criar regra, escolha SageMakerNome do serviço e escolha SageMakerTraining Job State Change para 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" ] }
  5. Na seção Targets, escolha Add target* e escolha a função debugger-rule-stop-training-job Lambda que você criou. Essa etapa vincula a regra de CloudWatch Eventos à função Lambda.

  6. Escolha Configurar detalhes e vá para a página Etapa 2: configurar detalhes da regra.

  7. Especifique o nome da definição da CloudWatch regra. Por exemplo, debugger-cw-event-rule.

  8. Escolha Criar regra para concluir.

  9. 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 de CloudWatch eventos deve ser registrada como um gatilho para a função Lambda. O design da configuração deve ser semelhante ao exemplo a seguir:

    Painel de design para a CloudWatch configuração.

Execute exemplos de cadernos para testar o encerramento automatizado de trabalhos de treinamento

Você pode executar os seguintes exemplos de cadernos, que estão preparados para experimentar a interrupção de um trabalho de treinamento usando as regras integradas do Debugger.

Desative a regra de CloudWatch eventos para parar de usar o Automated Training Job Termination

Se você quiser desativar o encerramento automático do trabalho de treinamento, precisará desativar a regra de CloudWatch Eventos. No painel Lambda Designer, escolha o bloco EventBridge (CloudWatch Eventos) vinculado à função Lambda. Isso mostra um EventBridgepainel abaixo do painel Designer (por exemplo, veja a captura de tela anterior). Marque a caixa de seleção ao lado de EventBridge (CloudWatch Eventos): debugger-cw-event-rule e escolha Desativar. Se quiser usar a funcionalidade de encerramento automático posteriormente, você pode ativar a regra de CloudWatch Eventos novamente.