기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Neptune ML의 모델 하이퍼파라미터 구성 사용자 지정
Neptune ML 모델 훈련 작업을 시작하면 Neptune ML은 이전 데이터 처리 작업에서 추론한 정보를 자동으로 사용합니다. 이 정보를 사용하여 하이퍼파라미터 구성 범위를 생성합니다. 이 범위는 SageMaker 하이퍼파라미터 조정 작업을 생성하는 데 사용되는 하이퍼파라미터 구성 범위를 생성하여 작업에 맞게 여러 모델을 훈련시킵니다. 이렇게 하면 훈련할 모델에 대해 긴 하이퍼파라미터 값 목록을 지정할 필요가 없습니다. 대신 작업 유형, 그래프 유형 및 조정 작업 설정을 기반으로 모델 하이퍼파라미터 범위와 기본값이 선택됩니다.
하지만 데이터 처리 작업에서 생성되는 JSON 구성 파일을 수정하여 기본 하이퍼파라미터 구성을 재정의하고 사용자 지정 하이퍼파라미터를 제공할 수도 있습니다.
Neptune ML modelTraining API를 사용하면 maxHPONumberOfTrainingJobs
, maxHPOParallelTrainingJobs
, trainingInstanceType
같은 여러 상위 수준 하이퍼파라미터 조정 작업 설정을 제어할 수 있습니다. 모델 하이퍼파라미터를 보다 세밀하게 제어하기 위해 데이터 처리 작업에서 생성하는 model-HPO-configuration.json
파일을 사용자 지정할 수 있습니다. 파일은 처리 작업 출력을 위해 지정한 Amazon S3 위치에 저장됩니다.
파일을 다운로드하고 편집하여 기본 하이퍼파라미터 구성을 재정의하고 동일한 Amazon S3 위치에 다시 업로드할 수 있습니다. 파일 이름을 변경하지 말고 편집할 때 이 지침을 주의 깊게 따르세요.
Amazon S3에서 파일을 다운로드하려면:
aws s3 cp \ s3://
(bucket name)
/(path to output folder)
/model-HPO-configuration.json \ ./
편집을 마쳤으면 파일을 원래 위치로 다시 업로드합니다.
aws s3 cp \ model-HPO-configuration.json \ s3://
(bucket name)
/(path to output folder)
/model-HPO-configuration.json
model-HPO-configuration.json
파일 구조
이 model-HPO-configuration.json
파일은 훈련할 모델, 기계 학습 task_type
, 다양한 모델 훈련 실행 시 변경되거나 수정되어야 하는 하이퍼파라미터를 지정합니다.
하이퍼파라미터는 하이퍼파라미터 조정 작업이 간접적으로 호출될 때 하이퍼파라미터에 부여되는 우선순위를 나타내는 다양한 Tier에 속하는 것으로 분류됩니다.
Tier-1 하이퍼파라미터가 1순위입니다.
maxHPONumberOfTrainingJobs
를 10보다 작은 값으로 설정하면 Tier-1 하이퍼파라미터만 조정되고 나머지는 기본값을 사용합니다.Tier-2 하이퍼파라미터는 우선순위가 낮으므로, 조정 작업의 총 훈련 작업이 10개 이상/50개 미만인 경우 Tier-1과 Tier-2 하이퍼파라미터가 모두 조정됩니다.
총 훈련 작업이 50개 이상인 경우에만 Tier-3 하이퍼파라미터가 Tier-1 및 Tier-2와 함께 조정됩니다.
마지막으로, 고정 하이퍼파라미터는 전혀 조정되지 않고 항상 기본값을 사용합니다.
model-HPO-configuration.json
파일 예제
다음은 샘플 model-HPO-configuration.json
파일입니다.
{ "models": [ { "model": "rgcn", "task_type": "node_class", "eval_metric": { "metric": "acc" }, "eval_frequency": { "type": "evaluate_every_epoch", "value": 1 }, "1-tier-param": [ { "param": "num-hidden", "range": [16, 128], "type": "int", "inc_strategy": "power2" }, { "param": "num-epochs", "range": [3,30], "inc_strategy": "linear", "inc_val": 1, "type": "int", "node_strategy": "perM" }, { "param": "lr", "range": [0.001,0.01], "type": "float", "inc_strategy": "log" } ], "2-tier-param": [ { "param": "dropout", "range": [0.0,0.5], "inc_strategy": "linear", "type": "float", "default": 0.3 }, { "param": "layer-norm", "type": "bool", "default": true } ], "3-tier-param": [ { "param": "batch-size", "range": [128, 4096], "inc_strategy": "power2", "type": "int", "default": 1024 }, { "param": "fanout", "type": "int", "options": [[10, 30],[15, 30], [15, 30]], "default": [10, 15, 15] }, { "param": "num-layer", "range": [1, 3], "inc_strategy": "linear", "inc_val": 1, "type": "int", "default": 2 }, { "param": "num-bases", "range": [0, 8], "inc_strategy": "linear", "inc_val": 2, "type": "int", "default": 0 } ], "fixed-param": [ { "param": "concat-node-embed", "type": "bool", "default": true }, { "param": "use-self-loop", "type": "bool", "default": true }, { "param": "low-mem", "type": "bool", "default": true }, { "param": "l2norm", "type": "float", "default": 0 } ] } ] }
model-HPO-configuration.json
파일 요소
이 파일에는 단일 모델-구성 객체를 포함하는 models
로 이름이 지정된 단일 최상위 배열이 있는 JSON 객체가 포함되어 있습니다. 파일을 사용자 지정할 때는 models
배열에 모델-구성 객체가 하나만 있어야 합니다. 파일에 둘 이상의 모델-구성 객체가 포함된 경우 조정 작업이 실패하고 경고가 표시됩니다.
모델-구성 객체에는 다음과 같은 최상위 요소가 포함되어 있습니다.
-
model
– (문자열) 훈련할 모델 유형입니다(수정 금지). 유효한 값은 다음과 같습니다."rgcn"
– 노드 분류 및 회귀 작업과 이기종 연결 예측 작업의 기본값입니다."transe"
– KGE 연결 예측 작업의 기본값입니다."distmult"
– KGE 연결 예측 작업의 대체 모델 유형입니다."rotate"
– KGE 연결 예측 작업의 대체 모델 유형입니다.
일반적으로 모델 유형마다 적용 가능한 하이퍼파라미터가 크게 달라서 훈련 작업이 시작된 후 구문 분석 오류가 발생할 수 있으니
model
값을 직접 수정하지 마세요.모델 유형을 변경하려면
model-HPO-configuration.json
파일에서 변경하는 대신 modelTraining API의modelName
파라미터를 사용하세요.사용하려는 모델의 기본 모델 구성 템플릿을 복사한 후
model-HPO-configuration.json
파일에 붙여넣어 모델 유형을 변경하고 하이퍼파라미터를 세밀하게 조정할 수 있습니다. 추론된 작업 유형이 여러 모델을 지원하는 경우model-HPO-configuration.json
파일과 동일한 Amazon S3 위치에 이름이hpo-configuration-templates
인 폴더가 있습니다. 이 폴더에는 작업에 적용할 수 있는 다른 모델의 기본 하이퍼파라미터 구성이 모두 들어 있습니다.예를 들어,
KGE
연결 예측 작업의 모델 및 하이퍼파라미터 구성을 기본transe
모델에서distmult
모델로 변경하려면hpo-configuration-templates/distmult.json
파일의 콘텐츠를model-HPO-configuration.json
파일에 붙여넣은 후 필요에 따라 하이퍼파라미터를 편집하면 됩니다.참고
modelTraining
API에서modelName
파라미터를 설정하고model-HPO-configuration.json
파일의model
및 하이퍼파라미터 사양도 변경한 경우 둘이 다르면model-HPO-configuration.json
파일의model
값이 우선하며modelName
값은 무시됩니다. -
task_type
– (문자열) 데이터 처리 작업에 의해 유추되거나 데이터 처리 작업에 직접 전달된 기계 학습 작업 유형입니다(수정 금지). 유효한 값은 다음과 같습니다."node_class"
"node_regression"
"link_prediction"
데이터 처리 작업은 내보낸 데이터 세트와 생성된 훈련 작업 구성 파일에서 데이터 세트의 속성을 검사하여 작업 유형을 유추합니다.
이 값은 변경할 수 없습니다. 다른 작업을 훈련시키려면 새 데이터 처리 작업을 실행해야 합니다.
task_type
값이 예상과 다르면 데이터 처리 작업에 대한 입력이 올바른지 확인해야 합니다. 여기에는 데이터 내보내기 프로세스에서 생성된 훈련 작업 구성 파일뿐만 아니라modelTraining
API에 대한 파라미터도 포함됩니다. -
eval_metric
– (문자열) 평가 지표는 모델 성능을 평가하고 HPO 실행 전반에서 가장 성능이 좋은 모델을 선택하는 데 사용해야 합니다. 유효한 값은 다음과 같습니다."acc"
– 표준 분류 정확도입니다. 이는 단일 레이블 분류 작업의 기본값입니다. 단, 데이터 처리 중에 불균형한 레이블이 발견된 경우 기본값은"F1"
입니다."acc_topk"
– 올바른 레이블이 상위k
예측 항목 중 나타나는 횟수입니다.topk
에 추가 키로 전달하여k
값을 설정할 수도 있습니다."F1"
– F1 점수입니다. "mse"
– 회귀 작업용 평균 제곱 오차 지표입니다. "mrr"
– 평균 역수 순위 지표입니다. "precision"
– 참 양성과 예측된 양성의 비율로 계산(= true-positives / (true-positives + false-positives)
)된 모델 정밀도입니다."recall"
– 참 양성과 실제 양성의 비율로 계산(= true-positives / (true-positives + false-negatives)
)된 모델 재현율입니다."roc_auc"
– ROC 곡선아래 면적입니다. 다중 레이블 분류의 기본값입니다.
예를 들어, 지표를
F1
으로 변경하려면eval_metric
값을 다음과 같이 변경하면 됩니다." eval_metric": { "metric": "F1", },
또는 지표를
topk
정확도 점수로 바꾸려면 다음과 같이eval_metric
을 변경하세요."eval_metric": { "metric": "acc_topk", "topk": 2 },
-
eval_frequency
– (객체) 훈련 중에 검증 세트에 대한 모델의 성능을 확인해야 하는 빈도를 지정합니다. 검증 성능에 따라 조기 중단을 시작하고 최상의 모델을 저장할 수 있습니다.eval_frequency
객체에는 두 요소, 즉"type"
및"value"
가 있습니다. 예:"eval_frequency": { "type": "evaluate_every_pct", "value": 0.1 },
유효한
type
값은 다음과 같습니다.-
evaluate_every_pct
– 각 평가에서 완료해야 할 훈련 비율을 지정합니다.evaluate_every_pct
의 경우,"value"
필드에는 해당 백분율을 나타내는 0에서 1 사이의 부동 소수점 숫자가 포함됩니다. -
evaluate_every_batch
– 각 평가에 대해 완료해야 하는 훈련 배치의 수를 지정합니다.evaluate_every_batch
의 경우,"value"
필드에는 해당 배치 수를 나타내는 정수가 포함됩니다. -
evaluate_every_epoch
– 새 epoch가 자정에 시작되는 평가당 epoch 수를 지정합니다.evaluate_every_epoch
의 경우,"value"
필드에는 해당 epoch 수를 나타내는 정수가 포함됩니다.
eval_frequency
의 기본 설정은 다음과 같습니다."eval_frequency": { "type": "evaluate_every_epoch", "value": 1 },
-
-
1-tier-param
– (필수) Tier-1 하이퍼파라미터의 배열입니다.하이퍼파라미터를 조정하지 않으려면 빈 배열로 설정하면 됩니다. SageMaker 하이퍼파라미터 조정 작업에서 시작한 총 훈련 작업 수에는 영향을 주지 않습니다. 이는 1개 이상 10개 미만인 경우 모든 훈련 작업이 동일한 하이퍼파라미터 세트로 실행된다는 의미일 뿐입니다.
반면, 모든 하이퍼파라미터를 이 배열에 넣으면 조정 가능한 모든 하이퍼파라미터를 동일한 중요도로 취급할 수 있습니다.
-
2-tier-param
– (필수) Tier-2 하이퍼파라미터의 배열입니다.이러한 파라미터는
maxHPONumberOfTrainingJobs
값이 10보다 큰 경우에만 조정됩니다. 그렇지 않으면 기본값으로 고정됩니다.훈련 예산이 최대 10개의 훈련 작업이거나 다른 이유로 Tier-2 하이퍼파라미터를 원하지 않지만 조정 가능한 모든 하이퍼파라미터를 조정하려는 경우, 이 값을 빈 배열로 설정할 수 있습니다.
-
3-tier-param
– (필수) Tier-3 하이퍼파라미터의 배열입니다.이러한 파라미터는
maxHPONumberOfTrainingJobs
값이 50보다 큰 경우에만 조정됩니다. 그렇지 않으면 기본값으로 고정됩니다.Tier-3 하이퍼파라미터를 원하지 않는 경우 이 값을 빈 배열로 설정할 수 있습니다.
-
fixed-param
– (필수) 기본값만 사용하고 훈련 작업에 따라 달라지지 않는 고정된 하이퍼파라미터의 배열입니다.모든 하이퍼파라미터를 변경하려는 경우 이 값을 빈 배열로 설정하고 모든 Tier를 변경할 수 있을 만큼
maxHPONumberOfTrainingJobs
값을 큰 값으로 설정하거나 모든 하이퍼파라미터를 Tier-1으로 설정할 수 있습니다.
각 하이퍼파라미터를 1-tier-param
, 2-tier-param
, 3-tier-param
, fixed-param
으로 나타내는 JSON 객체에는 다음 요소가 포함됩니다.
-
param
– (문자열) 하이퍼파라미터의 이름입니다(변경 금지).Neptune ML의 유효한 하이퍼파라미터 이름 목록을 참조하세요.
-
type
– (문자열) 하이퍼파라미터 유형입니다(변경 금지).유효한 형식은
bool
,int
,float
입니다. -
default
– (문자열) 하이퍼파라미터의 기본값입니다.새 기본값을 설정할 수 있습니다.
조정 가능한 하이퍼파라미터에는 다음 요소도 포함될 수 있습니다.
-
range
– (배열) 조정 가능한 연속 하이퍼파라미터의 범위입니다.이 배열은 두 값, 즉 범위의 최소값과 최대값(
[min, max]
)으로 구성된 배열이어야 합니다. -
options
– (배열) 조정 가능한 범주형 하이퍼파라미터용 옵션입니다.이 배열에는 고려해야 할 모든 옵션이 포함되어야 합니다.
"options" : [value1, value2, ... valuen]
-
inc_strategy
– (문자열) 연속 조정 가능한 하이퍼파라미터 범위의 증분 변경 유형입니다(변경 금지).유횻값은
log
,linear
,power2
입니다. 범위 키가 설정된 경우에만 적용됩니다.이를 수정하면 하이퍼파라미터의 전체 범위를 조정에 사용하지 못할 수 있습니다.
-
inc_val
– (부동) 연속 조정 가능한 하이퍼파라미터의 연속 증분값이 달라지는 정도입니다(변경 금지).범위 키가 설정된 경우에만 적용됩니다.
이를 수정하면 하이퍼파라미터의 전체 범위를 조정에 사용하지 못할 수 있습니다.
-
node_strategy
– (문자열) 이 하이퍼파라미터의 유효 범위가 그래프의 노드 수에 따라 변경되어야 함을 나타냅니다(변경 금지).유효한 값은
"perM"
(백만 개당),"per10M"
(천만 개당),"per100M"
(1억 개당)입니다.이 값을 변경하는 대신
range
를 변경하세요. -
edge_strategy
– (문자열) 이 하이퍼파라미터의 유효 범위가 그래프의 엣지 수에 따라 변경되어야 함을 나타냅니다(변경 금지).유효한 값은
"perM"
(백만 개당),"per10M"
(천만 개당),"per100M"
(1억 개당)입니다.이 값을 변경하는 대신
range
를 변경하세요.
Neptune ML의 모든 하이퍼파라미터 목록
다음 목록에는 모든 모델 유형 및 작업에 대해 Neptune ML의 어느 곳에서나 설정할 수 있는 모든 하이퍼파라미터가 포함되어 있습니다. 전체 모델 유형에 전부 적용할 수 있는 것은 아니므로, 사용 중인 모델의 템플릿에 나타나는 하이퍼파라미터만 model-HPO-configuration.json
파일에 설정해야 합니다.
-
batch-size
– 원 포워드 패스에서 사용하는 대상 노드의 배치 크기입니다. 유형:int
.이 값을 훨씬 더 큰 값으로 설정하면 GPU 인스턴스 훈련 시 메모리 문제가 발생할 수 있습니다.
-
concat-node-embed
– 모델의 표현성을 높이기 위해 처리된 특성을 학습 가능한 초기 노드 임베딩과 결합하여 노드의 초기 표현을 가져올지 여부를 나타냅니다. 유형:bool
. -
dropout
– 드롭아웃 계층에 적용된 드롭아웃 확률입니다. 유형:float
. -
edge-num-hidden
– 엣지 특성 모듈의 숨겨진 계층 크기 또는 단위 수입니다.use-edge-features
가True
로 설정된 경우에만 사용합니다. 유형: float. -
enable-early-stop
– 조기 중단 기능을 사용할지 여부를 전환합니다. 유형:bool
. 기본값:true
.이 부울 파라미터를 사용하면 조기 중단 기능을 끌 수 있습니다.
-
fanout
– 이웃 샘플링 중에 대상 노드에 대해 샘플링할 이웃 수입니다. 유형:int
.이 값은
num-layers
와 밀접하게 연관되어 있으며, 항상 동일한 하이퍼파라미터 계층에 있어야 합니다. 각 잠재적 GNN 계층에 대해 팬아웃을 지정할 수 있기 때문입니다.이 하이퍼파라미터로 인해 모델 성능이 크게 달라질 수 있으므로, 고정하거나 Tier-2 또는 Tier-3 하이퍼파라미터로 설정해야 합니다. 이 값을 크게 설정하면 GPU 인스턴스 훈련 시 메모리 문제가 발생할 수 있습니다.
-
gamma
– 점수 함수의 여백 값입니다. 유형:float
.이는
KGE
연결 예측 모델에만 적용됩니다. -
l2norm
– 가중치에 L2 정규화 패널티를 부과하는 옵티마이저에서 사용되는 가중치 감소 값입니다. 유형:bool
. -
layer-norm
–rgcn
모델에 계층 정규화를 사용할지 여부를 나타냅니다. 유형:bool
. -
low-mem
– 속도가 저하되는 관계형 메시지 전달 함수를 저용량 메모리 방식으로 구현할지 여부를 나타냅니다. 유형:bool
. -
lr
– 학습률입니다. 유형:float
.이는 Tier-1 하이퍼파라미터로 설정되어야 합니다.
-
neg-share
– 연결 예측에서 양수로 샘플링된 엣지가 음수 엣지 샘플을 공유할 수 있는지 여부를 나타냅니다. 유형:bool
. -
num-bases
–rgcn
모델의 기저 분해를 위한 기저 수입니다. 그래프의 엣지 유형 수보다 적은num-bases
값을 사용하면rgcn
모델에 대한 정규화기 역할을 합니다. 유형:int
. -
num-epochs
– 실행할 훈련 epoch의 수입니다. 유형:int
.epoch는 그래프를 통한 완전한 훈련 과정을 말합니다.
-
num-hidden
– 숨겨진 계층의 크기 또는 단위 수입니다. 유형:int
.이렇게 하면 특성이 없는 노드의 초기 임베딩 크기도 설정됩니다.
batch-size
를 줄이지 않고 훨씬 큰 값으로 설정하면 GPU 인스턴스 훈련 시 메모리 부족 문제가 발생할 수 있습니다. -
num-layer
– 모델 내 GNN 계층 수 입니다. 유형:int
.이 값은 팬아웃 파라미터와 밀접하게 연관되어 있으므로, 팬아웃이 동일한 하이퍼파라미터 계층에 설정된 후에 나와야 합니다.
이로 인해 모델 성능이 크게 달라질 수 있으므로, 고정하거나 Tier-2 또는 Tier-3 하이퍼파라미터로 설정해야 합니다.
-
num-negs
– 연결 예측에서 양수 샘플당 음수 샘플 수입니다. 유형:int
. -
per-feat-name-embed
– 특성을 결합하기 전에 각 특성을 독립적으로 변환하여 각 특성을 포함할지 여부를 나타냅니다. 유형:bool
.true
로 설정하면 노드의 변환된 모든 특성이 연결되어num_hidden
차원으로 변환되기 전에 노드당 각 특성이 고정된 차원 크기로 독립적으로 변환됩니다.false
로 설정하면 특성별 변환 없이 특성이 연결됩니다. -
regularization-coef
– 연결 예측에서 정규화 손실 계수입니다. 유형:float
. -
rel-part
–KGE
연결 예측에 관계 파티션을 사용할지 여부를 나타냅니다. 유형:bool
. -
sparse-lr
– 학습 가능 노드 임베딩의 학습률입니다. 유형:float
.학습 가능한 초기 노드 임베딩은 특성이 없거나
concat-node-embed
가 설정된 노드에 사용됩니다. 희소 학습 가능한 노드 임베딩 계층의 파라미터는 학습률이 다를 수 있는 별도의 옵티마이저를 사용하여 훈련됩니다. -
use-class-weight
– 불균형 분류 작업에 클래스 가중치를 적용할지 여부를 나타냅니다.true
로 설정하면 레이블 수를 사용하여 각 클래스 레이블의 가중치를 설정합니다. 유형:bool
. -
use-edge-features
– 메시지 전달 중에 엣지 특성을 사용할지 여부를 나타냅니다.true
로 설정하면 특성이 있는 엣지 유형의 RGCN 계층에 사용자 지정 엣지 특성 모듈이 추가됩니다. 유형:bool
. -
use-self-loop
–rgcn
모델 훈련에 자체 루프를 포함할지 여부를 나타냅니다. 유형:bool
. -
window-for-early-stop
– 조기 중단을 결정하기 위해 최근 검증 점수 수를 평균으로 제어합니다. 기본값은 3이고, 유형은 int입니다. Neptune ML의 모델 훈련 프로세스 조기 중단 섹션도 참조하세요. 유형:int
. 기본값:3
.단원을 참조하십시오.
Neptune ML에서 하이퍼파라미터 사용자 지정
model-HPO-configuration.json
파일을 편집할 때 가장 일반적으로 수행해야 하는 변경 사항은 다음과 같습니다.
range
하이퍼파라미터의 최대값 및/또는 최소값을 편집합니다.하이퍼파라미터를
fixed-param
섹션으로 이동하고 해당 기본값을 원하는 고정 값으로 설정하여 하이퍼파라미터를 고정 값으로 설정합니다.하이퍼파라미터를 특정 Tier에 배치하고, 범위를 편집하고, 기본값이 적절하게 설정되었는지 확인하여 하이퍼파라미터의 우선순위를 변경합니다.