

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

# Debugger 규칙을 구성하기 위한 예제 노트북 및 코드 샘플
<a name="debugger-built-in-rules-example"></a>

다음 섹션에서는 디버거 규칙을 사용하여 SageMaker 훈련 작업을 모니터링하는 방법에 대한 노트북과 코드 샘플을 제공합니다.

**Topics**
+ [Debugger 기본 제공 규칙 예제 노트북](#debugger-built-in-rules-notebook-example)
+ [Debugger 기본 제공 규칙 예제 코드](#debugger-deploy-built-in-rules)
+ [파라미터 수정과 함께 Debugger 기본 제공 규칙 사용](#debugger-deploy-modified-built-in-rules)

## Debugger 기본 제공 규칙 예제 노트북
<a name="debugger-built-in-rules-notebook-example"></a>

다음 예시 노트북은 Amazon SageMaker AI로 훈련 작업을 실행할 때 Debugger의 내장된 규칙을 사용하는 방법을 보여줍니다.
+ [TensorFlow를 사용한 SageMaker Debugger 기본 제공 규칙 사용](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/tensorflow_builtin_rule)
+ [관리형 스팟 훈련 및 MXNet을 사용한 SageMaker Debugger 기본 제공 규칙 사용](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/mxnet_spot_training)
+ [XGBoost를 통한 실시간 훈련 작업 분석을 위한 파라미터 수정이 포함된 SageMaker Debugger 기본 제공 규칙 사용](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/xgboost_realtime_analysis)

SageMaker Studio에서 예제 노트북을 실행하는 동안 **Studio 실험 목록** 탭에서 생성된 훈련 작업 평가판을 찾을 수 있습니다. 예를 들어 아래의 스크린샷과 같이 현재 훈련 작업의 **평가판 구성 요소 설명** 창을 찾아 열 수 있습니다. Debugger 탭에서 Debugger 규칙, `vanishing_gradient()` 및 `loss_not_decreasing()`가 훈련 세션을 병렬로 모니터링하는지 확인할 수 있습니다. Studio UI에서 훈련 작업 시험 구성 요소를 찾는 방법에 대한 전체 지침은 [SageMaker Studio - 실험, 평가판 및 평가판 구성 요소 보기](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-tasks.html#studio-tasks-experiments)를 참고하세요.

![\[SageMaker Studio에서 활성화된 Debugger 기본 제공 규칙을 사용하여 훈련 작업을 실행하는 이미지\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/debugger/debugger-built-in-rule-studio.png)


SageMaker AI 환경에서 Debugger의 내장된 규칙을 사용하는 방법은 2가지입니다. 하나는 내장된 규칙을 준비된 대로 배포하거나 파라미터를 원하는 대로 조정하는 것입니다. 다음 주제에서는 예제 코드와 함께 기본 제공 규칙을 사용하는 방법을 보여줍니다.

## Debugger 기본 제공 규칙 예제 코드
<a name="debugger-deploy-built-in-rules"></a>

다음 코드 샘플은 `Rule.sagemaker` 메서드를 사용하여 Debugger 기본 내장 규칙을 설정하는 방법을 보여줍니다. 실행하려는 기본 제공 규칙을 지정하려면 `rules_configs` API 작업을 사용하여 기본 제공 규칙을 호출합니다. Debugger 기본 제공 규칙 및 기본 파라미터 값의 전체 목록을 찾으려면 [Debugger 기본 제공 규칙 목록](debugger-built-in-rules.md)을 참고하세요.

```
import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import Rule, CollectionConfig, rule_configs

# call built-in rules that you want to use.
built_in_rules=[ 
            Rule.sagemaker(rule_configs.vanishing_gradient())
            Rule.sagemaker(rule_configs.loss_not_decreasing())
]

# construct a SageMaker AI estimator with the Debugger built-in rules
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name='debugger-built-in-rules-demo',
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",

    # debugger-specific arguments below
    rules=built_in_rules
)
sagemaker_estimator.fit()
```

**참고**  
Debugger 기본 제공 규칙은 훈련 작업과 병렬로 실행됩니다. 훈련 작업에 사용할 수 있는 기본 제공 규칙 컨테이너의 최대 수는 20개입니다.

Debugger 규칙 클래스, 메서드 및 파라미터에 대한 자세한 내용은 [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)의 [SageMaker Debugger 규칙 클래스](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html)를 참고하세요.

Debugger 규칙 파라미터를 조정하는 방법의 예를 찾으려면 다음 [파라미터 수정과 함께 Debugger 기본 제공 규칙 사용](#debugger-deploy-modified-built-in-rules) 섹션을 참고하세요.

## 파라미터 수정과 함께 Debugger 기본 제공 규칙 사용
<a name="debugger-deploy-modified-built-in-rules"></a>

다음 코드 예제는 파라미터를 조정하기 위한 기본 제공 규칙의 구조를 보여줍니다. 이 예제에서 `stalled_training_rule`은 50단계마다 훈련 작업의 `losses` 텐서 컬렉션을 수집하고 10단계마다 평가 단계를 수집합니다. 훈련 프로세스가 스톨링을 시작하고 120초 동안 텐서 출력을 수집하지 않으면 `stalled_training_rule`이 훈련 작업을 중지합니다.

```
import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import Rule, CollectionConfig, rule_configs

# call the built-in rules and modify the CollectionConfig parameters

base_job_name_prefix= 'smdebug-stalled-demo-' + str(int(time.time()))

built_in_rules_modified=[
    Rule.sagemaker(
        base_config=rule_configs.stalled_training_rule(),
        rule_parameters={
                'threshold': '120',
                'training_job_name_prefix': base_job_name_prefix,
                'stop_training_on_fire' : 'True'
        }
        collections_to_save=[ 
            CollectionConfig(
                name="losses", 
                parameters={
                      "train.save_interval": "50"
                      "eval.save_interval": "10"
                } 
            )
        ]
    )
]

# construct a SageMaker AI estimator with the modified Debugger built-in rule
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name=base_job_name_prefix,
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",

    # debugger-specific arguments below
    rules=built_in_rules_modified
)
sagemaker_estimator.fit()
```