프롬프트만 바꿔서 모델을 새로운 태스크에 적응시킨다?
LoRA보다 더 가볍게, 심지어 파라미터 몇 퍼센트만 학습하는 방법.
Prefix-/Prompt-Tuning이란?
Prefix-Tuning 과 Prompt-Tuning 은 Pretrained 모델의 파라미터는 그대로 두고,
입력에 붙는 "프롬프트 벡터"만 학습하는 방법입니다.
즉, 모델 내부는 전혀 건드리지 않고 입력에 추가적인 learnable embedding을 붙여서
모델이 원하는 태스크 방향으로 출력을 내도록 유도합니다.
왜 필요한가?
- 대형 LLM(수십억~수천억 파라미터)은 전체 파인튜닝이 사실상 불가능한 경우 많음
- LoRA도 내부 레이어 일부를 학습하지만, 여전히 weight update 연산 필요
- Prefix/Prompt-Tuning은 파라미터 효율이 극단적 → 학습해야 하는 파라미터 수가 전체의 0.1% 수준
동작 원리
Prompt-Tuning
- 입력 토큰 앞에 Learnable Prompt Embedding 추가
- 학습 시 이 embedding만 업데이트
- 예:
Prefix-Tuning
- 단순히 입력 토큰에 붙이는 것뿐 아니라,
- Transformer 각 층의 key-value 캐시에 prefix vector를 주입
- 모델이 attention 계산할 때 prefix vector도 함께 attend 하도록 유도
수식 (간단 버전)
Transformer Attention:
Prefix-Tuning 시:
- K, V 앞에 prefix_K, prefix_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
'ML | DL > 딥러닝 방법론|실습' 카테고리의 다른 글
AI 모델 경량화 시리즈 4편: BitFit (Bias-Only Fine-Tuning) (0) | 2025.09.14 |
---|---|
AI 모델 경량화 시리즈 3편: Adapters (0) | 2025.09.14 |
AI 모델 경량화 시리즈 1편: LoRA(Low-Rank Adaptation) 완벽 가이드 (0) | 2025.09.14 |
[Activation Function] Sigmoid 이란? (2) | 2022.03.28 |
Deepfake faceswap 소프트웨어 설치, 사용법 (1) | 2021.04.06 |