내 노트북에서 270M 모델을 파인튜닝했습니다
저는 세 가지 모델 파인튜닝 방식을 테스트하고 있습니다. 세 방식 모두 동일한 작업을 사용하며, 가장 작은 모델부터 가장 큰 모델까지 규모를 키워가며 진행합니다.
시리즈는 다음과 같은 경로를 따릅니다:
- 풀 파인튜닝 (Full Fine-Tuning, 270M 파라미터)
- LoRA (1.5B 파라미터)
- QLoRA (7B 파라미터)
저는 그 작동 원리를 이해하고 싶습니다. 단순히 튜토리얼을 맹목적으로 따라가고 싶지는 않습니다.
첫 번째 단계에서는 풀 파인튜닝을 사용했습니다. 이 방법은 모델의 모든 가중치를 업데이트합니다. 학습 비용이 가장 많이 드는 방식입니다.
Banking77 데이터셋을 사용했습니다. 이 데이터셋에는 13,000개의 고객 지원 메시지가 포함되어 있습니다. 목표는 분실 카드나 환율과 같은 77가지의 서로 다른 의도(intent)를 식별하는 것입니다.
Gemma 3 (270M)를 선택했습니다. 이 모델은 Apple Silicon을 사용하는 노트북에서 학습할 수 있을 만큼 충분히 작습니다. 풀 파인튜닝은 그래디언트(gradients)와 옵티마이저 상태(optimizer states)를 저장하기 위해 모델 크기의 4배에 달하는 메모리가 필요합니다.
분류 헤드(classification head)를 추가하는 대신, 모델이 의도를 텍스트로 생성하도록 만들었습니다. 이렇게 하면 과정이 인스트럭션 튜닝(instruction tuning)과 동일해집니다. 이는 다음 단계를 위한 프로젝트 준비 과정이기도 합니다.
중요한 단계는 손실(loss)을 마스킹하는 것입니다. 모델에게 프롬프트는 무시하고 레이블(label)에 대해서만 스스로를 평가하도록 지시해야 합니다. 이 단계를 건너뛰면 모델은 프롬프트를 반복하는 법을 배우는 데 에너지를 낭비하게 됩니다.
5e-5의 낮은 학습률(learning rate)을 사용했습니다. 풀 파인튜닝 중 높은 학습률은 사전 학습된 지식을 파괴합니다. 2e-4의 학습률을 사용했을 때는 모델 학습에 실패했습니다.
결과:
- 일반적인 의도에 대해 96%의 정확도 달성.
- 노트북에서 원활하게 작동함.
- 여전히 카드 도착과 배송 예정 시간을 혼동함.
파트 2에서는 5배 더 큰 모델을 사용할 것입니다. LoRA를 사용하여 가중치의 1% 미만만을 학습시킬 것입니다. 동일한 정확도를 얻을 수 있는지 확인해 보겠습니다.
출처: https://dev.to/sumanpro/i-fine-tuned-a-270m-model-on-my-laptop-full-fine-tuning-from-scratch-3p4l
선택 사항 학습 커뮤니티: https://t.me/GyaanSetuAi