5장. LoRA 파인튜닝과 DPO 정렬
정리
- 전체 미세조정은 파라미터마다 16바이트쯤이 들어 0.5B 모델도 4GB GPU 에 들어가지 않습니다. PEFT 는 모델의 작은 부분만 학습하고, 그 가운데 LoRA 가 가장 널리 쓰입니다.
- LoRA 는 원래 가중치 W 를 얼리고, 옆에 얇은 행렬 A, B 를 두어 W·x + B·A·x 로 계산합니다. B 를 0 으로 시작해 학습 전에는 원래 모델과 같습니다. r, lora_alpha, target_modules 를 정합니다.
- peft 의
get_peft_model두 줄을 더하면 4장의 Trainer 로 LoRA 를 학습할 수 있고, 저장되는 것은 몇 MB 의 어댑터뿐입니다. 어댑터는 따로 끼우거나 가중치에 합칩니다. - fp16 으로 불러오기, 혼합 정밀도, 그래디언트 체크포인팅, 작은 배치로 GPU 메모리를 아낍니다. 메모리가 모자라면 오류 없이 느려지기도 하니 꼭 잽니다.
- DPO 는 질문, 고른 답, 반대 답의 쌍으로, 기준 모델보다 고른 답 쪽 확률을 높입니다. margins 와 accuracies 로 학습을 보고, 학습에 쓰지 않은 질문으로 다시 잽니다.
- 정렬은 말투를 바꾸는 데 강하고 사실을 가르치는 데는 약합니다. 사실은 SFT 로, 말투는 DPO 로 가르치고, 바뀐 뒤에는 정답과 말투와 원래 능력을 함께 잽니다.