30분
학습 모니터링: Loss 그래프 해석법 & W&B 활용
QLoRA 학습 실행
학습 모니터링: Loss 그래프 해석법 & W&B 활용
QLoRA 파인튜닝 > QLoRA 학습 실행
학습 목표
Train Loss와 Val Loss 그래프를 해석할 수 있다 과적합, 학습 부족, 정상 학습 패턴을 구분한다 W&B(Weights & Biases)로 실시간 모니터링하는 방법을 안다
학습 모니터링: "그래프를 읽는 기술"
Loss 그래프 해석
패턴 1: 정상 학습 (이상적)
Train Loss: 2.8 -> 1.5 -> 0.8 -> 0.5 (꾸준히 감소)
Val Loss: 2.9 -> 1.6 -> 0.9 -> 0.6 (같이 감소)
Gap: 0.1 0.1 0.1 0.1 (일정)
해석: Train과 Val이 함께 감소. Gap이 작고 일정.
판정: 정상! 계속 학습 가능.
패턴 2: 과적합 (Overfitting)
Train Loss: 2.8 -> 1.5 -> 0.3 -> 0.1 (계속 감소)
Val Loss: 2.9 -> 1.6 -> 1.2 -> 1.5 (다시 상승!)
Gap: 0.1 0.1 0.9 1.4 (점점 벌어짐)
해석: Train Loss만 감소하고 Val Loss가 상승.
모델이 학습 데이터를 "암기"하고 있음!
판정: 위험! Val Loss가 올라가기 시작한 시점에서 멈춰야 함.
해결:
1. 에포크 수 줄이기 (3 -> 2)
2. 데이터 늘리기 (증강)
3. weight_decay 올리기 (0.01 -> 0.1)
4. LoRA r 줄이기 (16 -> 8)
5. Dropout 올리기 (0.05 -> 0.1)
패턴 3: 학습 부족 (Underfitting)
Train Loss: 2.8 -> 2.5 -> 2.4 -> 2.3 (거의 안 줄어듦)
Val Loss: 2.9 -> 2.6 -> 2.5 -> 2.4 (같이 안 줄어듦)
해석: Loss가 초기에서 거의 변하지 않음.
모델이 데이터 패턴을 제대로 학습하지 못함.
판정: 설정 변경 필요!
해결:
1. 학습률 올리기 (2e-4 -> 5e-4)
2. LoRA r 올리기 (8 -> 16 -> 32)
3. target_modules 늘리기 (MLP 포함)
4. 에포크 수 늘리기
5. 데이터 품질 재검토
패턴 4: Loss 폭발 (Divergence)
Train Loss: 2.8 -> 5.2 -> 15.7 -> NaN
Val Loss: 2.9 -> 6.1 -> NaN -> NaN
해석: Loss가 급격히 증가하다 NaN으로 발산.
학습이 불안정!
판정: 즉시 중단!
해결:
1. 학습률 낮추기 (2e-4 -> 5e-5)
2. warmup_ratio 올리기 (0.03 -> 0.1)
3. gradient_clipping 확인 (max_grad_norm=1.0)
4. 데이터 이상값 확인
W&B (Weights & Biases) 설정
# W&B 설치 & 로그인
# pip install wandb
# wandb login
import wandb
# 프로젝트 초기화
wandb.init(
project="manufacturing-sllm",
name="qlora-phi2-v1",
config={
"model": "phi-2",
"r": 16,
"alpha": 32,
"lr": 2e-4,
"epochs": 3,
"dataset_size": 500,
}
)
# TrainingArguments에서 활성화
training_args = TrainingArguments(
...
report_to="wandb", # 이것만 추가!
)
W&B 대시보드에서 확인할 것
1. train/loss: 학습 손실 그래프
2. eval/loss: 검증 손실 그래프
3. train/learning_rate: 학습률 변화
4. system/gpu.0.memory: GPU 메모리 사용량
5. system/gpu.0.gpu: GPU 사용률
핵심: train/loss와 eval/loss의 GAP을 주시!
체크포인트 관리
# 체크포인트 전략
training_args = TrainingArguments(
save_strategy="steps",
save_steps=100, # 100 스텝마다 저장
save_total_limit=3, # 최근 3개만 유지 (디스크 절약)
load_best_model_at_end=True, # 최적 모델 자동 로드
metric_for_best_model="eval_loss",
greater_is_better=False, # loss는 낮을수록 좋음
)AI로 학습하기 — 꿀팁
✅Loss 그래프 과적합 판단 기준 검증AI 학습 팁
Train Loss와 Val Loss 그래프 패턴으로 과적합·학습 부족을 판단하는 기준이 정확한지, 제조 도메인 소량 데이터 특성과 맞는지 검증해 보세요.
QLoRA 학습 모니터링에 대한 아래 판단 기준이 정확한지 검증해줘. (A) 'Train Loss는 계속 내려가는데 Val Loss가 에폭 3 이후 올라가면 과적합이다.' (B) 'Loss가 0.5 이하면 학습이 충분히 완료된 것이다.' (C) 'Val Loss가 Train Loss보다 낮게 나오면 데이터 누수(data leakage)가 의심된다.' (D) 'W&B 없이 TensorBoard만으로 실시간 모니터링이 불가능하다.' 각 항목의 옳고 그름을 제조 도메인 sLLM 맥락으로 교정해줘.
이 팁이 도움이 됐나요?
핵심 포인트
- • 정상: Train/Val Loss 함께 감소, Gap 일정
- • 과적합: Train Loss 감소, Val Loss 상승 -> 에포크/r 줄이기
- • 학습부족: Loss 거의 안 줄어듦 -> LR/r 올리기
- • Loss 폭발: NaN -> LR 낮추기, warmup 늘리기
- • W&B: report_to="wandb" 한 줄로 실시간 모니터링