본문으로 건너뛰기

하이퍼 파라미터 설정

Platform에서 학습 모델의 hyperparameter를 설정하는 방법을 안내합니다.

Hyperparameter란?

Hyperparameter는 학습 과정을 제어하는 매개변수로, 모델 성능에 큰 영향을 미칩니다:

  • batch_size: 한 번에 처리할 데이터 샘플 수
  • epochs: 전체 데이터셋을 학습하는 반복 횟수
  • learning_rate: 모델 가중치 업데이트 크기
  • optimizer: 최적화 알고리즘 (Adam, SGD 등)

코드에서 정의

argparse 사용

Python의 argparse로 hyperparameter를 정의합니다:

train.py
import argparse

if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Model Training")

# Hyperparameter 정의
parser.add_argument(
"--batch-size",
type=int,
default=64,
help="Training batch size (default: 64)"
)
parser.add_argument(
"--epochs",
type=int,
default=10,
help="Number of training epochs (default: 10)"
)
parser.add_argument(
"--learning-rate",
type=float,
default=0.001,
help="Learning rate (default: 0.001)"
)
parser.add_argument(
"--optimizer",
type=str,
default="adam",
choices=["adam", "sgd", "rmsprop"],
help="Optimizer type"
)

args = parser.parse_args()

train_model(
batch_size=args.batch_size,
epochs=args.epochs,
learning_rate=args.learning_rate,
optimizer=args.optimizer,
)

주요 포인트

  1. type 지정: int, float, str, bool
  2. default 값: Platform에서 설정하지 않을 때 사용
  3. help 메시지: 명확한 설명 작성
  4. choices (선택): 유효한 값 제한

Epoch 파라미터와 진행률 추적

--epochs 또는 --epoch 파라미터는 Platform에서 자동으로 감지되어 특별한 역할을 합니다:

  • 최대 step 설정: 선언된 값이 학습의 최대 step으로 자동 설정됩니다
  • 진행률 계산: MLflow의 step 값과 연동하여 현재 진행 상황을 추적합니다
  • UI 표시: Platform UI에서 "N/M epoch 완료" 형태로 실시간 진행률을 확인할 수 있습니다

동작 방식:

# train.py
import mlflow

for epoch in range(1, args.epochs + 1):
train_loss, train_acc = train_one_epoch()
val_loss, val_acc = validate()

# step=epoch로 메트릭 기록
mlflow.log_metrics({
"train_loss": train_loss,
"train_accuracy": train_acc,
"val_loss": val_loss,
"val_accuracy": val_acc
}, step=epoch)

Platform은 --epochs 값과 mlflow.log_metricsstep 파라미터를 비교하여 현재 몇 번째 epoch이 진행 중인지 자동으로 계산합니다.

진행률 모니터링

mlflow.log_metrics(metrics, step=epoch)로 메트릭을 기록하면 Platform이 자동으로 학습 진행률을 추적합니다. 상세한 모니터링 방법은 학습 진행률 모니터링 가이드를 참고하세요.

Platform에서 등록

1. 모델 선택

업로드한 모델을 선택합니다.

업로드된 모델 확인

2. Hyperparameter 등록

Hyperparameter 설정 화면에서 각 파라미터를 등록합니다.

Hyperparameter 설정

3. 파라미터 정보 입력

각 hyperparameter에 대해 다음 정보를 입력합니다:

필드설명예시
이름코드의 argparse 인자 이름 (하이픈 포함)--batch-size
타입데이터 타입int
기본값기본 값64
설명파라미터 설명Training batch size
등록은 선택사항

Hyperparameter를 등록하지 않아도 코드에서 지정한 기본값으로 학습이 실행됩니다. 등록하면 Platform UI에서 값을 변경하여 여러 실험을 쉽게 수행할 수 있습니다.

학습 실행 시 설정

UI에서 값 변경

학습 실행 화면에서 등록된 hyperparameter 값을 변경할 수 있습니다:

실행 예시

배치 크기: 128        # 기본값 64에서 변경
에폭 수: 20 # 기본값 5에서 변경
학습률: 0.0001 # 기본값 0.001에서 변경

Platform은 이를 다음과 같이 커맨드라인 인자로 전달합니다:

python train.py --batch-size 128 --epochs 20 --learning-rate 0.0001

다음 단계

Hyperparameter 설정을 완료했다면:

  1. 학습 실행: Platform에서 모델과 데이터셋 선택하여 학습 시작
  2. MNIST 튜토리얼: 전체 워크플로우 예시
  3. YOLO 튜토리얼: 고급 hyperparameter 설정 예시
  4. MLflow: 실험 결과 비교 및 분석