기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
지표 및 환경 변수를 정의합니다.
튜닝 작업은 지표를 사용하여 성능을 평가함으로써 시작하는 훈련 작업에 대한 하이퍼파라미터를 최적화합니다. 이 가이드에서는 학습에 사용자 지정 알고리즘을 사용하거나 Amazon의 내장 알고리즘을 사용할 수 있도록 지표를 정의하는 방법을 보여줍니다 SageMaker. 또한 이 안내서에서는 자동 모델 튜닝(AMT) 작업 중에 환경 변수를 지정하는 방법을 알아보겠습니다.
지표 정의
Amazon SageMaker 하이퍼파라미터 튜닝은 기계 학습 stdout
알고리즘과 stderr
스트림을 파싱하여 손실 또는 검증 정확도와 같은 지표를 찾습니다. 지표를 통해 모델이 데이터 세트에서 얼마나 잘 수행되고 있는지 알 수 있습니다.
다음 단원에는 훈련 시 기본 제공 알고리즘과 사용자 지정 알고리즘의 2가지 유형을 사용하는 방법에 대한 설명이 있습니다.
훈련 시 기본 제공 알고리즘 사용하기
SageMaker 기본 제공 알고리즘 중 하나를 사용하는 경우 지표가 이미 정의되어 있습니다. 게다가 기본 제공 알고리즘은 하이퍼파라미터 튜닝에 자동으로 지표를 전송하여 최적화합니다. 이러한 지표는 Amazon CloudWatch 로그에도 기록됩니다. 자세한 내용은 Amazon을 통한 Amazon SageMaker 이벤트 로깅을 참조하십시오 CloudWatch.
튜닝 작업에 대한 목표 지표인 경우 기본 제공 알고리즘에서 내보내는 지표 중 하나를 선택합니다. 사용 가능한 지표 목록은 Amazon SageMaker 내장 알고리즘 또는 사전 학습된 모델 사용의 적절한 알고리즘에 대한 모델 조정 섹션을 참조하십시오.
튜닝 작업에서 모니터링할 지표는 최대 40개까지 선택할 수 있습니다. 이러한 지표 중 하나를 목표 지표로 선택합니다. 하이퍼파라미터 튜닝 작업은 목표 지표 대비 가장 성과가 좋았던 훈련 작업을 반환합니다.
참고
하이퍼파라미터 튜닝은 훈련 중에 사용할 수 있도록 추가 하이퍼파라미터 _tuning_objective_metric
을(를) 자동 전송하여 목표 지표를 튜닝 작업에 전달합니다.
훈련 시 사용자 지정 알고리즘 사용하기
이 섹션에서는 훈련 시 자체 사용자 지정 알고리즘을 사용하도록 자체 지표를 정의하는 방법을 알아보겠습니다. 이때 알고리즘이 최소 하나의 지표를 stderr
또는 stdout
에 기록해야 합니다. 하이퍼파라미터 튜닝은 이러한 스트림을 구문 분석하여 모델이 데이터 세트에서 얼마나 잘 수행되고 있는지 보여주는 알고리즘 지표를 찾습니다.
튜닝 작업에서 모니터링하는 각 지표에 대해 이름 및 정규식을 지정하여 사용자 지정 지표를 정의할 수 있습니다. 그 다음에 이 지표 정의를 AlgorithmSpecification
의 MetricDefinitions
필드에 있는 TrainingJobDefinition
파라미터 내 CreateHyperParameterTuningJob
API에 전달합니다.
다음은 훈련 알고리즘에서 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
을(를) 캡쳐합니다.
지표 중에서 튜닝 작업에 대한 목표 지표로 정의할 지표를 하나 선택합니다. SageMaker API를 사용하는 경우 CreateHyperParameterTuningJob
작업에 보내는 HyperParameterTuningJobConfig
파라미터의 HyperParameterTuningJobObjective
필드에 name
키 값을 지정하십시오.
환경 변수 지정
SageMaker AMT는 튜닝 작업 내에서 하이퍼파라미터를 최적화하여 모델 성능에 가장 적합한 파라미터를 찾습니다. 환경 변수를 사용하여 튜닝 작업 동작을 변경하도록 구성할 수 있습니다. 또한 훈련 중에 사용한 환경 변수를 튜닝 작업에서 사용할 수도 있습니다.
조정 작업의 환경 변수를 사용하거나 새 환경 변수를 지정하려면 API Environment
내에서 문자열 값을 입력하십시오. SageMaker HyperParameterTrainingJobDefinition 이 교육 작업 정의를 CreateHyperParameterTuningJobAPI에 전달하십시오.
예를 들어, 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 } ], ..., }, ..., }