

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

# 디버거 프로파일링 보고서 안내
<a name="debugger-profiling-report-walkthrough"></a>

이 섹션에서는 디버거 프로파일링 보고서를 섹션별로 살펴봅니다. 프로파일링 보고서는 모니터링 및 프로파일링을 위한 기본 제공 규칙을 기반으로 생성됩니다. 보고서에는 문제가 발견된 규칙에 대한 결과 플롯만 표시됩니다.

**중요**  
보고서에서 플롯과 권장 사항은 정보 제공 목적으로 제공되며 확정적이지는 않습니다. 사용자는 정보를 독립적으로 평가할 책임이 있습니다.

**Topics**
+ [훈련 작업 요약](#debugger-profiling-report-walkthrough-summary)
+ [시스템 사용 통계](#debugger-profiling-report-walkthrough-system-usage)
+ [프레임워크 지표 요약](#debugger-profiling-report-walkthrough-framework-metrics)
+ [규칙 요약](#debugger-profiling-report-walkthrough-rules-summary)
+ [훈련 루프 분석 - 스텝 기간](#debugger-profiling-report-walkthrough-step-durations)
+ [GPU 사용률 분석](#debugger-profiling-report-walkthrough-gpu-utilization)
+ [배치 크기](#debugger-profiling-report-walkthrough-batch-size)
+ [CPU 병목 현상](#debugger-profiling-report-walkthrough-cpu-bottlenecks)
+ [I/O 병목 현상](#debugger-profiling-report-walkthrough-io-bottlenecks)
+ [다중 GPU 훈련에서 로드 밸런싱](#debugger-profiling-report-walkthrough-workload-balancing)
+ [GPU 메모리 분석](#debugger-profiling-report-walkthrough-gpu-memory)

## 훈련 작업 요약
<a name="debugger-profiling-report-walkthrough-summary"></a>

디버거는 보고서를 시작할 때 훈련 작업에 대한 요약을 제공합니다. 이 섹션에서는 다양한 훈련 단계의 기간과 타임스탬프를 개괄적으로 살펴볼 수 있습니다.

![\[디버거 프로파일링 보고서의 예\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/debugger/debugger-profiling-report-summary.gif)


요약 표에는 다음 정보가 포함되어 있습니다.
+ **시작\$1시간** - 훈련 작업이 시작된 정확한 시간입니다.
+ **종료\$1시간** - 훈련 작업이 끝난 정확한 시간입니다.
+ **작업\$1기간\$1초** - **시작\$1시간**부터 **종료\$1시간**까지의 총 훈련 시간입니다.
+ **훈련\$1루프\$1시작** - 첫 번째 에포크의 첫 번째 단계가 시작된 정확한 시간입니다.
+ **훈련\$1루프\$1종료** - 마지막 에포크의 마지막 단계가 끝난 정확한 시간입니다.
+ **훈련\$1루프\$1기간\$1초** - 훈련 루프 시작 시간과 훈련 루프 종료 시간 사이의 총 시간입니다.
+ **초기화\$1초** - 훈련 작업을 초기화하는 데 소요된 시간입니다. 초기화 단계는 **시작\$1시간**부터 **훈련\$1루프\$1시작** 시간까지의 기간을 포함합니다. 초기화 시간은 훈련 스크립트 컴파일, 훈련 스크립트 시작, 모델 생성 및 초기화, EC2 인스턴스 시작, 훈련 데이터 다운로드에 소요됩니다.
+ **마무리\$1초** - 모델 훈련 완료, 모델 아티팩트 업데이트, EC2 인스턴스 종료와 같은 훈련 작업을 마무리하는 데 소요되는 시간입니다. 초기화 단계는 **훈련\$1루프\$1종료** 시간부터 **종료\$1시간**까지의 기간을 포함합니다.
+ **초기화(%)** - 전체 **작업\$1기간\$1초** 동안 **초기화**에 소요된 시간의 비율입니다.
+ **트레이닝 루프(%)** - **총 작업\$1기간\$1초** 대비 **훈련 작업**에 소요된 시간의 비율입니다.
+ **마무리(%)** - 총 **작업\$1기간\$1초** 대비 **마무리** 작업에 소요된 시간의 비율입니다.

## 시스템 사용 통계
<a name="debugger-profiling-report-walkthrough-system-usage"></a>

이 섹션에서는 시스템 사용률 통계의 개요를 볼 수 있습니다.

![\[디버거 프로파일링 보고서의 예\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/debugger/debugger-profiling-report-system-usage.png)


디버거 프로파일링 보고서에는 다음 정보가 포함됩니다.
+ **노드** - 노드 이름을 나열합니다. 다중 노드(여러 EC2 인스턴스)에서 분산 훈련을 사용하는 경우 노드 이름은 `algo-n` 형식입니다.
+ **지표** - 디버거에서 수집한 시스템 지표: CPU, GPU, CPU 메모리, GPU 메모리, I/O, 네트워크 지표.
+ **단위** - 시스템 지표의 단위.
+ **최대** - 각 시스템 지표의 최대값입니다.
+ **p99** - 각 시스템 사용률의 99번째 백분위수.
+ **p95** - 각 시스템 사용률의 95번째 백분위수.
+ **p50** - 각 시스템 사용률의 50번째 백분위수(중앙값).
+ **최소** - 각 시스템 지표의 최소값입니다.

## 프레임워크 지표 요약
<a name="debugger-profiling-report-walkthrough-framework-metrics"></a>

이 섹션에서 다음 파이 차트는 CPU 및 GPU의 프레임워크 작업 분석을 보여줍니다.

![\[디버거 프로파일링 보고서의 예\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/debugger/debugger-profiling-report-framework-metrics-summary.gif)


각 파이 차트는 수집된 프레임워크 지표를 다음과 같이 다양한 측면에서 분석합니다.
+ **TRAIN/EVAL 단계와 기타 단계 사이의 비율** - 여러 훈련 단계에 소요된 기간 간의 비율을 보여줍니다.
+ **정방 전달과 역방 전달 간의 비율** - 훈련 루프에서 정방 전달과 역방 전달에 소요된 시간 간의 비율을 보여줍니다.
+ **CPU/GPU 연산자 간 비율** - CPU 또는 GPU로 실행되는 연산자(예: 컨벌루션 연산자)에 소요된 시간 간의 비율을 보여줍니다.
+ **프레임워크에 기록된 일반 지표** - 데이터 로드, 정방 전달 및 역방 전달과 같은 주요 프레임워크 지표에 소요된 시간 간의 비율을 보여줍니다.

### 개요: CPU 연산자
<a name="debugger-profiling-report-walkthrough-cpu-operators"></a>

이 섹션에서는 CPU 연산자에 대한 자세한 정보를 제공합니다. 이 표는 가장 자주 호출되는 CPU 연산자에 소요된 시간의 백분율과 절대 누적 시간을 보여줍니다.

![\[디버거 프로파일링 보고서의 예\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/debugger/debugger-profiling-report-framework-cpu-operators.gif)


### 개요: GPU 연산자
<a name="debugger-profiling-report-walkthrough-gpu-operators"></a>

이 섹션에서는 GPU 연산자에 대한 자세한 정보를 제공합니다. 이 표는 가장 자주 호출되는 GPU 연산자에 소요된 시간의 백분율과 절대 누적 시간을 보여줍니다.

![\[디버거 프로파일링 보고서의 예\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/debugger/debugger-profiling-report-framework-gpu-operators.gif)


## 규칙 요약
<a name="debugger-profiling-report-walkthrough-rules-summary"></a>

이 섹션에서 디버거는 모든 규칙 평가 결과, 분석, 규칙 설명 및 제안을 집계합니다.

![\[디버거 프로파일링 보고서의 예\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/debugger/debugger-profiling-report-rules-summary.png)


## 훈련 루프 분석 - 스텝 기간
<a name="debugger-profiling-report-walkthrough-step-durations"></a>

이 섹션에서는 각 노드의 각 GPU 코어에 대한 스텝 기간에 대한 자세한 통계를 확인할 수 있습니다. 디버거는 스텝 기간의 평균, 최대값, p99, p95, p50 및 최소값을 평가하고 스텝 이상값을 평가합니다. 다음 히스토그램은 여러 작업자 노드와 GPU에서 캡처된 스텝 기간을 보여줍니다. 오른쪽에 있는 범례를 선택하여 각 작업자의 히스토그램을 활성화하거나 비활성화할 수 있습니다. 스텝 기간 이상치를 유발하는 특정 GPU가 있는지 확인할 수 있습니다.

![\[디버거 프로파일링 보고서의 예\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/debugger/debugger-profiling-report-framework-step-duration.gif)


## GPU 사용률 분석
<a name="debugger-profiling-report-walkthrough-gpu-utilization"></a>

이 섹션에서는 LowGPUUtilization 규칙을 기반으로 GPU 코어 사용률에 대한 자세한 통계를 보여줍니다. 또한 GPU 사용률 통계(평균, p95, p5)를 요약하여 훈련 작업에서 GPU를 제대로 활용하지 못하고 있는지 확인합니다.

## 배치 크기
<a name="debugger-profiling-report-walkthrough-batch-size"></a>

이 섹션에는 총 CPU 사용률, 개별 GPU 사용률, GPU 메모리 사용량에 대한 자세한 통계가 표시됩니다. BatchSize 규칙은 GPU를 더 잘 활용하기 위해 배치 크기를 변경해야 하는지 여부를 결정합니다. 배치 크기가 너무 작아서 사용률이 낮은지, 너무 커서 과다 사용 및 메모리 부족 문제가 발생하는지 확인할 수 있습니다. 도표의 상자에는 중앙값(p50)에서 각각 진한 보라색과 밝은 노란색으로 채워진 p25 및 p75 백분위수 범위가 표시되며, 오차 막대에는 하한에 대한 5번째 백분위수와 상한에 대한 95번째 백분위수가 표시됩니다.

![\[디버거 프로파일링 보고서의 예\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/debugger/debugger-profiling-report-batch-size.png)


## CPU 병목 현상
<a name="debugger-profiling-report-walkthrough-cpu-bottlenecks"></a>

이 섹션에서는 CPUBottleneck 규칙이 훈련 작업에서 감지한 CPU 병목 현상을 자세히 살펴볼 수 있습니다. 이 규칙은 CPU 사용률이 `cpu_threshold` 초과인지(기본값 90%) 그리고 GPU 사용률이 `gpu_threshold` 미만인지(기본값 10%) 확인합니다.

![\[디버거 프로파일링 보고서의 예\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/debugger/debugger-profiling-report-cpu-bottlenecks.png)


파이 차트에는 다음 정보가 표시됩니다.
+ **CPU 병목 현상으로 인한 낮은 GPU 사용량** - GPU 사용률이 임계값 초과 및 미만인 항목과 CPU 병목 현상 기준과 일치하는 항목 간의 데이터 포인트 비율을 표시합니다.
+ **TRAIN/EVAL 단계와 기타 단계 사이의 비율** - 여러 훈련 단계에 소요된 기간 간의 비율을 보여줍니다.
+ **정방 전달과 역방 전달 간의 비율** - 훈련 루프에서 정방 전달과 역방 전달에 소요된 시간 간의 비율을 보여줍니다.
+ **CPU/GPU 연산자 간 비율** - Python 연산자(예: 데이터 로더 프로세스, 정방 전달 및 역방 전달 연산자)가 GPU와 CPU에 소비한 시간 간의 비율을 표시합니다.
+ **프레임워크에 기록된 일반 지표** - 주요 프레임워크 지표와 메트릭에 소요된 기간 간의 비율을 보여줍니다.

## I/O 병목 현상
<a name="debugger-profiling-report-walkthrough-io-bottlenecks"></a>

이 섹션에서는 I/O 병목 현상의 요약을 확인할 수 있습니다. 이 규칙은 I/O 대기 시간과 GPU 사용률을 평가하고 I/O 요청에 소요되는 시간이 총 훈련 시간의 임계값 백분율을 초과하는지 모니터링합니다. 이는 GPU가 스토리지로부터 데이터가 도착하기를 기다리는 I/O 병목 현상을 의미할 수 있습니다.

## 다중 GPU 훈련에서 로드 밸런싱
<a name="debugger-profiling-report-walkthrough-workload-balancing"></a>

이 섹션에서는 GPU 전반의 워크로드 밸런싱 문제를 확인할 수 있습니다.

![\[디버거 프로파일링 보고서의 예\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/debugger/debugger-profiling-report-workload-balancing.gif)


## GPU 메모리 분석
<a name="debugger-profiling-report-walkthrough-gpu-memory"></a>

이 섹션에서는 GPUMemoryIncrease 규칙으로 수집한 GPU 메모리 사용률을 분석할 수 있습니다. 도표의 상자에는 중앙값(p50)에서 각각 진한 보라색과 밝은 노란색으로 채워진 p25 및 p75 백분위수 범위가 표시되며, 오차 막대에는 하한에 대한 5번째 백분위수와 상한에 대한 95번째 백분위수가 표시됩니다.

![\[디버거 프로파일링 보고서의 예\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/debugger/debugger-profiling-report-gpu-memory-utilization.png)
