

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

# 디버거 내장 프로파일러 규칙 목록
<a name="debugger-built-in-profiler-rules"></a>

Amazon SageMaker Debugger에서 제공하는 디버거 내장 프로파일러 규칙을 사용하여 모델을 훈련하는 동안 수집된 메트릭을 분석할 수 있습니다. 디버거 내장 규칙은 훈련 작업을 성공적으로 실행하는 데 중요한 다양한 공통 조건을 모니터링합니다. 사용자는 [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) 또는 하위 수준의 SageMaker API 작업을 사용하여 내장된 프로파일러 규칙을 호출할 수 있습니다. 내장 규칙을 사용하는 데는 추가 비용이 들지 않습니다. 결제에 대한 추가 정보는 [Amazon SageMaker 요금](https://aws.amazon.com/sagemaker/pricing/) 페이지를 참조하세요.

**참고**  
사용자가 훈련 작업에 연결할 수 있는 내장 프로파일러 규칙의 최대 수는 20개입니다. SageMaker Debugger는 내장 규칙을 완전히 관리하고 훈련 작업을 동시에 분석합니다.

**중요**  
새로운 디버거 기능을 사용하려면 SageMaker Python SDK와 SMDebug 클라이언트 라이브러리를 업그레이드해야 합니다. iPython 커널, Jupyter notebook 또는 JupyterLab 환경에서 다음 코드를 실행하여 최신 버전의 라이브러리를 설치하고 커널을 다시 시작합니다.  

```
import sys
import IPython
!{sys.executable} -m pip install -U sagemaker smdebug
IPython.Application.instance().kernel.do_shutdown(True)
```

## 프로파일러 규칙
<a name="debugger-built-in-profiler-rules-ProfilerRule"></a>

다음은 `ProfilerRule.sagemaker` 클래스 메서드를 사용하여 호출할 수 있는 디버거 내장 규칙입니다.

프로파일링 보고서를 생성하기 위한 디버거 내장 규칙


| 유효 범위 | 내장 규칙 | 
| --- | --- | 
| 모든 SageMaker 훈련 작업에 대한 프로파일링 보고서 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/debugger-built-in-profiler-rules.html)  | 

하드웨어 시스템 리소스 사용률(시스템 메트릭)을 프로파일링하기 위한 디버거 내장 규칙


| 유효 범위 | 내장 규칙 | 
| --- | --- | 
| 모든 SageMaker 훈련 작업에 대한 일반 시스템 모니터링 규칙 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/debugger-built-in-profiler-rules.html)  | 

프레임워크 메트릭을 프로파일링하기 위한 디버거 내장 규칙


| 유효 범위 | 내장 규칙 | 
| --- | --- | 
| 딥러닝 프레임워크의 프로파일링 규칙(TensorFlow 및 PyTorch) |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/debugger-built-in-profiler-rules.html)  | 

