ML | DL/딥러닝 방법론|실습

AI 모델 경량화 시리즈 2편: Prefix-Tuning & Prompt-Tuning

Leeys 2025. 9. 14. 22:11
반응형

프롬프트만 바꿔서 모델을 새로운 태스크에 적응시킨다?
LoRA보다 더 가볍게, 심지어 파라미터 몇 퍼센트만 학습하는 방법.

 


Prefix-/Prompt-Tuning이란?

Prefix-/Prompt-Tuning이란?

Prefix-TuningPrompt-Tuning 은 Pretrained 모델의 파라미터는 그대로 두고,
입력에 붙는 "프롬프트 벡터"만 학습하는 방법입니다.

즉, 모델 내부는 전혀 건드리지 않고 입력에 추가적인 learnable embedding을 붙여서
모델이 원하는 태스크 방향으로 출력을 내도록 유도합니다.


왜 필요한가?

  • 대형 LLM(수십억~수천억 파라미터)은 전체 파인튜닝이 사실상 불가능한 경우 많음
  • LoRA도 내부 레이어 일부를 학습하지만, 여전히 weight update 연산 필요
  • Prefix/Prompt-Tuning은 파라미터 효율이 극단적 → 학습해야 하는 파라미터 수가 전체의 0.1% 수준

동작 원리

Prompt-Tuning

  • 입력 토큰 앞에 Learnable Prompt Embedding 추가
  • 학습 시 이 embedding만 업데이트
  • 예:
 
[Learned Prompt 1] [Learned Prompt 2] ... [Input Tokens]

Prefix-Tuning

  • 단순히 입력 토큰에 붙이는 것뿐 아니라,
  • Transformer 각 층의 key-value 캐시에 prefix vector를 주입
  • 모델이 attention 계산할 때 prefix vector도 함께 attend 하도록 유도

수식 (간단 버전)

Transformer Attention:

 
Attention(Q, K, V) = softmax(Q K/d) V

Prefix-Tuning 시:

  • K, V 앞에 prefix_K, prefix_V 를 추가:
 
K' = concat(prefix_K, K) V' = concat(prefix_V, V)

→ Attention이 prefix에도 attend 하면서 태스크별 context를 반영.


장점

1. 극도로 가벼움 → 수만~수십만 파라미터만 학습
2. 원본 모델 완전 보존 → catastrophic forgetting 걱정 없음
3. 여러 태스크를 프롬프트로 스위칭 가능 → 모델 재사용성 극대화
4. 빠른 학습 → VRAM 부담 최소화


단점 & 주의점

- 표현력이 제한적 → 매우 다른 도메인 / 복잡한 태스크에는 성능 낮을 수 있음
- 프롬프트 길이 & 위치 튜닝 필요 (하이퍼파라미터)
- Prefix/Prompt는 interpretability가 떨어져서 "왜 이렇게 학습됐는지" 해석 어려움


실무 적용 팁

  • LLM API (예: OpenAI, HuggingFace)에서는 Soft Prompt-Tuning 프레임워크 사용
  • HuggingFace transformers 라이브러리 → peft 패키지로 Prefix/Prompt-Tuning 가능
  • 보통 prompt_length = 10~50 정도에서 시작 → 태스크 난이도에 따라 늘리기
from peft import PromptTuningConfig, PromptTuningInit, get_peft_model

config = PromptTuningConfig(
    task_type="SEQ_CLS",
    prompt_tuning_init=PromptTuningInit.TEXT,
    prompt_length=20,
)

model = get_peft_model(base_model, config)

 

 

비교 항목 LoRA  Prefix/Prompt-Tuning
학습 파라미터 수십만~수백만 (저랭크) 수만~수십만 (더 적음)
수정 범위 특정 레이어 (Q/K/V 등) 입력 embedding / KV cache
원본 모델 수정 일부 weight delta 추가 전혀 수정 안 함
표현력 높음 낮음 (단순 프롬프트)
적합 태스크 중~대규모 fine-tuning few-shot, zero-shot 개선, lightweight task

 

활용 사례

  • 텍스트 분류, NER, 감정 분석 등 → Prompt-Tuning으로 충분
  • GPT-기반 챗봇에 페르소나 부여 → Prefix-Tuning
  • Few-shot learning → soft prompt가 zero-shot 대비 성능 크게 향상

결론

Prefix/Prompt-Tuning은 "모델 내부는 건드리지 않고, 프롬프트만 학습해서 원하는 태스크로 적응"시키는 초경량 방법입니다.

  • LoRA보다 더 가볍지만, 표현력은 낮음
  • 빠른 실험, few-shot 태스크에 적합
  • 여러 태스크를 하나의 모델로 돌리면서 쉽게 교체하고 싶다면 최적

 

다음 편은 아래에 있습니다!

https://machineindeep.tistory.com/64

 

AI 모델 경량화 시리즈 3편: Adapters

"모델을 통째로 다시 학습하지 않고, 중간에 작은 모듈만 추가해 학습한다!"Adapters는 PEFT(파라미터 효율적 파인튜닝) 기법 중 가장 범용적으로 쓰이는 방법입니다.Adapters란?Adapter는 Transformer 블록

machineindeep.tistory.com

 

반응형