[NLP] LLM의 효율적인 Fine-Tuning을 진행하는 방법 | Parameter Efficient Fine-Tuning, PEFT
PEFT
등장 배경
💉 Fine Tuning
언어 모델들은 수집된 데이터를 바탕으로 사전학습을 하고, 그 다음 용도에 따라 Fine-tuning을 진행했습니다. 여러 가지 방법들이 있지만, 사전학습 모델에서 임베딩을 추출하고 분류기를 학습하는 방법 (Feature-based), 다른 층은 동결하고 마지막 단계의 Ouput 층만을 업데이트 하는 방법, 모든 층을 업데이트를 하는 방법으로 크게 세 가지로 분류할 수 있습니다. 이 방법들 중 직관적으로도 모든 파라미터를 학습할 때 가장 높은 성능을 기록 하지만, 효율성 관점에서는 낮습니다.
In-Context Learning (ICL)
그래서 등장한 것이 ICL이라고 불리는 방법입니다. GPT-3 이후에는 언어모델을 활용할 수 있기 때문에 예시를 모델에 입력해주고 모델에 미세조정 없이 문제 해결할 수 있습니다. 이는 이전에 정리했던 Few-shot prompting과 같습니다.
2024.12.02 - [노트/NLP] - Large Language Model(LLM)의 학습 방법론 | LLM Pretrained Models
Large Language Model(LLM)의 학습 방법론 | LLM Pretrained Models
1. 주요 개념1.1. 언어 모델(LM)의 주요 변화언어 모델(Language Model, LM)은 시간이 지나면서 지속적으로 발전하고 있습니다. 과거에는 통계 및 어휘 빈도 기반의 방법론을 채택한 Statistical LM(예시 : TF-
seanpark11.tistory.com
기존 방식의 한계
하지만 이러한 기존 방식들은 아래와 같은 한계를 보였고, 이에 효율적인 Fine-Tuning을 고민하기 시작했습니다.
- 모델이 지속적으로 학습하다보면 기존 정보를 잊는 현상
- 모델의 크기가 커짐에 따라 전체 파라미터 학습이 어려워짐 (많은 컴퓨팅 자원과 시간 소요)
- ICL에서 신뢰할 수 없는 결과가 나올 수 있음
PEFT 주요 접근방식
파라미터 효율적인 Fine Tuning (Parameter Efficient Fine Tuning, PEFT)은 이러한 맥락에서 등장했습니다. LLM에서 채택하고 있는 트랜스포머 구조의 모든 파라미터를 업데이트하지 않고, 각 방법론마다 소량의 파라미터를 효과적으로 업데이트하는 방식으로 이뤄집니다.
대표적인 방식은 아래 4가지( Adapter Tuning, Prefix Tuning, Prompt Tuning, Low-Rank Adaptation)로 요약할 수 있습니다.
☑️ Adapter Tuning
이미 학습된 Multi-Head Attention(MHA)과 Feed-Foward Network(FFN)에 Adapter를 붙인 구조입니다. Adapter 층은 트랜스포머의 벡터를 더 작은 차원으로 압축한 후 비선형 변환을 거쳐 원래 차원으로 복원하는 병목 구조를 채택합니다. 이를 통해 모델의 파라미터를 줄일 수 있습니다. (ResNet에서도 이러한 병목구조를 활용했던 적이 있습니다.)
☑️ Prefix Tuning
Layer에 Prefix라는 훈련 가능한 벡터를 붙여주는 구조입니다. 접두사라는 이름처럼 기존 벡터에 가상의 임베딩인 prefix를 붙여주는 형태로 기존 모델과 병합해서 사용할 수 있습니다.
☑️ Prompt Tuning
입력 층에 훈련 가능한 prompt 벡터를 붙인 구조로, 임베딩 층을 최적화할 수있습니다. 앞서 ICL처럼 자연어인 입력 프롬프트를 바꾸는 것은 아니고, 벡터를 추가하는 방식입니다.
☑️ Low-Rank Adaptation
현재 LLM의 PEFT에 가장 널리 쓰이는 방법론인 Low-Rank Adaptation(LORA)는 학습 가능한 randk decomposition 행렬을 삽입해 Layer 별로 낮은 랭크로 전환하는 구조를 가집니다. 행렬의 차원을 rank만큼 줄이는 행렬과 원래 차원의 크기로 바꿔주는 행렬로 구성되며 이를 통해 연산량을 줄입니다. 다만, 너무 많은 연산량을 줄일 경우 적절한 학습이 이뤄지지 않아 품질에 문제가 있을 수 있기 때문에 적정한 수준을 찾는 것이 필요합니다.
참고자료
[1] 강필성. "Text Generation 2 : Parameter Efficient Tuning"
[2] Zhao et al. "A Survey of Large Language Models"
'Note > Deep Learning' 카테고리의 다른 글
[NLP] LLM 평가지표와 주요 데이터셋 간단 정리 | MMLU, HellaSwag, HumanEval, G-Eval (1) | 2024.12.05 |
---|---|
[NLP] 오픈소스 LLM과 학습방법 | LLaMA, Alpaca (0) | 2024.12.05 |
[NLP] Large Language Model(LLM)의 학습 방법론 | LLM Pretrained Models (0) | 2024.12.03 |
[Seg] Fully Convolutional Networks (FCN) for Segmentation 정리 (0) | 2024.11.15 |
[Seg] Segmentation Task와 주요 평가지표(Dice) 정리 (0) | 2024.11.14 |