규칙에 대한 디버거 내장 작업 - 아마존 SageMaker

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

규칙에 대한 디버거 내장 작업

Debugger 규칙에서 발견한 문제에 대응하려면 디버거 내장 작업을 사용하십시오. 디버거 rule_configs 클래스는 디버거 규칙에서 훈련 문제를 발견하면 훈련 작업을 자동으로 중지하고 Amazon Simple Notification Service(Amazon SNS)를 사용하여 알림을 보내는 등 작업 목록을 구성하는 도구를 제공합니다.

1단계: Amazon SNS 설정, SM DebugRules 주제 생성, 주제 구독

이 섹션에서는 Amazon SNS SMDebugRules 주제를 설정하고, 구독하고, 구독을 확인하여 디버거 규칙으로부터 알림을 수신하는 방법을 안내합니다.

참고

Amazon SNS 청구에 대한 추가 정보는 Amazon SNS 요금 Amazon SNS FAQ를 참조하십시오.

SM DebugRules 주제를 만들려면
  1. AWS Management Console 로그인하고 https://console.aws.amazon.com/sns/v3/home 에서 Amazon SNS 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 주제를 선택합니다.

  3. 주제(Topics) 페이지에서 새 주제 생성(Create new topic)을 선택합니다.

  4. 주제 생성 페이지의 세부 정보 섹션에서 다음을 수행합니다.

    1. 유형에서 주제 유형으로 표준을 선택합니다.

    2. 이름SMDebugRules를 입력합니다.

  5. 다른 모든 옵션 설정을 건너뛰고 주제 생성을 선택합니다. 선택적 설정에 대해 자세히 알아보려면 Amazon SNS 주제 생성을 참조하십시오.

SM DebugRules 주제를 구독하려면

  1. https://console.aws.amazon.com/sns/v3/home에서 Amazon SNS 콘솔을 엽니다.

  2. 왼쪽의 탐색 창에서 구독을 선택합니다.

  3. 구독 페이지에서 구독 생성을 선택합니다.

  4. 구독 생성 페이지의 세부 정보 섹션에서 다음을 수행합니다.

    1. 주제 ARN의 경우 SM 주제 DebugRules ARN을 선택합니다. ARN은 arn:aws:sns:<region-id>:111122223333:SMDebugRules의 형식이어야 합니다.

    2. 프로토콜의 경우 이메일 또는 SMS를 선택합니다.

    3. 엔드포인트에 이메일 주소 또는 전화번호와 같은 엔드포인트 값을 입력합니다(예: 알림을 받을 이메일 주소 또는 전화번호).

      참고

      올바른 이메일 주소와 전화번호를 입력했는지 확인하십시오. 전화번호에는 특수 문자나 공백 없이 +, 국가 코드 및 전화번호가 포함되어야 합니다. 예를 들어, 전화번호 +1 (222) 333-4444의 형식은 +12223334444와 같습니다.

  5. 다른 모든 선택적 설정을 건너뛰고 구독 생성을 선택합니다. 선택적 설정에 대해 자세히 알아보려면 Amazon SNS 주제 구독을 참조하십시오.

SM DebugRules 주제를 구독하면 이메일이나 전화로 다음과 같은 확인 메시지를 받게 됩니다.

Amazon SNS SM DebugRules 주제에 대한 구독 확인 이메일 메시지입니다.

추가 정보는 Amazon SNS 개발자 안내서에서 모바일 문자 메시지(SMS)이메일 알림을 참조하십시오.

2단계: 필수 정책을 연결하도록 IAM 역할 설정

이 단계에서는 필수 정책을 IAM 역할에 추가합니다.

IAM 역할에 필수 정책을 추가하려면
  1. AWS Management Console 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 정책을 선택한 다음 정책 생성을 선택합니다.

  3. 정책 생성 페이지에서 다음을 수행하여 새 sns-access 정책을 생성합니다.

    1. JSON 탭을 선택합니다.

    2. 다음 코드에서 굵게 표시된 JSON 문자열을 에 붙여넣고 12자리 AWS 계정 ID를 계정 ID로 대체합니다. "Statement" AWS

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "sns:Publish", "sns:CreateTopic", "sns:Subscribe" ], "Resource": "arn:aws:sns:*:111122223333:SMDebugRules" } ] }
    3. 페이지 하단에서 정책 검토를 선택합니다.

    4. 정책 검토 페이지의 이름sns-access를 입력합니다.

    5. 페이지 하단에서 정책 생성을 선택합니다.

  4. IAM 콘솔로 돌아가 왼쪽 탐색 창에서 역할을 선택합니다.

  5. SageMaker 모델 교육에 사용하는 IAM 역할을 찾아 해당 IAM 역할을 선택하십시오.

  6. 요약 페이지의 권한 탭에서 정책 연결을 선택합니다.

  7. sns-access 정책을 찾고, 옆에 있는 확인란을 선택한 다음 정책 연결을 선택합니다.

Amazon SNS에 대한 IAM 정책을 설정하는 자세한 예시를 보려면 Amazon SNS 액세스 제어의 예제 사례를 참조하십시오.

3단계: 내장 작업으로 디버거 규칙 구성

