지표 및 환경 변수를 정의합니다. - Amazon SageMaker

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

지표 및 환경 변수를 정의합니다.

튜닝 작업은 지표를 사용하여 성능을 평가함으로써 시작하는 훈련 작업에 대한 하이퍼파라미터를 최적화합니다. 이 안내서는 훈련에 사용자 지정 알고리즘을 사용하거나 Amazon 의 내장 알고리즘을 사용할 수 있도록 지표를 정의하는 방법을 보여줍니다 SageMaker. 또한 이 안내서는 자동 모델 튜닝(AMT) 작업 중에 환경 변수를 지정하는 방법을 보여줍니다.

지표 정의

Amazon SageMaker 하이퍼파라미터 튜닝은 기계 학습 알고리즘stdoutstderr 스트림을 구문 분석하여 손실 또는 검증 정확도와 같은 지표를 찾습니다. 지표를 통해 모델이 데이터 세트에서 얼마나 잘 수행되고 있는지 알 수 있습니다.

다음 단원에는 훈련 시 기본 제공 알고리즘과 사용자 지정 알고리즘의 2가지 유형을 사용하는 방법에 대한 설명이 있습니다.

훈련 시 기본 제공 알고리즘 사용하기

SageMaker 기본 제공 알고리즘 중 하나를 사용하는 경우 지표가 이미 정의되어 있습니다. 게다가 기본 제공 알고리즘은 하이퍼파라미터 튜닝에 자동으로 지표를 전송하여 최적화합니다. 이러한 지표는 Amazon CloudWatch 로그에도 기록됩니다. 자세한 내용은 Amazon SageMaker 을 사용하여 Amazon 이벤트 로그를 CloudWatch 참조하세요.

튜닝 작업에 대한 목표 지표인 경우 기본 제공 알고리즘에서 내보내는 지표 중 하나를 선택합니다. 사용 가능한 지표 목록은 Amazon SageMaker 기본 제공 알고리즘 사용 또는 사전 훈련된 모델 의 적절한 알고리즘에 대한 모델 튜닝 섹션을 참조하세요.

튜닝 작업에서 모니터링할 지표는 최대 40개까지 선택할 수 있습니다. 이러한 지표 중 하나를 목표 지표로 선택합니다. 하이퍼파라미터 튜닝 작업은 목표 지표 대비 가장 성과가 좋았던 훈련 작업을 반환합니다.

참고

하이퍼파라미터 튜닝은 훈련 중에 사용할 수 있도록 추가 하이퍼파라미터 _tuning_objective_metric을(를) 자동 전송하여 목표 지표를 튜닝 작업에 전달합니다.

훈련 시 사용자 지정 알고리즘 사용하기

이 섹션에서는 훈련 시 자체 사용자 지정 알고리즘을 사용하도록 자체 지표를 정의하는 방법을 알아보겠습니다. 이때 알고리즘이 최소 하나의 지표를 stderr 또는 stdout에 기록해야 합니다. 하이퍼파라미터 튜닝은 이러한 스트림을 구문 분석하여 모델이 데이터 세트에서 얼마나 잘 수행되고 있는지 보여주는 알고리즘 지표를 찾습니다.

튜닝 작업에서 모니터링하는 각 지표에 대해 이름 및 정규식을 지정하여 사용자 지정 지표를 정의할 수 있습니다. 그런 다음 이러한 지표 정의를 의 MetricDefinitions 필드에 CreateHyperParameterTuningJob API 있는 TrainingJobDefinition 파라미터의 에 전달합니다AlgorithmSpecification.

다음은 훈련 알고리즘에서 stderr 또는 stdout에 기록된 로그의 샘플 출력입니다.

GAN_loss=0.138318; Scaled_reg=2.654134; disc:[-0.017371,0.102429] real 93.3% gen 0.0% disc-combined=0.000000; disc_train_loss=1.374587; Loss = 16.020744; Iteration 0 took 0.704s; Elapsed=0s

다음 코드 예제에서는 Python에서 정규 표현식을 사용하는 방법을 알아보겠습니다. 이는 샘플 로그 출력을 검색하고 서로 다른 네 가지 지표의 숫자 값을 캡처하는 데 사용됩니다.

[ { "Name": "ganloss", "Regex": "GAN_loss=(.*?);", }, { "Name": "disc-combined", "Regex": "disc-combined=(.*?);", }, { "Name": "discloss", "Regex": "disc_train_loss=(.*?);", }, { "Name": "loss", "Regex": "Loss = (.*?);", }, ]

정규 표현식에서 괄호 ()은(는) 정규 표현식의 일부를 그룹화하는 데 사용됩니다.

  • 코드 예제에 정의된 loss 지표의 경우 표현식 (.*?);은(는) 정확한 텍스트 "Loss="와(과) 첫 번째 세미콜론(;) 문자 사이의 모든 문자를 캡처합니다.

  • . 문자는 정규 표현식이 모든 문자와 일치하도록 지시합니다.

  • * 문자는 0개 이상의 문자와 일치함을 의미합니다.

  • ? 문자는 ; 문자의 첫 인스턴스까지만 캡쳐함을 의미합니다.

코드 샘플에 정의된 손실 지표는 샘플 출력에서 Loss = 16.020744을(를) 캡쳐합니다.

지표 중에서 튜닝 작업에 대한 목표 지표로 정의할 지표를 하나 선택합니다. 를 사용하는 경우 CreateHyperParameterTuningJob 작업에 전송하는 HyperParameterTuningJobConfig 파라미터의 HyperParameterTuningJobObjective 필드에 name 키 값을 SageMaker API지정합니다.

환경 변수 지정

SageMaker AMT 는 튜닝 작업 내에서 하이퍼파라미터를 최적화하여 모델 성능에 가장 적합한 파라미터를 찾습니다. 환경 변수를 사용하여 튜닝 작업 동작을 변경하도록 구성할 수 있습니다. 또한 훈련 중에 사용한 환경 변수를 튜닝 작업에서 사용할 수도 있습니다.

튜닝 작업에서 환경 변수를 사용하거나 새 환경 변수를 지정하려면 Environment SageMaker HyperParameterTrainingJobDefinition API. 이 훈련 작업 정의를 CreateHyperParameterTuningJob 에 전달합니다API.

예를 들어, SM_LOG_LEVEL 환경 변수를 다음 값으로 설정하여 Python 컨테이너의 출력을 조정할 수 있습니다.

NOTSET=0 DEBUG=10 INFO=20 WARN=30 ERROR=40 CRITICAL=50

예를 들어 컨테이너 로그를 디버깅10하기 위해 로그 수준을 로 설정하려면 다음과 HyperParameterTrainingJobDefinition같이 에서 환경 변수를 설정합니다.

{ "HyperParameterTuningJobConfig": { ..., } "TrainingJobDefinition": { ..., "Environment" : [ { "SM_LOG_LEVEL": 10 } ], ..., }, ..., }