Prompt Tuning

참고: https://blog.harampark.com/blog/llm-prompt-tuning/


Contents

  1. PEFT
  2. Prompt Tuning
  3. Prefix tuning vs. P tuning vs. Prompt Tuning


1. PEFT (Parameter-Efficient Fine-Tuning)

  • 모델의 “일부”의 파라미터만을 효과적으로 FT함
  • ex) LoRA, Prefix Tuning, P-Tuning, Prompt Tuning

2. Prompt Tuning

( The Power of Scale for Parameter-Efficient Prompt Tuning )

(1) Process: 간소화한 형태의 FT

  • Downstream task를 수행하기 위해 모델의 파라미터를 고정
  • “개별 Task”마다 prompt의 파라미터를 업데이트 ( = Soft Prompt )
    • Task별로 input 값에 prompt를 붙여서 학습

(2) Prompt Tuning vs. Model Tuning

  • Model Tuning: 모델의 “모든” 파라미터를 튜닝
  • Prompt Tuning: 모델의 파라미터는 고정 +. 태스크 A와 B, C에 튜닝이 가능한 토큰을 붙인다.

(3) Hard Prompt vs. Soft Prompt

Hard prompt

  • input의 특성에 따라 input 값이 미리 정의된 텍스트 템플릿으로 바뀐다
  • 이산적인(discrete) 값

Soft prompt

  • input 앞에 튜닝이 가능한 임베딩 조각(tunable piece of embedding)이 붙게 된다
  • 연속적인(continuous) 값

(4) Prompt Tuning의 고려사항

Q1) Prompt의 초깃값

  • (1) Random initialization
  • (2) 개별 prompt 토큰을 모델의 vocabulary에서 추출한 임베딩으로 초기화
  • (3) prompt를 출력 클래스를 나열하는 임베딩으로 초기화

Q2) Prompt의 길이를 얼마로 할 것인가?

Prompt의 길이를 위한 파라미터의 비용 = EP

  • E: prompt 토큰 dimension
  • P: prompt 토큰 길이

3. Prefix tuning vs. P tuning vs. Prompt tuning

(1) Prefix tuning

Prefix tuning = 모든 트랜스포머 레이어에 접두어 시퀀스를 붙여 학습

Prefix Tuning vs. Prompt Tuning

  • Prefix Tuning: 트랜스포머의 모든 계층에 접두어
  • Prompt Tuning: input 앞에 접두어 => 더 적은 파라미터로 FT 가능
  • ex) BART:
    • Prefix tuning: 인코더와 디코더 네트워크에 모두 접두사
    • Prompt Tuning: 인코더의 프롬프트에만 접두어를

(2) P-tuning

P-tuning = 인간이 디자인한 패턴을 사용

  • 학습이 가능한 연속적인 prompt를 input 전체에 삽입


Prefix Tuning vs. Prompt Tuning

  • P-tuning:
    • a) 입력 전체에 연속적인 prompt를 삽입
    • b) 모델 파라미터도 같이 업데이트
  • Prompt Tuning:
    • a) 접두어로 붙이기만함
    • b) 모델 파라미터 고정

Categories: ,

Updated: