

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

# 훈련 작업 모니터링 및 분석용 Amazon CloudWatch 지표
<a name="training-metrics"></a>

Amazon SageMaker 훈련 작업은 훈련 데이터세트에서 예시를 제공하여 예측을 수행하도록 모델을 교육하는 반복적 프로세스입니다. 일반적으로 훈련 알고리즘은 훈련 오류 및 예측 정확도 등과 같은 여러 지표를 계산합니다. 이러한 지표는 모델이 잘 학습하고 있어 처음 보는 데이터에 대한 예측을 잘 일반화할 수 있는지 여부를 진단하는 데 도움이 됩니다. 훈련 알고리즘은 이러한 지표의 값을 로그에 쓰고 SageMaker AI는 실시간으로 이러한 로그를 모니터링하여 Amazon CloudWatch에 보냅니다. 훈련 작업의 성능을 분석하기 위해 사용자는 CloudWatch에서 이러한 지표 그래프를 볼 수 있습니다. 또한 훈련 작업이 완료되면 사용자는 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html) 작업을 호출해 최종 반복에서 계산한 지표 값 목록을 얻을 수 있습니다.

**참고**  
Amazon CloudWatch는 [고해상도 사용자 지정 지표](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html)를 지원하며, 최상의 해상도는 1초입니다. 그러나 해상도가 높을수록 CloudWatch 지표의 수명이 짧아집니다. 1초 주파수 해상도의 경우 CloudWatch 지표는 3시간 동안 사용할 수 있습니다. CloudWatch 지표의 해상도와 수명에 대한 자세한 내용은 *Amazon CloudWatch API 참조*의 [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html)를 참조하세요.

