프리픽스 튜닝은 AI에게 매번 질문할 때 앞쪽에 "가이드 신호"를 붙여서 원하는 방향으로 이끄는 방법입니다. AI 자체를 수정하는 것이 아니라, AI가 읽는 입력의 앞부분에 특별한 안내문을 추가하는 것입니다.
음식점에 비유하면, 요리사의 실력을 바꾸는 게 아니라 주문서에 "매운맛으로, 채소 많이, 소금 적게"라는 지시를 붙이는 것과 같습니다. 같은 요리사가 같은 재료로 요리하더라도, 주문서의 지시에 따라 전혀 다른 맛의 요리가 나오는 거죠.
이 방식의 강점은 AI 본체를 전혀 건드리지 않는다는 점입니다. 여러 가지 스타일의 "주문서 머리말(Prefix)"을 각각 만들어 두면, 하나의 AI를 마케팅 문서 작성용, 법률 요약용, 코드 리뷰용으로 즉시 바꿔 쓸 수 있습니다. LoRA가 AI에 보조 장치를 부착하는 방식이라면, 프리픽스 튜닝은 입력 채널에 신호를 주입하는 방식입니다.
GPT-3 기반의 문서 요약 서비스를 만든다고 생각해 보세요. 전통적인 방법은 수만 건의 예제로 모델 전체를 재학습해야 했지만, 프리픽스 튜닝을 쓰면 원본 모델은 냉동 보관한 채로 수백만 개의 파라미터로 이루어진 짧은 "프리픽스 벡터"만 학습시키면 됩니다. GPU 비용은 몇십 분의 1, 저장 공간도 비교할 수 없이 작아집니다.
실제로 Stanford 연구팀은 GPT-2로 테이블-투-텍스트(table-to-text) 변환에서 프리픽스 튜닝이 전체 파인튜닝과 거의 동등한 성능을 냈음을 보였습니다. 특히 저자원(low-resource) 환경에서 학습 데이터가 적을 때 오히려 전체 파인튜닝보다 나은 결과가 나왔습니다.
📚 선수학습: Fine-tuning 개념과 Transformer의 어텐션 메커니즘을 먼저 숙지하세요.
Transformer 레이어의 어텐션 연산에서, 프리픽스 벡터 를 Key/Value 행렬 앞에 이어 붙인다:
여기서 는 각 레이어별 학습 가능한 프리픽스 Key/Value이고, 원본 파라미터 는 **동결(frozen)**된다. 프리픽스 길이 는 일반적으로 10~100 토큰이며, 총 학습 파라미터 수는 전체 모델의 0.1% 미만이다.
직접 를 최적화하면 학습이 불안정해진다. 이를 해결하기 위해 작은 MLP를 경유하는 재파라미터화를 사용한다:
여기서 는 작은 행렬이고, 이다. 학습 완료 후 MLP를 제거하고 최종 행렬만 저장한다. 이 트릭은 학습 가능 파라미터 수를 유지하면서 최적화 경관을 부드럽게 만들어 준다.
| 기법 | 저장 크기 (GPT-2 기준) | 원본 모델 수정 |
|---|---|---|
| 전체 파인튜닝 | 1.5 GB / 태스크 | O |
| Prefix Tuning | ~0.1 MB / 태스크 | X |
| LoRA (r=16) | ~4 MB / 태스크 | X |
| Adapter Tuning | ~2 MB / 태스크 | X |
Google의 Prompt Tuning(Lester et al., 2021)은 프리픽스 튜닝의 단순화 버전으로, 오직 입력 레이어에만 프리픽스를 추가하고 MLP 재파라미터화를 사용하지 않는다. 모델 크기가 클수록(10B 이상) Prompt Tuning도 전체 파인튜닝과 비슷한 성능을 내지만, 중소형 모델에서는 레이어별 프리픽스를 추가하는 Prefix Tuning이 유리하다.
프리픽스 길이가 길어질수록 실제 입력 텍스트를 처리할 수 있는 컨텍스트 윈도우가 줄어든다. 또한 매우 복잡한 도메인 지식 주입에는 LoRA나 Adapter Tuning이 더 효과적인 경향이 있다.
Adapter Tuning