기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
지표 및 환경 변수를 정의합니다.
튜닝 작업은 지표를 사용하여 성능을 평가함으로써 시작하는 훈련 작업에 대한 하이퍼파라미터를 최적화합니다. 이 안내서는 훈련에 사용자 지정 알고리즘을 사용하거나 Amazon 의 내장 알고리즘을 사용할 수 있도록 지표를 정의하는 방법을 보여줍니다 SageMaker. 또한 이 안내서는 자동 모델 튜닝(AMT) 작업 중에 환경 변수를 지정하는 방법을 보여줍니다.
지표 정의
Amazon SageMaker 하이퍼파라미터 튜닝은 기계 학습 알고리즘stdout
과 stderr
스트림을 구문 분석하여 손실 또는 검증 정확도와 같은 지표를 찾습니다. 지표를 통해 모델이 데이터 세트에서 얼마나 잘 수행되고 있는지 알 수 있습니다.
다음 단원에는 훈련 시 기본 제공 알고리즘과 사용자 지정 알고리즘의 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 } ], ..., }, ..., }