**주의**  
SageMaker AI Debugger는 [Amazon SageMaker Profiler](train-use-sagemaker-profiler.md)로 전환하면서 TensorFlow 2.11과 PyTorch 2.0부터 프레임워크 프로파일링 기능에 대한 지원을 중단합니다. 이전 버전의 프레임워크와 SDK에서 사용자는 다음과 같이 이 기능을 계속 사용할 수 있습니다.  
SageMaker Python SDK <= v2.130.0
PyTorch >= v1.6.0, < v2.0
TensorFlow >= v2.3.1, < v2.11
[2023년 3월 16일](debugger-release-notes.md#debugger-release-notes-20230315) 섹션도 참조하세요.

**기본 파라미터 값과 함께 내장 규칙을 사용하려면** 다음 구성 형식을 사용하세요.

```
from sagemaker.debugger import Rule, ProfilerRule, rule_configs

rules = [
    ProfilerRule.sagemaker(rule_configs.BuiltInRuleName_1()),
    ProfilerRule.sagemaker(rule_configs.BuiltInRuleName_2()),
    ...
    ProfilerRule.sagemaker(rule_configs.BuiltInRuleName_n())
]
```

**내장 규칙을 사용하여 파라미터 값을 사용자 정의하려면** 다음 구성 형식을 사용하세요.

```
from sagemaker.debugger import Rule, ProfilerRule, rule_configs

rules = [
    ProfilerRule.sagemaker(
        base_config=rule_configs.BuiltInRuleName(),
        rule_parameters={
                "key": "value"
        }
    )
]
```

파라미터에 사용할 수 있는 키를 찾으려면 `rule_parameters` 파라미터 설명 테이블을 참조하세요.

각 내장 규칙에 대한 샘플 규칙 구성 코드는 파라미터 설명 표 아래에 제공됩니다.
+ 디버거 내장 규칙 사용에 대한 전체 지침 및 예제는 [Debugger 기본 제공 규칙 예제 코드](debugger-built-in-rules-example.md#debugger-deploy-built-in-rules) 섹션을 참조하세요.
+ 저수준 SageMaker API 작업에서 내장 규칙을 사용하는 방법에 대한 전체 지침은 [SageMaker API를 사용한 Debugger 구성](debugger-createtrainingjob-api.md) 섹션을 참조하세요.

## ProfilerReport
<a name="profiler-report"></a>

ProfilerReport 규칙은 모니터링 및 프로파일링을 위한 모든 내장 규칙을 호출합니다. 프로파일링 보고서를 생성하고 개별 규칙이 트리거되면 업데이트됩니다. 사용자는 훈련 작업이 실행 중이거나 훈련 작업이 완료된 후에 포괄적인 프로파일링 보고서를 다운로드할 수 있습니다. 사용자는 규칙 파라미터 값을 조정하여 내장 모니터링 및 프로파일링 규칙의 민감도를 사용자 지정할 수 있습니다. 다음 예제 코드는 ProfilerReport 규칙을 통해 내장 규칙 파라미터를 조정하는 기본 형식을 보여줍니다.

```
rules=[
    ProfilerRule.sagemaker(
        rule_configs.ProfilerReport(
            <BuiltInRuleName>_<parameter_name> = value
        )
    )  
]
```

다음 예제 코드와 같이 사용자 지정된 파라미터 없이 이 ProfilerReport 규칙을 트리거하면 ProfilerReport 규칙이 기본 파라미터 값을 사용하여 모니터링 및 프로파일링을 위한 내장 규칙을 모두 트리거합니다.

```
rules=[ProfilerRule.sagemaker(rule_configs.ProfilerReport())]
```

다음 예제 코드는 CPUBottleneck 규칙의 `cpu_threshold` 파라미터와 IOBottleneck 규칙의 `threshold` 파라미터를 지정하고 조정하는 방법을 보여줍니다.

```
rules=[
    ProfilerRule.sagemaker(
        rule_configs.ProfilerReport(
            CPUBottleneck_cpu_threshold = 90,
            IOBottleneck_threshold = 90
        )
    )  
]
```

프로파일러 보고서의 내용을 살펴보려면 [SageMaker Debugger 프로파일링 보고서](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-profiling-report.html)를 참조하세요. 또한 이 규칙은 모든 프로파일링 규칙을 활성화하므로 사용자는 [SageMaker Studio Experiments의 SageMaker Debugger UI](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-on-studio.html)를 사용하여 규칙 분석 상태를 확인할 수도 있습니다.

OverallSystemUsage 규칙에 대한 파라미터 설명


| 파라미터 이름 | 설명 | 
| --- | --- | 
| base\$1trial | 기본 시험 훈련 작업 이름입니다. 이 파라미터는 Amazon SageMaker Debugger에서 현재 훈련 작업으로 자동 설정합니다. **필수** 유효값: 문자열  | 
| <BuiltInRuleName>\$1<parameter\$1name> |  기타 내장된 모니터링 및 프로파일링 규칙의 임곗값을 조정할 수 있는 사용자 지정 가능한 파라미터. **선택 사항** 기본값: `None`  | 

## BatchSize
<a name="batch-size-rule"></a>

BatchSize 규칙은 배치 크기가 작아 GPU 사용률이 낮은지 여부를 감지하는 데 도움이 됩니다. 이 문제를 감지하기 위해 이 규칙은 평균 CPU 사용률, GPU 사용률, GPU 메모리 사용률을 모니터링합니다. CPU, GPU 및 GPU 메모리 사용률이 평균적으로 낮으면 훈련 작업이 더 작은 인스턴스 유형에서 실행되거나 더 큰 배치 크기로 실행될 수 있음을 의미할 수 있습니다. 메모리를 과도하게 할당하는 프레임워크에서는 이 분석이 효과가 없습니다. 하지만 배치 크기를 늘리면 각 반복마다 더 많은 데이터 사전 처리 시간이 필요하기 때문에 처리 또는 데이터 로드 병목 현상이 발생할 수 있습니다.

BatchSize 규칙에 대한 파라미터 설명


| 파라미터 이름 | 설명 | 
| --- | --- | 
| base\$1trial | 기본 시험 훈련 작업 이름입니다. 이 파라미터는 Amazon SageMaker Debugger에서 현재 훈련 작업으로 자동 설정합니다. **필수** 유효값: 문자열  | 
| cpu\$1threshold\$1p95 |  CPU 사용률 95분위수의 임곗값을 백분율로 정의합니다. **선택 사항** 유효한 값: 정수 기본값: `70`(백분율)  | 
| gpu\$1threshold\$1p95 |  GPU 사용률의 95번째 분위수 임곗값을 백분율로 정의합니다. **선택 사항** 유효한 값: 정수 기본값: `70`(백분율)  | 
| gpu\$1memory\$1threshold\$1p95 | GPU 메모리 사용률의 95번째 분위수 임곗값을 백분율로 정의합니다. **선택 사항** 유효한 값: 정수 기본값: `70`(백분율)  | 
| patience | 규칙 평가가 시작될 때까지 건너뛸 데이터 포인트 수를 정의합니다. 훈련 작업의 처음 몇 단계는 일반적으로 데이터 프로세스의 양이 많기 때문에 인내심을 갖고 이 파라미터로 지정한 프로파일링 데이터를 일정 수만큼 사용하여 규칙이 너무 빨리 호출되지 않도록 하세요. **선택 사항** 유효한 값: 정수 기본값: `100`  | 
| window |  분위수 계산을 위한 창 크기. **선택 사항** 유효한 값: 정수 기본값: `500`  | 
| scan\$1interval\$1us |  타임라인 파일을 스캔하는 시간 간격. **선택 사항** 유효한 값: 정수 기본값: `60000000`(마이크로초 단위)  | 

## CPU 병목 현상
<a name="cpu-bottleneck"></a>

CPU 병목 현상 규칙은 CPU 병목 현상으로 인해 GPU 사용률이 낮은지 감지하는 데 도움이 됩니다. CPU 병목 현상이 사전 정의된 임곗값을 초과하는 경우 규칙은 True를 반환합니다.

CPU 병목 현상 규칙의 파라미터 설명


| 파라미터 이름 | 설명 | 
| --- | --- | 
| base\$1trial | 기본 시험 훈련 작업 이름입니다. 이 파라미터는 Amazon SageMaker Debugger에서 현재 훈련 작업으로 자동 설정합니다. **필수** 유효값: 문자열  | 
| threshold |  총 훈련 시간에 병목 현상이 발생한 시간의 비율에 대한 임곗값을 정의합니다. 비율이 임곗값 파라미터에 지정된 백분율을 초과하는 경우 규칙은 규칙 상태를 True로 전환합니다. **선택 사항** 유효한 값: 정수 기본값: `50`(백분율)  | 
| gpu\$1threshold |  낮은 GPU 사용률을 정의하는 임곗값입니다. **선택 사항** 유효한 값: 정수 기본값: `10`(백분율)  | 
| cpu\$1threshold | 높은 CPU 사용률을 정의하는 임곗값입니다. **선택 사항** 유효한 값: 정수 기본값: `90`(백분율)  | 
| patience | 규칙 평가가 시작될 때까지 건너뛸 데이터 포인트 수를 정의합니다. 훈련 작업의 처음 몇 단계는 일반적으로 데이터 프로세스의 양이 많기 때문에 인내심을 갖고 이 파라미터로 지정한 프로파일링 데이터를 일정 수만큼 사용하여 규칙이 너무 빨리 호출되지 않도록 하세요. **선택 사항** 유효한 값: 정수 기본값: `100`  | 
| scan\$1interval\$1us | 타임라인 파일을 스캔하는 시간 간격. **선택 사항** 유효한 값: 정수 기본값: `60000000`(마이크로초 단위)  | 

## GPU 메모리 증가
<a name="gpu-memory-increase"></a>

GPU 메모리 증가 규칙은 GPU의 메모리 사용량이 크게 증가하는 것을 감지하는 데 도움이 됩니다.

GPU 메모리 증가 규칙에 대한 파라미터 설명


| 파라미터 이름 | 설명 | 
| --- | --- | 
| base\$1trial | 기본 시험 훈련 작업 이름입니다. 이 파라미터는 Amazon SageMaker Debugger에서 현재 훈련 작업으로 자동 설정합니다. **필수** 유효값: 문자열  | 
| increase |  절대 메모리 증가 임곗값을 정의합니다. **선택 사항** 유효한 값: 정수 기본값: `10`(백분율)  | 
| patience |  규칙 평가가 시작될 때까지 건너뛸 데이터 포인트 수를 정의합니다. 훈련 작업의 처음 몇 단계는 일반적으로 데이터 프로세스의 양이 많기 때문에 인내심을 갖고 이 파라미터로 지정한 프로파일링 데이터를 일정 수만큼 사용하여 규칙이 너무 빨리 호출되지 않도록 하세요. **선택 사항** 유효한 값: 정수 기본값: `100`  | 
| window |  분위수 계산을 위한 창 크기. **선택 사항** 유효한 값: 정수 기본값: `500`  | 
| scan\$1interval\$1us |  타임라인 파일을 스캔하는 시간 간격. **선택 사항** 유효한 값: 정수 기본값: `60000000`(마이크로초 단위)  | 

## IO 병목 현상
<a name="io-bottleneck"></a>

이 규칙은 데이터 I/O 병목 현상으로 인해 GPU가 제대로 사용되지 않는지 감지하는 데 도움이 됩니다. IO 병목 현상 수가 사전 정의된 임곗값을 초과하는 경우 규칙은 True를 반환합니다.

IO병목 규칙에 대한 파라미터 설명


| 파라미터 이름 | 설명 | 
| --- | --- | 
| base\$1trial | 기본 시험 훈련 작업 이름입니다. 이 파라미터는 Amazon SageMaker Debugger에서 현재 훈련 작업으로 자동 설정합니다. **필수** 유효값: 문자열  | 
| threshold | 규칙이 True를 반환할 때의 임곗값을 정의합니다.**선택 사항**유효한 값: 정수기본값: `50`(백분율) | 
| gpu\$1threshold |  GPU 사용률이 낮은 것으로 간주되는 시기를 정의하는 임곗값입니다. **선택 사항** 유효한 값: 정수 기본값: `70`(백분율)  | 
| io\$1threshold | 높은 IO 대기 시간을 정의하는 임곗값입니다.**선택 사항**유효한 값: 정수기본값: `50`(백분율) | 
| patience | 규칙 평가가 시작될 때까지 건너뛸 데이터 포인트 수를 정의합니다. 훈련 작업의 처음 몇 단계는 일반적으로 데이터 프로세스의 양이 많기 때문에 인내심을 갖고 이 파라미터로 지정한 프로파일링 데이터를 일정 수만큼 사용하여 규칙이 너무 빨리 호출되지 않도록 하세요.**선택 사항**유효한 값: 정수기본값: `1000` | 
| scan\$1interval\$1us |  타임라인 파일을 스캔하는 시간 간격. **선택 사항** 유효한 값: 정수 기본값: `60000000`(마이크로초 단위)  | 

## LoadBalancing
<a name="load-balancing"></a>

LoadBalancing 규칙은 여러 GPU 간의 워크로드 밸런싱 문제를 감지하는 데 도움이 됩니다.

로드밸런싱 규칙의 파라미터 설명


| 파라미터 이름 | 설명 | 
| --- | --- | 
| base\$1trial | 기본 시험 훈련 작업 이름입니다. 이 파라미터는 Amazon SageMaker Debugger에서 현재 훈련 작업으로 자동 설정합니다. **필수** 유효값: 문자열  | 
| threshold |  워크로드 비율을 정의합니다. **선택 사항** 유효한 값: 정수 기본값: `0.5`(단위 없는 비율)  | 
| patience |  규칙 평가가 시작될 때까지 건너뛸 데이터 포인트 수를 정의합니다. 훈련 작업의 처음 몇 단계는 일반적으로 데이터 프로세스의 양이 많기 때문에 인내심을 갖고 이 파라미터로 지정한 프로파일링 데이터를 일정 수만큼 사용하여 규칙이 너무 빨리 호출되지 않도록 하세요. **선택 사항** 유효한 값: 정수 기본값: `10`  | 
| scan\$1interval\$1us |  타임라인 파일을 스캔하는 시간 간격. **선택 사항** 유효한 값: 정수 기본값: `60000000`(마이크로초 단위)  | 

## 낮은 GPU 사용률
<a name="low-gpu-utilization"></a>

낮은 GPU 사용률 규칙은 GPU 사용률이 낮은지 또는 변동이 있는지 감지하는 데 도움이 됩니다. 이는 각 워커의 각 GPU에 대해 확인됩니다. 규칙은 95번째 분위수가 사용률 저하를 나타내는 threshold d\$1p95 미만이면 True를 반환합니다. 95번째 분위수가 임곗값\$1p95를 초과하고 5번째 분위수가 변동을 나타내는 threshold p5 미만인 경우 규칙은 true를 반환합니다.

낮은 GPU 사용률 규칙에 대한 파라미터 설명


| 파라미터 이름 | 설명 | 
| --- | --- | 
| base\$1trial | 기본 시험 훈련 작업 이름입니다. 이 파라미터는 Amazon SageMaker Debugger에서 현재 훈련 작업으로 자동 설정합니다. **필수** 유효값: 문자열  | 
| threshold\$1p95 |  GPU 사용률이 낮은 것으로 간주되는 95번째 분위수의 임곗값입니다. **선택 사항** 유효한 값: 정수 기본값: `70`(백분율)  | 
| threshold\$1p5 | 5번째 분위수의 임곗값. 기본값은 10%입니다.**선택 사항**유효한 값: 정수기본값: `10`(백분율) | 
| patience |  규칙 평가가 시작될 때까지 건너뛸 데이터 포인트 수를 정의합니다. 훈련 작업의 처음 몇 단계는 일반적으로 데이터 프로세스의 양이 많기 때문에 인내심을 갖고 이 파라미터로 지정한 프로파일링 데이터를 일정 수만큼 사용하여 규칙이 너무 빨리 호출되지 않도록 하세요. **선택 사항** 유효한 값: 정수 기본값: `1000`  | 
| window |  분위수 계산을 위한 창 크기. **선택 사항** 유효한 값: 정수 기본값: `500`  | 
| scan\$1interval\$1us |  타임라인 파일을 스캔하는 시간 간격. **선택 사항** 유효한 값: 정수 기본값: `60000000`(마이크로초 단위)  | 

## 전체 시스템 사용량
<a name="overall-system-usage"></a>

전체 시스템 사용 규칙은 작업자 노드당 전체 시스템 사용량을 측정합니다. 이 규칙은 현재 노드당 값을 집계하고 백분위수만 계산합니다.

OverallSystemUsage 규칙에 대한 파라미터 설명


| 파라미터 이름 | 설명 | 
| --- | --- | 
| base\$1trial | 기본 시험 훈련 작업 이름입니다. 이 파라미터는 Amazon SageMaker Debugger에서 현재 훈련 작업으로 자동 설정합니다. **필수** 유효값: 문자열  | 
| scan\$1interval\$1us |  타임라인 파일을 스캔하는 시간 간격. **선택 사항** 유효한 값: 정수 기본값: `60000000`(마이크로초 단위)  | 

## 최대 초기화 시간
<a name="max-initialization-time"></a>

MaxInitializationTime 규칙은 훈련 초기화에 너무 많은 시간이 걸리는지 감지하는 데 도움이 됩니다. 규칙은 첫 번째 단계를 사용할 수 있을 때까지 기다립니다.

최대 초기화 시간 규칙에 대한 파라미터 설명


| 파라미터 이름 | 설명 | 
| --- | --- | 
| base\$1trial | 기본 시험 훈련 작업 이름입니다. 이 파라미터는 Amazon SageMaker Debugger에서 현재 훈련 작업으로 자동 설정합니다. **필수** 유효값: 문자열  | 
| threshold |  첫 번째 단계를 사용할 수 있을 때까지 대기할 임곗값을 분 단위로 정의합니다. **선택 사항** 유효한 값: 정수 기본값: `20`(분 단위)  | 
| scan\$1interval\$1us |  타임라인 파일을 스캔하는 시간 간격. **선택 사항** 유효한 값: 정수 기본값: `60000000`(마이크로초 단위)  | 

## 전체 프레임워크 지표
<a name="overall-framework-metrics"></a>

전체 FrameworkMetrics 규칙은 정방향 및 역방향 통과, 데이터 로드와 같은 프레임워크 지표에 소요되는 시간을 요약합니다.

OverallFrameworkMetrics 규칙에 대한 파라미터 설명


| 파라미터 이름 | 설명 | 
| --- | --- | 
| base\$1trial | 기본 시험 훈련 작업 이름입니다. 이 파라미터는 Amazon SageMaker Debugger에서 현재 훈련 작업으로 자동 설정합니다. **필수** 유효값: 문자열  | 
| scan\$1interval\$1us |  타임라인 파일을 스캔하는 시간 간격. **선택 사항** 유효한 값: 정수 기본값: `60000000`(마이크로초 단위)  | 

## 스텝 아웃라이어
<a name="step-outlier"></a>

StepOutlier 규칙은 걸음 지속 시간의 이상치를 탐지하는 데 도움이 됩니다. 이 규칙은 단계 지속 시간이 특정 시간 범위에서 전체 단계 지속 시간의 `stddev` 시그마보다 큰 특이치가 있는 경우 `True`를 반환합니다.

StepOutlier 규칙에 대한 파라미터 설명


| 파라미터 이름 | 설명 | 
| --- | --- | 
| base\$1trial | 기본 시험 훈련 작업 이름입니다. 이 파라미터는 Amazon SageMaker Debugger에서 현재 훈련 작업으로 자동 설정합니다. **필수** 유효값: 문자열  | 
| stddev |  표준 편차를 곱할 요인을 정의합니다. 예를 들어, 스텝 지속 시간이 표준 편차의 5배보다 크거나 작을 때 이 규칙이 기본적으로 호출됩니다. **선택 사항** 유효한 값: 정수 기본값: `5`(분 단위)  | 
| mode | 단계가 저장되고 어떤 규칙이 실행되어야 하는 모드입니다. 기본 규칙은 EVAL 및 TRAIN 단계의 단계에서 실행됩니다.**선택 사항**유효한 값: 정수기본값: `5`(분 단위) | 
| n\$1outliers | 규칙이 True를 반환하기 전에 무시해야 할 이상치 수**선택 사항**유효한 값: 정수기본값: `10` | 
| scan\$1interval\$1us |  타임라인 파일을 스캔하는 시간 간격. **선택 사항** 유효한 값: 정수 기본값: `60000000`(마이크로초 단위)  | 