**작은 정보**  
훈련 작업을 100밀리초(0.1초)까지 세밀한 해상도로 프로파일링하고 언제든지 사용자 지정 분석을 위해 Amazon S3에 훈련 지표를 무기한 저장하려는 경우 [Amazon SageMaker Debugger](https://docs.aws.amazon.com/sagemaker/latest/dg/train-debugger.html) 사용을 고려해 보세요. SageMaker Debugger는 일반적인 훈련 문제를 자동으로 감지하는 내장 규칙을 제공하며, 하드웨어 리소스 사용 문제(예: CPU, GPU, I/O 병목 현상) 및 비수렴 모델 문제(예: 과적합, 그라데이션 소실, 텐서 폭발)를 탐지합니다. SageMaker Debugger는 Studio Classic 및 프로파일링 보고서를 통해 시각화도 제공합니다. Debugger 시각화를 살펴보려면 [SageMaker Debugger 인사이트 대시보드 안내](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-on-studio-insights-walkthrough.htm), [Debugger 프로파일링 보고서 안내](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-profiling-report.html#debugger-profiling-report-walkthrough) 및 [SMDebug 클라이언트 라이브러리를 사용한 데이터 분석](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-analyze-data.html)을 참조하세요.

**Topics**
+ [훈련 지표 정의](define-train-metrics.md)
+ [훈련 작업 지표 보기](view-train-metrics.md)
+ [예제: 훈련 및 검증 곡선 보기](train-valid-curve.md)

# 훈련 지표 정의
<a name="define-train-metrics"></a>

SageMaker AI는 훈련 작업 로그를 자동으로 파싱하여 훈련 지표를 CloudWatch로 보냅니다. 기본적으로 [SageMaker AI는 SageMaker AI 작업 및 엔드포인트 지표](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html#cloudwatch-metrics-jobs)에 나열된 시스템 리소스 사용률 지표를 전송합니다. SageMaker AI가 나만의 알고리즘의 훈련 작업에서 로그를 구문 분석하고 사용자 지정 지표를 CloudWatch로 보내도록 하려면 SageMaker AI 훈련 작업 요청을 구성할 때 지표 이름과 정규 표현식을 전달하여 지표 정의를 지정해야 합니다.

사용자는 SageMaker AI 콘솔, [SageMaker AI Python SDK](https://github.com/aws/sagemaker-python-sdk) 또는 하위 수준의 SageMaker AI API를 사용하여 추적하려는 지표를 지정할 수 있습니다.

자체 알고리즘을 사용하는 경우 다음과 같이 하세요.
+ 캡처하려는 지표를 알고리즘이 로그에 쓰도록 확인하세요.
+ 로그를 정확하게 검색하여 CloudWatch로 전송할 지표의 값을 캡처하는 정규식을 정의합니다.

예를 들어 알고리즘이 훈련 오류 및 검증 오류에 대해 다음과 같은 지표를 내보낸다고 가정해 보겠습니다.

```
Train_error=0.138318;  Valid_error=0.324557;
```

CloudWatch에서 두 지표를 모두 모니터링하려는 경우 지표 정의 사전은 다음 예와 같아야 합니다.

```
[
    {
        "Name": "train:error",
        "Regex": "Train_error=(.*?);"
    },
    {
        "Name": "validation:error",
        "Regex": "Valid_error=(.*?);"
    }    
]
```

앞의 예제에서 정의한 `train:error` 지표의 regex에서 regex의 첫 부분은 정확한 텍스트 "Train\$1error="를 찾고, `(.*?);` 표현식은 첫 번째 세미콜론 문자가 나타날 때까지 모든 문자를 캡처합니다. 이 표현식에서 괄호가 나오면 regex는 그 괄호 안의 내용을 캡처합니다. `.`는 모든 문자를 의미하고, `*`는 0 이상을 의미하며 `?`는 첫 번째 `;` 문자가 나올 때까지만 캡처하라는 의미입니다.

## SageMaker AI Python SDK를 사용하여 지표 정의하기
<a name="define-train-metrics-sdk"></a>

`Estimator` 객체를 초기화할 때 지표 이름 및 정규식 목록을 `metric_definitions` 인수로 지정하여 CloudWatch에 보내려는 지표를 정의합니다. 예를 들어 CloudWatch에서 `train:error` 및 `validation:error` 지표를 모두 모니터링하려는 경우 `Estimator` 초기화는 다음 예제와 같습니다.

```
import sagemaker
from sagemaker.estimator import Estimator

estimator = Estimator(
    image_uri="your-own-image-uri",
    role=sagemaker.get_execution_role(), 
    sagemaker_session=sagemaker.Session(),
    instance_count=1,
    instance_type='ml.c4.xlarge',
    metric_definitions=[
       {'Name': 'train:error', 'Regex': 'Train_error=(.*?);'},
       {'Name': 'validation:error', 'Regex': 'Valid_error=(.*?);'}
    ]
)
```

[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) 추정기를 사용한 훈련에 대한 추가 정보는 GitHub의 [Sagemaker Python SDK](https://github.com/aws/sagemaker-python-sdk#sagemaker-python-sdk-overview)를 참조하세요.

## SageMaker AI 콘솔을 사용하여 지표 정의하기
<a name="define-train-metrics-console"></a>

훈련 작업을 생성할 때 SageMaker AI 콘솔에서 **ECR에서 나만의 알고리즘 컨테이너** 옵션을 알고리즘 소스로 선택하는 경우 **지표** 섹션에 지표 정의를 추가하세요. 다음 스크린샷은 예제 지표 이름과 해당 정규 표현식을 추가한 후의 모습을 보여줍니다.

![\[콘솔의 예제 알고리즘 옵션 양식.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/training-metrics-using-smconsole.png)


## 하위 수준 SageMaker AI API를 사용하여 지표 정의하기
<a name="define-train-metrics-api"></a>

[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) 작업에 전달하는 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AlgorithmSpecification.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AlgorithmSpecification.html) 입력 파라미터의 `MetricDefinitions` 필드에서 지표 이름 및 정규 표현식 목록을 지정하여 CloudWatch에 보내려는 지표를 정의합니다. 예를 들어 CloudWatch에서 `train:error` 및 `validation:error` 지표를 모두 모니터링하려는 경우 `AlgorithmSpecification`은 다음 예제와 같습니다.

```
"AlgorithmSpecification": {
    "TrainingImage": your-own-image-uri,
    "TrainingInputMode": "File",
    "MetricDefinitions" : [
        {
            "Name": "train:error",
            "Regex": "Train_error=(.*?);"
        },
        {
            "Name": "validation:error",
            "Regex": "Valid_error=(.*?);"
        }
    ]
}
```

하위 수준 SageMaker AI API를 사용한 훈련 작업 정의 및 실행에 대한 추가 정보는 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)을 참조하세요.

# 훈련 작업 지표 보기
<a name="view-train-metrics"></a>

Amazon CloudWatch 또는 SageMaker AI 콘솔에서 Amazon SageMaker 훈련 작업에서 생성된 지표를 볼 수 있습니다.

## 훈련 작업 지표 모니터링(CloudWatch 콘솔)
<a name="view-train-metrics-cw"></a>

사용자는 CloudWatch 콘솔에서 훈련 작업이 발송하는 지표를 실시간으로 모니터링할 수 있습니다.

**훈련 작업 지표를 모니터링하려면 (CloudWatch 콘솔)**

1. [https://console.aws.amazon.com/cloudwatch](https://console.aws.amazon.com/cloudwatch) CloudWatch 콘솔을 엽니다.

1. **지표** 탭을 선택한 후 **/aws/sagemaker/TrainingJobs**를 선택합니다.

1. **TrainingJobName**을 선택합니다.

1. **모든 지표** 탭에서 모니터링할 훈련 지표의 이름을 선택합니다.

1. **그래프로 표시된 지표** 탭에서 그래프 옵션을 구성합니다. CloudWatch 그래프 사용에 대한 추가 정보는 *Amazon CloudWatch 사용 설명서*의 [그래프 지표](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph_metrics.html)를 참조하세요.

## 훈련 작업 지표 모니터링(SageMaker AI 콘솔)
<a name="view-train-metrics-sm"></a>

사용자는 SageMaker AI 콘솔을 사용하여 훈련 작업이 내보내는 지표를 실시간으로 모니터링할 수 있습니다.

**훈련 작업 지표를 모니터링하려면(SageMaker AI 콘솔)**

1. [https://console.aws.amazon.com/sagemaker](https://console.aws.amazon.com/sagemaker)에서 SageMaker AI 콘솔을 엽니다.

1. **훈련 작업**을 선택한 후 지표를 확인하려는 훈련 작업을 선택합니다.

1. **TrainingJobName**을 선택합니다.

1. 사용자는 **모니터** 섹션에서 인스턴스 사용률 그래프와 알고리즘 지표를 검토할 수 있습니다.  
![\[콘솔의 모니터 섹션에 있는 그래프의 예입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/console-metrics.png)

# 예제: 훈련 및 검증 곡선 보기
<a name="train-valid-curve"></a>

일반적으로 모델을 훈련하는 데이터는 훈련 및 검증 데이터세트로 분할합니다. 훈련 세트를 사용하여 훈련 데이터세트에 대한 예측을 수행하는 데 사용하는 모델 파라미터를 훈련합니다. 그런 다음 검증 세트에 대한 예측을 계산하여 모델이 얼마나 잘 수행되고 있는지 테스트합니다. 훈련 작업의 성능을 분석하려면 일반적으로 검증 곡선을 기준으로 훈련 곡선을 그래프로 작성합니다.

시간의 흐름에 따른 훈련 및 검증 세트 둘 다에 대한 정확도를 보여주는 그래프는 모델의 성능 향상에 도움이 될 수 있습니다. 예를 들어, 훈련 정확도가 시간이 흐름에 따라 점점 증가하지만 일부 지점에서 검증 정확도가 떨어지기 시작하면 모델이 과적합일 수 있습니다. 이 문제를 해결하려면 사용자는 [정규화](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#regularization)를 늘리는 등의 방법으로 모델을 조정합니다.

이 예시에서는 사용자는 SageMaker AI 노트북 인스턴스의 **예시 노트북** 섹션에서 **Image-classification-full-training** 예시를 사용할 수 있습니다. SageMaker 노트북 인스턴스가 없는 경우 [자습서를 위해 Amazon SageMaker 노트북 인스턴스 만들기](gs-setup-working-env.md)의 지침에 따라 노트북 인스턴스를 하나 생성합니다. 원할 경우 사용자는 GitHub의 예제 노트북에서 [End-to-End Multiclass Image Classification Example](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/imageclassification_caltech/Image-classification-fulltraining.html)를 따를 수 있습니다. 또한, 훈련 데이터와 모델 출력을 저장하려면 Amazon S3 버킷도 필요합니다.

**훈련 및 검증 오류 곡선을 보려면**

1. [https://console.aws.amazon.com/sagemaker](https://console.aws.amazon.com/sagemaker)에서 SageMaker AI 콘솔을 엽니다.

1. **노트북** 및 **노트북 인스턴스**를 차례로 선택합니다.

1. 사용하려는 노트북 인스턴스를 선택한 후 **열기**를 선택합니다.

1. 노트북 인스턴스의 대시보드에서 **SageMaker AI 예시**를 선택합니다.

1. **Amazon 알고리즘 소개** 섹션을 확장한 후 **Image-classification-fulltraining.ipynb** 옆의 **사용**을 선택합니다.

1. **복사본 생성**을 선택합니다. SageMaker AI가 노트북 인스턴스에 **Image-classification-fulltraining.ipynb** 노트북의 편집 가능한 사본을 생성합니다.

1. 노트북의 모든 셀을 **추론** 섹션까지 실행합니다. 엔드포인트를 배포하거나 이 예제에 대한 추론을 얻을 필요가 없습니다.

1. 훈련 작업이 시작된 후에는 [https://console.aws.amazon.com/cloudwatch](https://console.aws.amazon.com/cloudwatch)에서 CloudWatch 콘솔을 엽니다.

1. **지표** 탭을 선택한 후 **/aws/sagemaker/TrainingJobs**를 선택합니다.

1. **TrainingJobName**을 선택합니다.

1. **모든 지표** 탭에서 노트북에서 생성한 훈련 작업에 대한 **train:accuracy** 지표와 **validation:accuracy** 지표를 선택합니다.

1. 그래프에서 지표 값을 보려는 영역을 선택하여 확대합니다. 다음과 같은 예제와 같은 것이 표시되어야 합니다.  
![\[그래프에서 영역을 확대했습니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/train-valid-acc.png)