PEFT 개요 — 소수의 어댑터 파라미터만 학습
PEFT 개요
대형 사전학습 모델을 모든 파라미터로 파인튜닝하는 건 저장·연산 비용이 너무 커요. **PEFT(Parameter-Efficient Fine-Tuning)**는 사전학습 모델 위에 아주 적은 수의 (추가) 어댑터 파라미터만 학습시키는 방법이에요. 정확도는 거의 그대로인데 비용은 크게 낮죠.
핵심 아이디어
베이스 모델은 얼리고, 그 위에 작은 어댑터(보통 LoRA의 A·B 행렬)만 학습해요. 트레이너는 requires_grad=True인 어댑터 파라미터만 갱신하므로, 학습 가능한 파라미터가 전체의 0.04% 수준에 그칠 수 있어요.
from peft import LoraConfig, get_peft_model
config = LoraConfig(task_type="CAUSAL_LM")
peft_model = get_peft_model(model, config)
peft_model.print_trainable_parameters()
# trainable params: 524,288 || all params: 1,236,338,688 || trainable%: 0.0424
왜 강력한가
- 저장·전송이 가벼워요. 어댑터만 저장하면 되니까요.
- 하나의 베이스 모델에 과업별 어댑터를 여러 개 얹을 수 있어요.
- 8비트·4비트 양자화(bitsandbytes)와 결합하면 소비자 GPU에서도 큰 LLM을 튜닝할 수 있어요.
- 어댑터 가중치를 베이스 모델과 병합하면 추론 시 추가 지연이 없어져요.