The Power of Scale for Parameter-Efficient Prompt Tuning
Google Research 2019.09
https://arxiv.org/pdf/2104.08691.pdf
https://arxiv.org/abs/2104.08691
The Huggingface PEFT Library
https://github.com/huggingface/peft
PEFT 접근 방식을 사용하면 적은 계산 비용으로 전체 fine-tuning에 비해 충분한 성능을 얻을 수 있습니다.
이는 레이블이 지정된 데이터 및/또는 컴퓨팅 리소스가 제한될 때 선호되는 접근 방식입니다.
Fine-tuning | Parameter-efficient fine-tuning(PEFT) |
모든 모델 매개변수 조정 | 소수의 (추가) 모델 매개변수 조정 |
호스팅이 필요한 기본 모델의 복사본을 생성 | 몇 MB 이하의 작은 체크포인트를 생성 |
1,000~100,000개의 라벨이 지정된 데이터 포인트가 필요 | 100~1,000개의 라벨이 지정된 데이터 포인트가 필요 |
기본 모델에 비해 대상 작업에서 상당한 성능 향상 | 기본 모델 크기 및 사용된 데이터에 따라 전체 미세 조정과 비교 가능 |
치명적인 망각에 빠지기 쉽다 | 치명적인 망각을 극복 |
Prompt Tuning
Soft Prompt
모델 fine tuning의 대안인 Prompt tuning은 모델 가중치를 동결하고 프롬프트의 매개변수를 업데이트 합니다.
결과 프롬프트는 'soft prompt'입니다.
위의 이미지는 model tuning과 prompt tuning을 대조합니다.
model tuning에서는 다른 작업에서 동일한 모델을 미세 튜닝합니다. 이렇게 하면 입력을 쉽게 일괄 처리할 수 없는 몇 가지 다른 모델이 제공됩니다.
반면 prompt tunig을 사용하면 모든 작업에 동일한 모델을 사용할 수 있습니다. 추론 시간에 적절한 프롬프트를 추가하기만 하면 다양한 작업에서 일괄 처리가 더 쉬워집니다. 이것은 정기적인 프롬프팅이 갖는 이점과 거의 동일합니다. 또한 여러 작업에서 단일 모델에 대해 훈련된 soft prompt는 종종 토큰 길이가 동일합니다.
Soft Prompt 작동 원리
soft prompting의 기본 논리를 이해하기 위해 주어진 프롬프트에서 모델 추론이 작동하는 방식에 대해 생각해 봅시다.
What's 2+2?
1) What, 's, 2, +, 2, ?로 토큰화될 수 있습니다.
2) 그런 다음 각 토큰은 값의 벡터로 변환됩니다.
3) 이 값의 벡터는 모델 매개변수로 간주될 수 있습니다. 이 프롬프트의 가중치만 조정하여 모델을 추가로 훈련할 수 있습니다.
이러한 가중치를 업데이트하기 시작하자마자 토큰의 벡터는 더 이상 어휘의 실제 임베딩과 일치하지 않습니다.
결론
프롬프트 튜닝은 더 큰 모델에서 더 잘 수행됩니다.
모델이 클수록 소프트 프롬프트 토큰도 덜 필요합니다.
그럼에도 불구하고 20개 이상의 토큰은 상당한 성능 향상을 가져오지 않습니다.
Interpretable Soft Prompts(해석 가능한 Soft Prompt)
소프트 프롬프트는 어휘의 실제 토큰에 해당하지 않는 일련의 벡터입니다. 이로 인해 프롬프트를 해석하기가 어렵습니다. 그러나 우리는 여전히 벡터를 어휘에서 가장 가까운 토큰에 매핑하여 그렇게 하려고 시도할 수 있습니다. 그러나 예상되는 소프트 프롬프트는 종종 제멋대로입니다. 그들은 작업을 잘 해결할 수 있지만 어휘에서 임의의 토큰에 투영됩니다.
예를 들어 GSM8K2와 같은 수학 문제를 학습하는 경우 You are a mathematician. Solve this question:이라는 프롬프트로 시작할 수 있습니다.
prompt tuning을 수행한 다음 이를 다시 토큰 공간에 투영하면 A bus is a bus. Do thing here:와 같이 무의미한 결과가 남을 수 있습니다. 이 무의미한 프롬프트에 매핑되는 soft prompt가 작업에서 더 나은 성능을 제공할 수 있는 경우가 많습니다.
The Waywardness Hypothesis(고집불통 가설)
Khashabi et al.은 이 놀라운 가설을 제안합니다. 작업이 주어지면 개별 대상 프롬프트에 대해 작업을 잘 수행하면서 그것에 투사되는 연속적인 프롬프트가 존재한다고 말합니다.
이는 1000개의 서로 다른 작업이 주어지면 동일한 개별 프롬프트에 매핑되는 1000개의 서로 다른 성능 소프트 프롬프트(각 작업에 대해 하나씩)가 있음을 의미합니다.
Interpretability Risks(해석 위험)
소프트 프롬프트를 해석할 때 발생하는 여러 가지 위험을 강조하기 위해 Waywardness Hypothesis를 사용합니다. 특히, 소프트 프롬프트는 오해의 소지가 있는 의도를 제공하는 별개의 프롬프트로 투사될 수 있습니다.
순위 이력서에 대한 소프트 프롬프트를 고려하십시오. 토큰 공간에 투영하면 You hiring manager. Rank good resumes:가 될 수 있습니다. 이것은 괜찮은 것 같고 아마도 문법적으로 약간 부족할 것입니다. 그러나 토큰 good는 white에 대한 토큰과 유사한 프로젝션을 가질 수 있으며 프롬프트에 암시적 편향이 존재할 수 있습니다. 약간 다른 프로젝션 방법을 사용하면 You hiring manager. Rank white resumes:로 끝날 수 있습니다. 이것은 분명히 상당히 다르며 중요한 의미를 가질 수 있습니다.
규칙적인 불연속 프롬프트를 해석하는 것과 유사하게 프롬프트에 존재할 수 있는 편향을 극도로 의식해야 합니다. 소프트 프롬프트는 해석하기 더 어렵기 때문에 특히 주의해야 합니다.
Prefix Tuning
Prefix tuning은 GPT 모델에서 자연어 생성(NLG) 작업을 위해 설계되었으며, Prompt tuning과 매우 유사합니다.
사전에 훈련된(pre-trained) 모델의 나머지 매개변수를 동결된 상태로 유지하면서 훈련 및 업데이트할 수 있는 일련의 타스크 별 벡터를 입력 앞에 추가합니다.
Prefix tuning은 소프트 프롬프트를 사용합니다. 사전 훈련된 LLM을 고정한 상태로 유지하면서 훈련하는 입력 임베딩에 자유 매개변수가 있는 벡터가 연결됩니다.
Prefix tuning에서는 각 변환기 레이어에 벡터가 추가됩니다.
Prompt Tuning
Prompt Tuning은 벡터가 입력 레이어에만 추가되는 Prefix Tuning의 간단한 변형입니다.
[Prompt Tuning] Multi-task Prompt Tuning
Prefix Tuning vs Prompt Tuning
prefix 파라미터가 모든 모델 layer에 삽입되는 반면 prompt tuning은 prompt 파라미터만 모델 입력 임베딩에 추가됩니다.
prefix 파라미터는 또한 불안정성을 유발하고 성능을 저하시키기 때문에 soft prompt에서 직접 훈련하는 대신 별도의 feed-forward network(FFN)에 의해 최적화 됩니다.
FFN은 soft prompt를 업데이트한 후 삭제됩니다.
P-Tuning
P-Tuning은 prompt tuning의 변형입니다.
LSTM 모델을 사용하여 연속된 공간에서 더 나은 프롬프트를 자동으로 검색하고 최적화하는 방법입니다.
다양한 모델 규모(300M~10B)에서 잘 작동하는 것으로 경험적으로 입증되었습니다.
References
'Generative AI > Prompt Engineering & Tuning' 카테고리의 다른 글
[Prompt Engineering] Best Practices of Prompt Engineering (0) | 2023.07.17 |
---|---|
[Prompt Engineering] RAG(Retrieval Augmented Generation) (0) | 2023.07.11 |
[Generative AI] Prompt Engineer (프롬프트 엔지니어) (1) | 2023.07.11 |
[Prompt Tuning] Multi-task Prompt Tuning (0) | 2023.07.03 |
Prompt Engineering vs Prompt Tuning vs Fine Tuning (0) | 2023.06.21 |