Table of Contents
● Parameter Efficient Fine-tuning이란?
● 대표적인 PEFT 방법론 6가지
● LLM에 적용 가능한 PEFT 방법론 3가지
Parameter Efficient Fine-tuning(PEFT)이란?
딥러닝 모델의 크기가 증가함에 따라, 기존과 같이 태스크에 따른 모델 튜닝에 있어 기존과 같이 모든 파라미터를 미세조정하는 full-fine-tuning 방식은 자원 측면에서 점점 불가능해지고 있다. 이에 파라미터 효율적으로 fine-tuning 하는 PEFT 방법이 활발하게 연구되고 있다. PEFT는 다운스트림 작업의 성능을 유지하거나 심지어 향상시키면서 학습에 필요한 계산량, 혹은 모델의 크기를 줄이는 것을 목표로 한다.
PEFT는 아래와 같은 장점을 가진다:
✔ 필요한 계산량의 감소: 모델 크기를 줄이고, 중복된 파라미터를 제거하며 정밀도를 낮춤으로써 연산량을 줄인다.
✔ 추론 속도의 향상: 모델 크기가 작아지고 계산 복잡도가 줄어듬에 따라 추론 속도가 감소하여 실시간 애플리케이션에 적합해진다.
✔ 리소스가 제한된 디바이스에서의 배포 개선: 모바일 디바이스나 엣지 디바이스와 같이 제한적인 시소스에의 배포가 용이해진다.
✔ 비용 절감: fine-tuning 및 추론에 드는 모든 비용이 절감된다
✔ 선응 유지 혹은 향상: 모델 크기가 줄어들면서도 다운스트림 태스크에의 성능을 유지하거나 향상하는 것이 가능하다.
대표적인 PEFT 방법론 6가지
1. 지식증류(Knowledge distillation)
지식 증류(knowledge distrystal)는 지식을 크고 성과가 좋은 모델(teacher)에서 더 작은 모델(student)로 전달하는 기술이다. Teacher 모델의 output probability를 student 모델 학습을 위한 소프트 타깃(soft target)으로 사용한다.
이 과정은 student 모델이 teacher 모델이 학습한 방대한 지식을 얻을 뿐만 아니라, 일반화를 더 잘할 수 있도록 한다. 모델 크기를 줄일 뿐만 아니라 더 작은 student 모델이 정규화(regularize)하도록 도움을 주는 것이다.
2. 모델 가지치기(Pruning)
가지치기는 사전 학습된 모델에서 불필요한 가중치나 연결을 제거하는 기법이다. 중복되거나 덜 중요한 매개변수를 식별하고 제거함으로써 모델의 크기와 계산 요구 사항을 크게 줄일 수 있다. Magnitude-based pruning(크기가 작은 가중치를 제거함), Structured pruning(중요도에 따라 특정 뉴런 또는 필터를 제거) 등 다양한 방법이 존재하며, 성능 저하 없이 중복 매개변수를 제거하여 효율적으로 fine-tuning 할 수 있다.
3. 양자화 (Quantization)
양자화는 모델 매개변수(가중치)의 정밀도를 낮춰 메모리 및 계산 요구 사항을 낮추는 기술이다다. 기존 딥러닝 모델에서 매개변수는 일반적으로 32비트 부동 소수점 숫자로 저장된다. 하지만 양자화를 사용하면 이러한 매개변수를 8비트 정수와 같이 더 낮은 비트 정밀도로 표현할 수 있다. 이렇게 정밀도를 낮추면 메모리 사용량이 크게 줄어들고 계산 속도가 빨라진다.
양자화는 학습 후 사전 학습된 모델을 양자화하는 post-training quantization 기법과 양자화를 염두에 두고 모델을 학습하는 quantization-aware training으로 나뉜다. 두 가지 접근 방식 모두 모델 성능을 유지하면서 효율적인 fine-tuning을 수행한다.
4. Low Rank Factorization
Low-rank factorization은 사전학습된 모델의 가중치 행렬을 row-rank 행렬로 근사화하는 기술이다. 가중치 행렬을 저순위 구성 요소로 분해함으로써 모델의 매개 변수 수와 계산 복잡도를 줄인다. 단수 값 분해(SVD) 및 텐서 인수분해와 같은 low-rank factoraization 방법은 모델이 수행해야 하는 태스크에서 가장 중요한 정보를 유지하는 low-rank 근사치를 찾는 것을 목표로 한다. 이 기술은 합리적인 성능을 달성하면서 매개 변수 효율적인 미세 조정 옵션을 제공한다.
5. 지식 주입(Knowledge Injection)
지식 주입은 원래 모델의 파라미터를 수정하지 않고, 태스크 별 정보를 주입함으로써 특정 태스크에 대한 사전 학습된 모델의 성능을 향상시키는 기술이다. 이는 태스크별 모듈을 추가하거나 기존 아키텍처를 수정하여 태스크별 feature을 학습할 수 있도록 구현한다. 지식 주입은 사전 학습된 모델에 이미 존재하는 지식을 활용하면서도 재학습의 필요성을 최소화하기 때문에 효율적인 fine-tuning이 가능하다. 원본 모델에 대한 수정을 최소화하고자 하는 시나리오에서 특히 유용한 방법론이다.
6. Adapter Modules(어댑터 모듈)
어댑터 모듈은 원래의 파라미터를 수정하지 않고 특정 작업을 위해 사전 학습된 모델에 추가하는 경량 모듈을 말한다. 이 모듈은 태스크별로 관리해야 하며, 사전 학습된 모델의 아키텍처의 각기 다른 계층에 삽입하는 것이 가능하다. 어댑터 모듈은 사전 학습된 파라미터의 대부분을 그대로 유지하면서 모델이 작업별 정보를 학습할 수 있도록 함으로써 효율적인 미세 조정이 가능하도록 한다. 이 접근 방식은 전체 모델을 재학습하지 않고도 어댑터를 다른 태스크들에 대해 쉽게 추가하거나 제거할 수 있으므로 유연성과 효율성을 제공한다.
LLM 특화 PEFT 방법론
1. Low Rank Adaptation(LoRA)
Low-rank adaption(LoRA)은 Low-rank factorization 방법을 활용하여 LLM의 linear layer에 대한 업데이트를 근사화하는 기술이다. 이는 훈련 가능한 매개 변수의 수를 크게 줄이고 모델의 최종 성능에 거의 영향을 주지 않으면서 훈련 속도를 높인다.
2. Prompt Tuning
LLM을 활용하는 가장 기본적인 방법은 LLM이 특정 태스크를 수행하도록 하기 위해 해당 태스크를 자연어로 설명한 '프롬프트'를 입력한 후 입력 데이터를 붙여서 넣는 Prompt Engineering 방식이다. 예를 들어 감성분석 태스크라면 <다음 문장을 긍정/혹은 부정으로 분류하시오>와 같은 프롬프트를 작성하는 것이다. 이러한 프롬프트 작성은 지시하는 태스크가 복잡해짐에 따라 엔지니어링이 복잡해지는 어려움이 있다.
프롬프트 튜닝은 태스크별 디테일을 학습하는 훈련 가능한 텐서(Soft prompt, 소프트 프롬프트)를 모델 입력 임베딩의 맨 앞에 붙이는 방식이다. 태스크에 대한 프롬프트를 자연어로 작성하는 대신 태스크 수행에 최적화된 벡터를 사용하는 것이다. 이러한 프롬프트 텐서는 gradient descent 등 일반적인 뉴럴 네트워크 최적화 방법에 따라 optimize된다. 이때 모델 아키텍처의 나머지 부분은 변경되지 않는다.
3. Prefix Tuning
Prefix Tuning은 Prompt Tuning과 유사한 접근 방식인데, 입력 레이어에만 프롬프트 텐서를 추가하는 대신 모든 레이어의 hidden state에 학습 가능한 파라미터를 추가한다는 차이점이 있다.
Li와 Liang은 prompt tuning에서 소프트 프롬프트를 직접 최적화하는 것인 학습 중 불안정성을 야기한다는 것을 발견했다. 이에 소프트 프롬프트를 피드 포워드 네트워크를 통해 파라미터화하고 모든 layer의 hidden state에 추가하는 방법을 사용하였다. 이때 하전학습된 transformer의 다른 파라미터들은 모두 고정된 채 prefix의 파라미터만을 최적화한다.
LLM(GPT-3)에서 PEFT 방법론에 대한 벤치마크 성능
LoRA 논문에 따르면 코딩(WikiSQL), 다국어 자연어추론(MNLI-m), 대화요약(SAMSum) 등 다양한 벤치마크에서 LoRA는 적은 개수의 파라미터 튜닝만으로도 Prompt tuning이나 Prefix tuning보다 조금 더 나은 결과를 얻을 수 있었다. 특히 Full fine-tuning 대비 현저하게 적은 학습 파라미터(0.002% 수준)만으로 전체 파라미터 fine-tuning에 비견할만한, 혹은 더 나은 성능을 얻을 수 있었다는 결과는 흥미롭다.
참고자료:
- https://medium.com/@abonia/llm-series-parameter-efficient-fine-tuning-e9839fae44ac
- https://lightning.ai/pages/community/article/lora-llm/
- https://arxiv.org/pdf/1902.00751.pdf
- https://siddharth-1729-65206.medium.com/summary-of-adapter-based-performance-efficient-fine-tuning-peft-techniques-for-large-language-fa65d0c2d55f
'AI' 카테고리의 다른 글
LLM Evaluation | LLM 기반의 시스템을 어떻게 평가할 수 있을까 (5) | 2024.01.16 |
---|---|
OpenAI GPT store 공개 - 내가 가진 아이디어로 노코딩 챗봇 개발 & 수익화하기 (34) | 2024.01.12 |
논란의 신모델 구글 '제미나이(Gemini)' - 새롭게 생각하는 인공지능의 시작일까 (1) | 2024.01.05 |
ChatGPT Fine-tuning 예시 | 언제, 어떻게 해야 하는가 (25) | 2023.11.11 |
[OpenAI DevDay] GPT-4 Turbo, DALL-E 3, Assistants API, ... 놀라운 혁신 발표 (13) | 2023.11.08 |