생각하는 아져씨

파라미터를 효율적으로 파인튜닝한다?! 🤩 본문

Machine & Deep Learning/Generative AI

파라미터를 효율적으로 파인튜닝한다?! 🤩

azeomi 2023. 10. 20. 11:47

앤드류 응 교수님의 강의를 듣고 정리 및 공부한 글임을 알려드립니다.

Generative AI with LLMs In Generative AI with Large Language Models (LLMs), created in partnership with AWS, you’ll learn the fundamentals of how generative AI works, and how to deploy it in real-world applications.

 

LLM의 Full Fine-Tuning은 너무 많은 계산과 메모리가 소요됩니다. 학습 weights와 Optimizer States, Gradients, Forward Activations, Temp memory 등을 계산하고 저장하는데 많은 비용이 필요하기 때문에 일반 소비자의 하드웨어 다루기는 조금 크다는 점이 있습니다.

이와 달리, PEFT(Parameter Efficient Fine-Tuning)은 전체를 업데이트하는 것이 아닌, 파라미터의 일부만 업데이트하는 방식으로, 위 문제를 조금 해결할 수 있습니다.

 

PEFT는 크게 2가지 방법

PEFT에는 여러 가지 방법이 존재하고 현재까지 많은 갈래로 연구되고 있습니다. 이들을 크게 2가지로 구별해 볼 수 있는데,

  1. 모델의 대부분 weights는 고정하고, 극 일부만 Fine-Tuning 하는 방법 → 특정 Layer 또는 Component가 될 수 있습니다.
  2. 원래 LLM의 weights는 전혀 건들지 않고, 새로운 Layer 또는 Component를 일부 추가하는 방법

2가지 방법의 공통점이 무엇일까요?

바로 모델의 대부분의 weight가 고정되어 있다는 점입니다. 그래서 학습할 수 있는 weights는 오리지널 LLM의 약 15~20% 정도가 되면서 학습에 필요한 메모리 관리가 쉬워지고, Single GPU에서도 동작이 가능하게 됩니다.

또한 Original LLM이 ‘아주 조금’ 수정되기 때문에 Full Fine-Tuning에서 일어나는 Catastrophic Forgetting이 일어날 가능성이 적어집니다.

 

어떤 Task에 적용할 때, Full Fine Tuning vs PEFT 비교

1) Full Fine-Tuning

Task에 맞게 파인 튜닝하고 싶다고 가정해 봅니다. LLM을 Task마다 Full Fine-Tuning 하게 되면 오리지널 LLM과 동일 사이즈의 파인튜닝 LLM이 만들어지게 됩니다.

그래서 오리지널 LLM과 동일한 사이즈(그림상 GBs)라서 multiple-task에 대해 파인 튜닝한다면 메모리 저장 문제가 발생할 수 있습니다.

반면 PEFT는 공간도 절약하고 좀 더 Flexible 하다는 장점이 있죠

 

2) PEFT

PEFT을 통해서 공간을 절약하고 Flexible 하게 multiple-task에 대해 파인튜닝을 적용할 수 있습니다.

각 Task에 대해 PEFT 하면 적은 수의 파라미터만 학습하게 되면서 전체적으로 차지하는 공간이 GBs → MBs로 줄어들게 됩니다.

이렇게 새로운 파라미터를 원래 LLM에 weights와 결합해서 사용하면, Task마다 full fine tuning 할 필요 없이 쉽게 교체 가능해 매우 효율적인 장점도 존재합니다.

PEFT는 굉장히 다양한 방법이 존재하는데, 각 방법마다 Trade-Off가 존재합니다.

그래서 ‘어떤 PEFT가 최고의 방법이다’라고 아직까지 얘기할 순 없는 것 같습니다.

 

 

PEFT의 3가지 주요 클래스

크게 3가지 방법론으로 구분됩니다.

1) Selective Methods

오리지널 LLM 파라미터의 일부만 파인튜닝 하는 방법입니다. 업데이트하려는 파라미터를 선택하는 방법이죠. 모델의 특정 Component 또는 Layer 또는 개별 파라미터 등을 선택해서 파인튜닝을 진행하게 됩니다. 각 방법마다 성능이 다르고 컴퓨팅 위에 언급된 Trade-Off가 존재합니다.

 

2) Reparameterization Methods

오리지널 네트워크 weights의 새로운 Low-Rank Transformations를 생성해서 학습할 파라미터의 수를 줄이는 방법입니다. 대표적으로 유명한 방법으로 LoRA가 있습니다.

 

3) Additive Methods

오리지널 LLM의 모든 weights는 freeze로 유지한 채, 새로운 학습가능한 Components를 도입해 파인튜닝하는 방법입니다.

이 방법에는 AdpaterSoft Prompts 방식이 있는데,

Adapter는 모델 구조에 새로운 레이어를 추가하는 방법이고, Soft prompts는 모델 구조는 고정한 채 더 나은 성능을 내기 위해 Input을 조정하는 방법입니다. 보통 Prompt embedding에 파라미터를 추가하거나, Input은 고정하고 embedding weights를 학습하게 됩니다.