

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

# 훈련 지표 정의
<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)을 참조하세요.