CloudWatch Amazon을 사용하여 규칙에 대한 작업을 생성하고 AWS Lambda - 아마존 SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

CloudWatch Amazon을 사용하여 규칙에 대한 작업을 생성하고 AWS Lambda

Amazon은 Amazon SageMaker 모델 교육 작업 로그와 Amazon SageMaker 디버거 규칙 처리 작업 로그를 CloudWatch 수집합니다. Amazon CloudWatch Events로 디버거를 구성하고 디버거 규칙 평가 상태를 기반으로 조치를 취하십시오. AWS Lambda

CloudWatch 디버거 규칙 및 교육 작업에 대한 로그

훈련 작업 로그 및 디버거 규칙 작업 로그를 찾으려면
  1. https://console.aws.amazon.com/cloudwatch/ 에서 CloudWatch 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 로그 노드 아래에 로그 그룹을 선택합니다.

  3. 로그 그룹 목록에서 다음을 수행합니다.

    • 교육 작업 로그를 보려면 TrainingJobs /aws/sagemaker/를 선택하십시오.

    • 디버거 규칙 작업 로그의 경우 /aws/sagemaker/를 선택합니다. ProcessingJobs

CloudWatch 로그의 교육 및 디버거 규칙 작업 상태를 사용하여 교육 문제가 있을 경우 추가 조치를 취할 수 있습니다.

를 사용하여 CloudWatch 교육 작업을 모니터링하는 방법에 대한 자세한 내용은 Amazon 모니터링을 참조하십시오 SageMaker.

Lambda를 사용하여 CloudWatch 자동 교육 작업 종료를 위한 디버거 설정

디버거 규칙은 교육 작업 상태를 모니터링하고, CloudWatch 이벤트 규칙은 디버거 규칙 교육 작업 평가 상태를 감시합니다.

1단계: Lambda 함수 생성

Lambda 함수를 생성하는 방법
  1. https://console.aws.amazon.com/lambda/ 에서 AWS Lambda 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 함수를 선택한 후, 함수 생성을 선택합니다.

  3. 함수 생성 페이지에서 새로 작성 옵션을 선택합니다.

  4. 기본 정보 섹션에서 함수 이름 (예: debugger-rule-stop-training-job) 을 입력합니다.

  5. 실행 시간에서 Python 3.7을 선택합니다.

  6. 권한의 경우 드롭다운 옵션을 확장하고 기본 실행 역할 변경을 선택합니다.

  7. 실행 역할에서 기존 역할 사용을 선택하고 교육 작업에 사용할 IAM 역할을 선택합니다. SageMaker

    참고

    AmazonSageMakerFullAccessAWSLambdaBasicExecutionRole이 연결된 실행 역할을 사용해야 합니다. 그렇지 않으면 Lambda 함수가 훈련 작업의 디버거 규칙 상태 변경에 제대로 반응하지 않습니다. 어떤 실행 역할을 사용하고 있는지 확실하지 않은 경우 Jupyter 노트북 셀에서 다음 코드를 실행하여 실행 역할 출력을 검색하십시오.

    import sagemaker sagemaker.get_execution_role()
  8. 페이지 하단에서 함수 생성을 선택합니다.

다음 그림은 입력 필드와 선택이 완료된 함수 생성 페이지의 예를 보여줍니다.

함수 생성 페이지.

2단계: Lambda 함수 구성

Lambda 함수를 구성하려면
  1. 구성 페이지의 함수 코드 섹션에서 Lambda 코드 편집기 창에 다음 Python 스크립트를 붙여넣습니다. lambda_handler함수는 에서 수집한 디버거 규칙 평가 상태를 모니터링하고 API CloudWatch 작업을 트리거합니다. StopTrainingJob AWS SDK for Python (Boto3) client양식은 API 작업을 트리거하는 고급 메서드를 SageMaker 제공합니다. stop_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

    Lambda 코드 편집기 인터페이스에 대한 자세한 내용은 Lambda 콘솔 편집기를 사용하여 함수 생성을 참조하십시오. AWS

  2. 기타 모든 설정을 건너뛰고 구성 페이지 상단에서 저장을 선택합니다.

3단계: CloudWatch 이벤트 규칙 생성 및 디버거용 Lambda 함수에 연결

CloudWatch 이벤트 규칙을 생성하고 디버거용 Lambda 함수에 연결하려면
  1. https://console.aws.amazon.com/cloudwatch/ 에서 CloudWatch 콘솔을 엽니다.

  2. 탐색 창에서 이벤트 아래에서 규칙을 선택합니다.

  3. 규칙 생성을 선택합니다.

  4. 1단계: 규칙 만들기 페이지의 [이벤트 소스] 섹션에서 [서비스 이름] 을 선택하고 SageMaker[이벤트 유형] 으로 [SageMakerTraining Job State Change] 를 선택합니다. 이벤트 패턴 미리 보기는 다음 예제 JSON 문자열과 같아야 합니다.

    { "source": [ "aws.sagemaker" ], "detail-type": [ "SageMaker Training Job State Change" ] }
  5. 타겟 섹션에서 Add target*를 선택하고 생성한 debugger-rule-stop-training-job Lambda 함수를 선택합니다. 이 단계는 CloudWatch 이벤트 규칙을 Lambda 함수와 연결합니다.

  6. 세부 정보 구성을 선택하고 2단계: 규칙 세부 정보 구성 페이지를 엽니다.

  7. CloudWatch 규칙 정의 이름을 지정하십시오. 예: debugger-cw-event-rule.

  8. 완료하려면 규칙 생성을 선택합니다.

  9. Lambda 함수 구성 페이지로 돌아가서 페이지를 새로 고칩니다. 설계자 패널에서 올바르게 구성되었는지 확인합니다. CloudWatch 이벤트 규칙은 Lambda 함수의 트리거로 등록되어야 합니다. 구성 설계는 다음 예제와 비슷합니다.

    구성을 위한 디자이너 패널. CloudWatch

예제 노트북을 실행하여 자동 훈련 작업 종료 테스트

디버거의 내장 규칙을 사용하여 훈련 작업을 중지하는 실험을 위해 준비된 다음 예제 노트북을 실행할 수 있습니다.

자동 교육 작업 종료 사용을 중지하기 위한 CloudWatch 이벤트 규칙 비활성화

자동 교육 작업 종료를 비활성화하려면 CloudWatch 이벤트 규칙을 비활성화해야 합니다. Lambda 디자이너 패널에서 Lambda 함수에 EventBridge 연결된 CloudWatch (이벤트) 블록을 선택합니다. 그러면 디자이너 EventBridge패널 아래에 패널이 표시됩니다 (예: 이전 스크린샷 참조). EventBridge (CloudWatch 이벤트): debugger-cw-event-rule 옆의 확인란을 선택한 다음 비활성화를 선택합니다. 나중에 자동 종료 기능을 사용하려는 경우 CloudWatch 이벤트 규칙을 다시 활성화할 수 있습니다.