30분
하이퍼파라미터 완전 해부: 8개만 알면 된다
QLoRA 학습 실행
하이퍼파라미터 완전 해부: 8개만 알면 된다
QLoRA 파인튜닝 > 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 기준 설정