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 o Amazon CloudWatch e AWS Lambda
O Amazon CloudWatch coleta logs de trabalho de treinamento do modelo Amazon SageMaker e logs de trabalhos de processamento de regras do Amazon SageMaker Debugger. Configure o Debugger com o Amazon CloudWatch Events e o AWS Lambda para tomar medidas com base no status da avaliação da regra do Debugger.
CloudWatch Logs para regras do Debugger e trabalhos de treinamento
Para encontrar logs de tarefas de treinamento e logs de tarefas de regras do Debugger
Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação esquerdo embaixo do nó Log, escolha Grupos de logs.
-
Na lista de grupos de logs, faça o seguinte:
-
Escolha /aws/SageMaker/TrainingJobs para logs de trabalhos de treinamento.
-
Escolha /aws/SageMaker/ProcessingJobs para os logs de trabalhos da regra do Debugger.
-
Você pode usar o status do trabalho da regra de treinamento e do Debugger nos logs do CloudWatch para realizar outras ações quando houver problemas de treinamento.
Para obter mais informações sobre o monitoramento de trabalhos de treinamento usando o CloudWatch, consulte Monitorar o Amazon SageMaker.
Configure o Debugger para o encerramento automatizado de trabalhos 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.
Etapa 1: Criar uma função do Lambda
Como criar uma função do Lambda
Abra o console do AWS Lambda em https://console.aws.amazon.com/lambda/
. -
No painel de navegação, escolha Funções e escolha 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 (Tempo de execução), escolha Python 3.7.
-
Em Permissões, expanda a opção suspensa e escolha Alterar função de execução padrão.
-
Em Função de execução, escolha Usar uma função existente e escolha a função do IAM que você usa para trabalhos de treinamento no SageMaker.
nota
Certifique-se de usar a função de execução com
AmazonSageMakerFullAccess
eAWSLambdaBasicExecutionRole
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()
-
Na parte inferior da página, escolha 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_handler
monitora o status de avaliação da regra do Debugger coletado pelo CloudWatch e aciona a operação da APIStopTrainingJob
. O AWS SDK for Python (Boto3)client
para SageMaker fornece um método de alto nível,stop_training_job
, que aciona a operação da 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 None
Para 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: criar uma regra do CloudWatch Events e vinculá-la à função do Lambda para o Debugger
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 esquerdo, escolha Regras no nó Eventos.
-
Escolha Create rule (Criar regra).
-
Na seção Origem do evento da página Etapa 1: criar regra, escolha SageMaker para Nome do serviço e escolha SageMaker Training 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" ] }
-
Na seção Targets, 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 exemplo a seguir:
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.
-
Amazon SageMaker Debugger — Reagindo ao CloudWatch Events a partir de regras
Este notebook de exemplo executa um trabalho de treinamento que apresenta um problema de gradiente de desaparecimento. A regra VanishingGradient integrada do Debugger é usada durante a construção do estimador TensorFlow do SageMaker. Quando a regra do Debugger detecta o problema, o trabalho de treinamento é encerrado.
-
Detectar treinamentos paralisados e invocar ações usando a regra do SageMaker Debugger
Este exemplo de caderno executa um script de treinamento com uma linha de código que o força a dormir por 10 minutos. A regra StalledTrainingRule integrada do Debugger invoca problemas e interrompe o trabalho de treinamento.
Desabilitar a regra do CloudWatch Events para parar de usar o encerramento automático do trabalho de treinamento
Se você quiser desabilitar o encerramento automático do trabalho de treinamento, precisará desativar a regra do CloudWatch Events. No painel do Lambda Designer, escolha o bloco EventBridge (CloudWatch Events) vinculado à função do Lambda. Isso mostra um painel EventBridge abaixo do painel Designer (por exemplo, veja a captura de tela anterior). Marque a caixa de seleção ao lado de EventBridge (CloudWatch Events): debugger-cw-event-rule e escolha Desabilitar. Se quiser usar a funcionalidade de encerramento automatizado posteriormente, você poderá habilitar a regra do CloudWatch Events novamente.