이전 단계에서 필요한 설정을 성공적으로 완료한 후에는 다음 예제 스크립트와 같이 디버깅 규칙을 위한 디버거 내장 작업을 구성할 수 있습니다. actions 목록 객체를 빌드할 때 사용할 내장 작업을 선택할 수 있습니다. rule_configs는 디버거 내장 규칙 및 작업을 구성하는 고급 도구를 제공하는 헬퍼 모듈입니다. 디버거에서 다음 내장 작업을 사용할 수 있습니다.

  • rule_configs.StopTraining() — 디버거 규칙에서 문제를 발견하면 훈련 작업을 중지합니다.

  • rule_configs.Email("abc@abc.com") — 디버거 규칙에서 문제를 발견하면 이메일을 통해 알림을 보냅니다. SNS 주제 구독을 설정할 때 사용한 이메일 주소를 사용하십시오.

  • rule_configs.SMS("+1234567890") — 디버거 규칙에서 문제를 발견하면 문자 메시지를 통해 알림을 보냅니다. SNS 주제 구독을 설정할 때 사용한 전화번호를 사용하십시오.

    참고

    올바른 이메일 주소와 전화번호를 입력했는지 확인하십시오. 전화번호에는 특수 문자나 공백 없이 +, 국가 코드 및 전화번호가 포함되어야 합니다. 예를 들어, 전화번호 +1 (222) 333-4444의 형식은 +12223334444와 같습니다.

rule_configs.ActionList() 메서드를 사용하여 마무리하여 내장 작업을 모두 사용하거나 작업의 서브셋을 사용할 수 있습니다. 이 메서드는 내장 작업을 가져와 작업 목록을 구성합니다.

세 가지 내장 작업을 모두 단일 규칙에 추가하려면

세 가지 내장 작업을 모두 단일 규칙에 할당하려면 예측기를 구성하는 동안 디버거 내장 작업 목록을 구성하십시오. 다음 템플릿을 사용하여 예측기를 구성하면 디버거가 훈련 작업을 중단하고 훈련 작업 진행 상황을 모니터링하는 데 사용하는 규칙에 대해 이메일과 문자를 통해 알림을 보냅니다.

from sagemaker.debugger import Rule, rule_configs # Configure an action list object for Debugger rules actions = rule_configs.ActionList( rule_configs.StopTraining(), rule_configs.Email("abc@abc.com"), rule_configs.SMS("+1234567890") ) # Configure rules for debugging with the actions parameter rules = [ Rule.sagemaker( base_config=rule_configs.built_in_rule(), # Required rule_parameters={"paramter_key": value }, # Optional actions=actions ) ] estimator = Estimator( ... rules = rules ) estimator.fit(wait=False)

내장 작업 객체를 여러 개 만들어 단일 규칙에 서로 다른 작업을 할당하려면

단일 규칙의 서로 다른 임곗값에서 트리거되도록 내장 작업을 할당하려는 경우 다음 스크립트와 같이 여러 내장 작업 객체를 만들 수 있습니다. 동일한 규칙을 실행하여 충돌 오류가 발생하지 않도록 하려면 다음 예제 스크립트 템플릿과 같이 다른 규칙 작업 이름을 제출해야 합니다(규칙 name 속성에 다른 문자열 지정). 이 예제에서는 두 가지 다른 작업을 수행하도록 StalledTraining규칙을 설정하는 방법을 보여줍니다. 즉, 훈련 작업이 60초 동안 중단되면 abc@abc.com에 이메일을 보내고 120초 동안 중단되면 훈련 작업을 중지합니다.

from sagemaker.debugger import Rule, rule_configs import time base_job_name_prefix= 'smdebug-stalled-demo-' + str(int(time.time())) # Configure an action object for StopTraining action_stop_training = rule_configs.ActionList( rule_configs.StopTraining() ) # Configure an action object for Email action_email = rule_configs.ActionList( rule_configs.Email("abc@abc.com") ) # Configure a rule with the Email built-in action to trigger if a training job stalls for 60 seconds stalled_training_job_rule_email = Rule.sagemaker( base_config=rule_configs.stalled_training_rule(), rule_parameters={ "threshold": "60", "training_job_name_prefix": base_job_name_prefix }, actions=action_email ) stalled_training_job_rule_text.name="StalledTrainingJobRuleEmail" # Configure a rule with the StopTraining built-in action to trigger if a training job stalls for 120 seconds stalled_training_job_rule = Rule.sagemaker( base_config=rule_configs.stalled_training_rule(), rule_parameters={ "threshold": "120", "training_job_name_prefix": base_job_name_prefix }, actions=action_stop_training ) stalled_training_job_rule.name="StalledTrainingJobRuleStopTraining" estimator = Estimator( ... rules = [stalled_training_job_rule_email, stalled_training_job_rule] ) estimator.fit(wait=False)

훈련 작업이 실행되는 동안 디버거 내장 작업은 규칙에서 훈련 작업과 관련된 문제를 발견할 때마다 알림 이메일과 문자 메시지를 보냅니다. 다음 스크린샷은 훈련 작업 지연이 발생한 훈련 작업에 대한 이메일 알림의 예를 보여줍니다.

디버거 (Debugger) 가 문제를 감지했을 때 보내는 이메일 알림 예시입니다. StalledTraining

다음 스크린샷은 규칙에서 문제를 발견했을 때 디버거가 보내는 텍스트 알림의 예를 보여줍니다. StalledTraining

문제를 감지했을 때 디버거에서 보낸 문자 알림 예시입니다. StalledTraining

디버거 내장 작업 사용 시 고려할 사항

  • 디버거 내장 작업을 사용하려면 인터넷 연결이 필요합니다. Amazon SageMaker 또는 Amazon VPC에서 제공하는 네트워크 격리 모드에서는 이 기능이 지원되지 않습니다.

  • 내장 작업은 프로파일러 규칙 용도로는 사용할 수 없습니다.

  • 스팟 훈련 중단이 있는 훈련 작업에는 내장 작업을 사용할 수 없습니다.

  • 이메일 또는 문자 알림에서는, 메시지 끝에 None이 표시됩니다. 아무 의미가 없으므로 None 텍스트를 무시해도 됩니다.