8장. PEFT와 LoRA 학습
정리
- Full Fine-tuning 은 파라미터 하나에 가중치 4 + 그래디언트 4 + 옵티마이저 상태 8 = 약 16바이트가 듭니다. Qwen2.5-0.5B 도 7.36 GB, 8B 모델은 약 119 GB 가 activation 을 빼고도 필요합니다.
- PEFT 는 기반 모델 대부분을 얼리고(freeze) 적은 파라미터만 학습합니다. 업무마다 작은 어댑터만 따로 보관합니다.
- LoRA 는
y = x·W + (alpha/r)·x·A·B입니다. W 는 얼리고 A·B 만 학습하며, B = 0 으로 시작해 처음에는 원래 모델과 같습니다. 896×896 층에 r = 16 이면 28,672 개로 원래의 약 3.6% 입니다. - Qwen 의 일곱 선형층 × 24층에 r = 16 LoRA 를 붙이면 8,798,208 개, 전체의 1.7497% 입니다. 층 크기만으로 손계산한 값과 같습니다.
SFTConfig는 배치 1 × 누적 8 = 실질 배치 8, 학습률 2e-4, cosine,completion_only_loss=True입니다. 263개를 33스텝씩 3 epoch, 모두 99스텝 학습했습니다.- 학습 손실은 3.09 → 2.42 → 1.87 로 내려갔지만 검증 손실은 3.1265 → 3.1223 → 3.2088 로 3 epoch 에 올라갔습니다. 과적합 신호입니다.
- 학습 후 처음 보는 질문에도 군주 말투가 나왔고, 결과는 33.60 MB 짜리 어댑터로 저장되었습니다. 어댑터는 자기 기반 모델과 함께 씁니다.