30

하이퍼파라미터 완전 해부: 8개만 알면 된다

QLoRA 학습 실행

학습 목표

학습에 영향을 주는 핵심 하이퍼파라미터 8개를 이해한다 제조 도메인에 적합한 기본값을 알고 있다 각 파라미터 변경이 학습에 미치는 영향을 예측할 수 있다

핵심 하이퍼파라미터 8개

비유: 요리사의 레시피

"파인튜닝은 요리와 같아. 재료(데이터)도 중요하지만, 불 세기(학습률), 조리 시간(에포크), 냄비 크기(배치)도 중요해."

1. 학습률 (Learning Rate)

학습률 = 한 번에 얼마나 많이 수정할 것인가?

너무 크면: 최적점을 지나쳐 발산 (Loss가 폭발)
너무 작으면: 학습이 너무 느리거나 안 됨
적절하면: 안정적으로 Loss 감소

제조 QLoRA 권장: 2e-4 (0.0002)
범위: 1e-4 ~ 5e-4

비유: 목표 지점을 찾아가는 보폭
  큰 보폭(높은 LR) -> 빨리 가지만 지나칠 수 있음
  작은 보폭(낮은 LR) -> 정확하지만 느림

2. 에포크 수 (num_train_epochs)

에포크 = 전체 데이터를 몇 번 반복 학습할 것인가?

제조 데이터 규모별 권장:
  500건 이하:  3~5 에포크
  500~2000건: 2~3 에포크
  2000건 이상: 1~2 에포크

주의: 에포크가 너무 많으면 과적합!
  과적합 징후: Train Loss는 내려가는데 Val Loss가 올라감

3. 배치 크기 (per_device_train_batch_size)

배치 크기 = 한 번에 몇 개의 샘플을 학습할 것인가?

GPU별 권장:
  8GB (RTX 4060):  batch_size = 2
  16GB (RTX 4090): batch_size = 4
  24GB (A10G):     batch_size = 8
  40GB (A100):     batch_size = 16

효과적 배치 크기:
  effective_batch = batch_size x gradient_accumulation_steps

예: batch_size=2, accumulation=8 -> effective_batch=16

4. Gradient Accumulation Steps

메모리 부족 시 해결책!

원리: 작은 배치로 여러 번 계산한 그래디언트를 축적하여
      큰 배치와 동일한 효과를 냄

예: batch=2, accumulation=8
   -> 2 x 8 = 16 샘플의 그래디언트를 모아서 1번 업데이트
   -> 메모리는 batch=2만큼만 사용!

제조 QLoRA 권장: 4~8

5. 최대 시퀀스 길이 (max_seq_length)

데이터의 최대 토큰 수

설정 기준: Day 2에서 분석한 p95 + 64

예:
  데이터 p95 = 450 토큰
  max_seq_length = 512 (가장 가까운 2의 거듭제곱)

길이별 메모리 (7B 모델):
  512:  ~6GB
  1024: ~8GB
  2048: ~12GB
  4096: ~20GB

주의: 너무 길면 메모리 낭비, 너무 짧으면 데이터 잘림!

6. 학습률 스케줄러 (lr_scheduler_type)

학습률을 시간에 따라 어떻게 변화시킬 것인가?

cosine (권장):
  시작: 높은 LR -> 점점 감소 -> 끝: 거의 0
  장점: 안정적 수렴

linear:
  시작: 높은 LR -> 일정하게 감소 -> 끝: 0
  장점: 단순하고 예측 가능

constant:
  처음부터 끝까지 동일한 LR
  주의: 과적합 위험 높음

제조 QLoRA 권장: cosine

7. Warmup 비율 (warmup_ratio)

학습 초기에 LR을 천천히 올리는 구간

warmup_ratio = 0.03 (3% 스텝)
  전체 2000 스텝 중 처음 60 스텝은 LR이 0에서 목표까지 상승

이유: 초기에 랜덤한 그래디언트로 급격한 업데이트를 방지

제조 QLoRA 권장: 0.03~0.05

8. Weight Decay

과적합 방지를 위한 정규화

weight_decay = 0.01
  매 스텝마다 가중치를 약간 줄여서 과적합 방지

제조 QLoRA 권장: 0.01~0.1

제조 QLoRA 표준 레시피

# === 제조 도메인 QLoRA 표준 설정 ===

training_args = TrainingArguments(
    # 학습 기본
    num_train_epochs=3,           # 500건 이하: 3-5
    learning_rate=2e-4,           # QLoRA 표준
    lr_scheduler_type="cosine",   # 안정적 수렴

    # 배치 설정 (GPU 8GB 기준)
    per_device_train_batch_size=2,
    gradient_accumulation_steps=8,  # 효과적 배치 = 16

    # 정규화
    weight_decay=0.01,
    warmup_ratio=0.03,

    # 시퀀스 길이
    max_seq_length=512,           # 데이터 p95 기준

    # 정밀도
    fp16=False,
    bf16=True,                    # Ampere+ GPU (RTX 30xx/40xx)

    # 로깅
    logging_steps=10,
    eval_strategy="steps",
    eval_steps=100,
    save_strategy="steps",
    save_steps=100,
    save_total_limit=3,

    # 출력
    output_dir="./mfg-qlora-output",
    report_to="wandb",            # W&B 모니터링
)
AI로 학습하기 — 꿀팁
🤖제조 sLLM용 하이퍼파라미터 설정표AI 학습 팁

QLoRA 핵심 하이퍼파라미터 8개를 제조 도메인 기본값·권장 범위와 함께 표로 정리해 두면 실습 때 즉시 참조할 수 있습니다.

제조 설비 Q&A 파인튜닝(학습 데이터 500건, Llama-3-8B, 16GB GPU)에 최적화된 QLoRA 하이퍼파라미터 8개를 설정 가이드 표로 만들어줘. 항목: 파라미터명 / 권장 기본값 / 허용 범위 / 제조 도메인에서의 튜닝 팁 / 잘못 설정 시 증상. 포함 파라미터: learning_rate, num_train_epochs, per_device_train_batch_size, gradient_accumulation_steps, lora_r, lora_alpha, max_seq_length, warmup_ratio.
이 팁이 도움이 됐나요?
실습 — 직접 해보기
🧪QLoRA 파인튜닝 랩
rank·alpha(α/r)·데이터 규모를 조절하며 손실 곡선과 과적합 신호를 실험해보세요
핵심 포인트
  • learning_rate=2e-4: QLoRA 표준, LoRA에서 가장 안정적
  • epochs=3: 500건 이하 데이터에 적합
  • batch=2, accumulation=8: 8GB GPU에서 효과적 배치 16
  • cosine 스케줄러: 안정적 수렴에 최적
  • max_seq_length=512: p95 + 64 기준 설정