본문 바로가기

Large Language Model

LLM 트랜드-02

LLM 학습의 문제점

    LLM 학습을 하기 위해서는 몇 가지 문제점이 존재합니다. 모델의 크기가 크다는 점입니다. 위의 그래프에서는 ELMo 모델이 출시했는데 해당 모델의 경우 9400만 개의 parameter를 가지고 있습니다. 2017년도에 Transformer 모델이 공개되었고, OpenAI에서 Transformer의 Decoder만을 사용해서 GPT를 만들었습니다. 이때의 Parameter가 약 1억 1천만 개의 Para meter를 사용했습니다. 

  이후, 구글에서 Bert 모델을 출시했는데, Large 모델 기준으로 3억 4천만 개를 가지고 있습니다. 이후 OpenAI가 출시 한 GPT-2의 경우 15억 개의 Parameter를 가지고 있습니다. 이후, NVIDIA에서 83억 개의 Parameter를 가지는 Megatron LM을 공개합니다. 여기까지만 봐도 모델들이 상당히 많은 양의 Parameter를 요구한다는 것을 알 수  있습니다.

 이후에도 모델의 크기를 키우기 위한 트랜드가 유지되고 있고, MS에서 공개한 T-NLG의 경우, 170억개에 해당하는 Parameter를 가지고 있음을 알 수 있습니다.

 

T-NLG 공개 후에 OpenAI에서 GPT-3를 공개했고, 해당 모델의 경우 1700억개의 parameter를 필요로하고, 구글의 Switch Transformer의 경우 1.6조개의 parameter를 요구하고 있습니다. 

 

   사실상 대형 기업이 아닌이상 LLM을 학습시킨다는 것은 이제 거의 불가능에 가깝습니다. 너무 많은 Parameter를 모델이 요구하고 있고, Inference 및 training 하기 위해서 많은 양의 GPU가 필요합니다. GPT와 같은 모델을 학습시키기 위해서는  nvidia에 A100 80GB GPU가 1024개가 필요합니다. A100 GPU의 경우, 장 당 2000만원에서 2500만원 가격입니다. 따라서 엄청나게 많은 돈이 필요합니다. 따라서 backbone의 경우, 학습을 시키기가 거의 불가능에 가깝습니다. fine tuning 또한 많은 GPU를 요구하고, 학습 시간도 한 달 ~ 두 달이 걸릴 정도로 배우 긴 학습 시간을 가지고 있습니다.

 

6B, 13B, 30B, 60B 들의 모델은 comsumer level gpu에서는 Finetuning 할 수 없습니다. 해당 문제들을 해결하기 위해서 prompt-tuning & PEFT & Deepspeed와 같은 방법들을 사용해서, comsumer level gpu에서의 학습이 가능하게 됩니다.

 

Promt Tuning & PEFT란 거대 모델의 모든 Parameter를 학습하는 것은 불가능하기 때문에 일부분의 parameter만을 학습하는 방법을 의미합니다. PEFT를 하기 위해서는 여러 방법들이 존재합니다.

  • Parameter Efficient Fine Tuning(PEFT)
    • Prompt Tuning
    • P-Tuning
    • Prefix-Tuning
    • LoRA

위에 소개한 4개의 방법들이 PEFT에서 사용하는 대표적인 방법들입니다. 위의 방법들은 모델의 구조는 구대로 두고, 새로운 정보만을 그대로 주입하겠다.라는 의미라고 생각하시면 됩니다. 따라서, 모델의 모든 parameter들을 학습 하기에는 gpu 자원이 부족하므로, prompt token만을 학습을 진행하기 위한 방법들입니다.

Prompt Tuning

 

P-tuning

 

Prefix Tuning

    위 사진 3개는 순서대로 Prompt Tuning, P-tuning, Prefix Tuning에 해당합니다. 해당 학습 방법은 P-token이라는 것을 학습합니다. LLM 모델은 trainable한 p-token들을 gpt모델에 입력으로 주는 구조를 가지고 있습니다. 따라서 우리는 trainable한 token에 대해서만의 학습을 진행을합니다. 즉, p-token들만을 학습해서 정답을 잘 맞출 수 있도록 학습을 수행합니다.

 

Lora

  Lora의 경우, 위의 학습 방법들과는 조금 다릅니다. Lora의 경우, trasnformer의 attention 모듈의 Q, V, K를 projection하는 위치에 어떤 adater를 탑재해서 parameter를 학습할 수 있도록 함으로해서, 특정 데이터 셋에 특화된 결과로 바뀔 수 있도록 학습하는 방법입니다.

Modell Parameters

PEFT는 일부분의 Parameter만을 바꾸는 학습방법입니다. 위의 그래프는 기존의 fine tuning과 비교한 그래프입니다. 모델이 작은 경우에는 full fine tuning을 사용하는 것이 모델의 성능이 좋다는 것을 알 수 있습니다. 모델이 커질 수록 full fine tun ing과 PEFT의 성능이 유사해짐을 알 수 있습니다. 아래 파란색 그래프는 사람이 손수 prompt를 작성을 했을 경우에 해당됩니다.

 

위의 결과를 보면 PEFT가 full fine tuning과 유사한 성능을 보인 다는 것을 알 수 있습니다. 결국 모델이 크면 클 수록 비슷한 경향을 보인다는 것을 알 수 있습니다.

PEFT의 방법들

 

위에서 소개한 방법 외에도 많은 방법들이 존재합니다.

 

 

  같은 GPU 자원으로 더 큰 모델 학습이 가능하며, 같은 모델을 더 빠르게 학습이 가능하게 됩니다. 또한 필요한 GPU 메모리또한 감소한다는 것을 알 수 있습니다.

 

  7B 모델의 경우, 4배 가장 저렴하게 사용이 가능하다는 것을 알 수 있고, 학습하지 못했던 65B와 같은 큰 모델도 학습이 가능하다는 것을 알 수 있습니다.