04_NLP(Natural Language Processing)자연어처리/LLM

Large Language Model의 근간 이론들

jiniby 2025. 2. 6. 16:45

✅ In-Context Learning

☑️ Fine Tuning과의 차이점

✔️ Fine Tuning

• 대규모 코퍼스로 사전학습 후,

• 적은 규모의 specific한 데이터셋에 대해 fine tuning하는 과정

=> 일반화된 task가 아닌, 일부 task에 대해서 능력을 집중적으로 향상

Finetuning LLMs Efficiently with Adapters

✔️ Fine Tuning vs In-Context Learning-Context Learning

LLM (Large Language Model)의 현재와 미래 – 테스트웍스

✔️ Fine Tuning vs In-Context Learning

GPT fine-tuning - 7. glossary

☑️ N-Shot Learning

✔️ In-Context Learning

•원하는 task에 대한 간단한 설명을 함께 Input

=> 학습 과정에서 다양한 스킬과 패턴인식 능력을 키워, Inference 단계에서 원하는 task에 빠르게 적응할 수 있도록 함

How does in-context learning work? A framework for understanding the differences from traditional supervised learning | SAIL Blog

✔️ Zero-Shot Learning

•예시를 전혀 보지 않고 모델 업데이트 없이 새로운 태스크를 수행

• Unsupervised multitask learners

•독해, 번역, 요약, Q&A 등에 대해 zero-shot 능력이 꽤 있음!

=> Zero-shot인데도 특정 태스크는 기존의 SOTA* 모델들을 짓눌러버림

 

✔️ One-Shot Learning

•단 한 개의 예시와, task에 대한 자연어 지시문이 제공

•이 방법이 사람이 소통하는 방법과 가장 흡사한 방법

One-Shot Learning in AI - Definition and Examples | Encord 

✔️ Few-Shot Learning

•모델은 추론 시 단 몇 개의 예시만을 참고해서 정답을 생성

•문맥과 원하는 답의 예시들이 주어짐. 이후 마지막으로 단 한 개의 문맥이 주어지면, 모델은 답을 생성해야 함

• Task-specific한 데이터에 대한 필요를 크게 줄여줌(즉, 몇 개 없어도 됨)

=> 새로운 task에 효율적으로 빠르게 적응

✔️ 모델에 주어지는 예시의 수가 증가할수록 성능이 증가

✔️ In-Context Prompt는 중요

 

✅ How to build ChatGPT?

☑️ ChatGPT란?

✔️ ChatGPT

•무의식적인 데이터 생성이 아닌, 모델에게 피드백을 주기 위한 데이터 생성

•사람의 지시를 반영하는 “Instruction Tuning”과 피드백을 반영하는 “Reinforcement Learning”으로 구성

✔️ 5일만에 사용자수 100만명 돌파

Chart: Threads Shoots Past One Million User Mark at Lightning Speed | Statista

✔️ 생산성 향상

메일리

ChatGPT Lifts Business Professionals’ Productivity and Improves Work Quality

✔️ ChatGPT의 활용

132. ChatGPT 톺아보기 (전자통신부설연구소 고우영 선임연구원) - YouTube ChatGPT, 기회인가 위협인가

✔️ ChatGPT와 PLM의 연계

[칼럼] 챗GPT-PLM 활용의 모습 - 캐드앤그래픽스

✔️ 기존 Chatbot의 경우, 적어도 4-5개이상의 AI모델들의 조합으로 구성

✔️ Multi-Tasking

• ChatGPT는 chatbot에서 요구한 태스크를 하나의 모델로 수행 가능이 외에도 훨씬 많은 태스크를 수행 가능
•하나의 모델이지만, 하나의 서비스로도 볼 수 있음 ( LLM as a Service)

•멀티태스킹, 학습 뿐만 아니라 추론 시에도 엄청난 Infra관련 투자/경험/기술이 필요

✔️ 어떤 태스크까지도 ChatGPT가 잘할까?

• ChatGPT API를 활용한 수많은 서비스들이 많이 나올 것이라 기대

=> ChatGPT의 역량 분석 필요 (Prompt Discovering)

✔️ ChatGPT Plugin

다양한 외부플러그인을 연동하여 범위를 확장 !

✔️ 그래서.. ChatGPT란?

 

• GPT-3.5를 파인튜닝한 모델

• InstructGPT의 "sibling model"로, 학습 방식이 유사

• Demonstration data: 데이터를 대화형으로 바꿈 •

보상 모델(Reward model, RM): 유저의 선호도에 대한 모델 

• 보상 모델을 활용해 ChatGPT를 강화학습(Reinforcement learning, RL)으로 업데이트

Introducing ChatGPT | OpenAI

✔️ 그래서.. ChatGPT란?

ChatGpt, 인공지능은 어떻게 학습하는가

✔️ Supervised Fine Tuning + RLHF

Understanding and Using Supervised Fine-Tuning (SFT) for Language Models

☑️ ChatGPT의 학습방법

✔️ 기존 GPT 모델에게 명령을 한다면?

[논문리뷰] GPT3의 새로워진 버전 - InstructGPT : 인간의 지시에 따른 결과물을 완성해내는 AI

 

✔️ Instruction Tuning

•일반적인 언어모델은 다음 토큰을 예측하거나, 일부 태스크를 수행하는 것에 초점을 맞추어 학습

=> 사람의 지시에 따르지 못함

 

• Instruction Tuning은 사람의 명령(Instruction)을 따르도록, 요구를 수행하도록 모델을 Fine Tuning하는 방식

•명령에 대한 파인튜닝과 강화학습을 하면 사용자의 의도를 더 잘 파악하고 답변한다는 것에 착안한 InstructGPT(2022년 1월)의 실험 방식을 가미

Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

 

✔️ Step 1. SFT(Supervised Fine Tuning)

 

• 예제 데이터 수집 후 supervised policy를 학습 => SFT 모델 확보

: GPT가 주어진 지시문대로 행동하도록 가르치기 위해, 해당 데이터셋을 만들어 fine tuning

 

• 이를 위해 지시 프롬프트와 그에 대한 결과물로 이루어진 데이터셋을 정의
   (demonstration dataset, 13K prompts)

- 프롬프트 데이터셋으로부터 지시 prompt를 샘플링 (예) 8살 아이에게 달착륙을 설명해보시오

- 라벨러는 프롬프트에 적합한 행동을 예시로 라벨링 (예) 몇몇 사람들이 달에 갔답니다 ~~

 

• 이 데이터셋을 GPT-3에 대해 Fine-tuning => SFT (supervised fine-tuning) 모델

- 지시문을 따르는 점에 있어 이 모델은 이미 GPT-3보다 성능이 우수했지만, 완벽하게 원하는 방식으로 작동하지는 않음

✔️ Step 2. 결과물에 대한 사람의 선호도 데이터를 학습

• Reward Model 학습 : SFT로 생성된 결과물에 대해 사람의 선호도를 반영할 수 있는 Reward Model 학습]

• Comparison dataset은 33K 개의 프롬프트로 이루어져 있으며 이를 Reward Model 학습에 적합하게 구성

- Comparison dataset은 프롬프트와 그에 따른 결과물들 (4-9개), 그리고 그 결과에 대한 선호도 순위로 구성됨

- 즉, 프롬프트가 주어질 때 Reward Model은 결과물들에 대해 사람의 선호도를 예측하는 방법을 학습

Improving your LLMs with RLHF on Amazon SageMaker | AWS Machine Learning Blog

✔️ Step 3. RLHF

• 강화학습을 사용해 Reward Model에 대해 policy를 최적화 : Step1의 SFT 모델을 Step2의 보상모델을 사용해 강화학습을 통해 추가 fine-tuning

• Proximal policy optimization algorithm(PPO) - Reward Model을 보상함수로 사용하여 정책을 최적화 (InstructGPT가 사람의 피드백을 얻는 방법)

 

✔️ PPO를 통해 Reward Model의 Policy를 반영

• PPO를 통한 fine-tuning 과정

1) GPT는 프롬프트를 보고, 그에 대한 결과 문장들을 생성

2) 생성된 문장들을 Reward Model이 평가하여 reward(보상)를 계산

3) 보상 값이 GPT에게 주어지고 모델은 보상을 최대화하는 방향, 즉 사람이 원하는 문장을 생성하는 방향으로 정책을 업데이트

 

=> 사람의 지시에 따르면서, 유용하고 안전한 문장을 생성하도록 최적화

✔️ 결국 ChatGPT는..

•먼저 지시문에 따라 결과를 완성하는 초기 모델, SFT 모델을 완성한 후

•사람의 feedback을 모사하는 보상 모델(Reward model)을 확보하여

•이를 통해 SFT 모델이 사람이 더 선호하는 결과를 추론하도록 강화학습을 진행한 것!

2025년 1월 최저가보장 한정판매 고양이 운전_가로형

✔️ 세상에 있는 책은 다 읽었으며 50개+ 언어 구사자 그런데 가물가물

✔️ Persona Injection

성격을 먼저 정의 하고 대화를 하면 더 좋아짐

✔️ ChatGPT의 올바른 사용법: 프롬프트 구성

✔️ 짧고. 간결하고. 확실하게

✔️ 출력물도 형태 지정

✔️ 길어지면 구역 지정

✔️ 복잡하면 구역 지정

✔️ 예시 들기

✔️ 3Cs Framework

✅ Parameter Efficient Fine Tuning

☑️ PEFT 소개

✔️ Full fine tuning of LLMs is challenging

PEFT — Parameter Efficient Fine Tuning | by kanika adik | Medium

✔️ Why PEFT?

•모델이 점점 커짐에 따라 시판 그래픽카드로 모델 전체를 fine tuning하는 것은 불가능
•또한 fine tuning된 모델은 이전의 사전학습된 모델과 똑같은 크기. 파인튜닝된 모델을 저장하고 사용하는 것 또한 (시간, 경제적으로) 비용이 많이 드는 일

=> PEFT(parameter-efficient fine tuning)은 이 두 가지의 문제를 해결하고자 등장

✔️ Parameter Efficient Fine Tuning (PEFT)

•사전 훈련된 언어 모델을 특정 작업이나 상황에 적용할 때, 가중치의 일부만 업데이트하는 파인 튜닝 방법
•일부만 fine tuning하므로 연산량이 대폭 감소
• Fine tuning 할 때 발생하는 문제점 중 하나인 catastrophic forgetting 완화 (일부가중치만 업데이트) 
• PEFT는 또한 적은 데이터에서 fine tuning 할 때나 도메인 밖의 데이터를 일반화할 때 더욱 좋은 성능
=> 적은 수의 파라미터를 학습하는 것만으로 모델 전체를 fine tuning 하는 것과 유사한 효과

✔️ PEFT의 장점

PEFT of LLMs: A Practical Guide

✔️ PEFT 프로세스

☑️ PEFT 방법론

✔️ Pretrain, Prompt, Predict: A New Paradigm for NLP

 

✔️ Prompt란?

•일반적인 정의 : 프롬프트라는 것은 언어모델에 전달하는 질문이나 요청을 사용자가 응답을 유도한다는 의미

• Template을 사람이 문자 그대로 해석할 수 있는지에 따라 구분
: Discrete Prompts(= Hard Prompt) 실제 입력어로 넣는것들 

: Continuous Prompts(= Soft Prompt) 실제 학습이 이뤄지는 프롬포트 (임베딩) 

 

• 이러한 프롬프트(prompt)를 사용해 PLMs를 조정하는 방법

=> Prompt Learning

The comparison between the previous T5 prompt tuning method (part (a))... | Download Scientific Diagram

✔️ Prefix-Tuning

• 연속적인 태스크 특화 벡터(continuous task-specific vector = prefix) 를 활용해 언어모델을 최적화하는 방법

•  LM 고정하고 각 layer의 input 앞에 task-specific vectors를 붙여 tuning함

• 각 Task에 대하여 parameter를 tuning 시켜 task 마다 적합한 task-specific vectors를 도출

=> 하나의 언어모델로 여러 개의 태스크를 처리할 수 있음 (prefix를 학습)

On Robust Prefix-Tuning for Text Classification – THUMT Research Blog

✔️ Prefix-Tuning vs Fine-Tuning

• Prefix-tuning은 각 Task에 대한 task-specific vectors(Prefix)를 계산하는 parameter만을 fine-tuning

=> 전체 모델을 fine-tuning 및 저장하는 방식에 비해 overhead 감소

✔️ Prefix-Tuning

• Table-to-text, summarization 등의 task에 대해 평가

• Prefix-Tuning 모델이 Fine-tuning, Adapter를 적용한 조건 보다 더 적은 파라미터를 학습하면서 더 높거나 유사한 성능을 달성

✔️ Prompt Tuning

•전체 파라미터를 튜닝하는 대신, 입력 프롬프트 임베딩만 학습하는 방법

=> 즉 모델에 입력되는 프롬프트에 해당하는 weight만을 학습

• PLMs를 freeze하고 입력 텍스트에 추가되는 downstream task당 k개의 토큰만을 학습함

✔️ Fine Tuning vs Prompt Tuning

Large Language Model을 밀어서 잠금해제: Parameter-Efficient Fine-Tuning 2 |  

Prompt fine tuning 의 장점 

1. 특정Task모델에 유연성을 크게 향상 시킬수 있다.
2. 학습에 필요한 파라미터 양이 대폭 감소한다. 학습과정이 빨리지고 계산비용이 낮아진다.
3.  이방식은 모델의 일반화 능력을 손상시키지 않으면서 특정 task에 대한 성능을 향상시킨다.

✔️ Prompt Tuning

• T5에 적용 시 GPT3 의 few-shot prompt design 보다 우수함

• Prompt Tuning 사용시, Domain Adaptation에 용이

=> 서로 다른 데이터로 학습, 평가 시에도 성능이 보존

 

✔️ P-Tuning

• PLMs의 전체 weight를 fine-tuning하지 않고, continuous prompt embeddings만 tuning하는 방법

• LM의 입력부에 Prompt Encoder(Bi-LSTM)를 두어 나온 출력 값을 Prompt의 Token Embedding으로 사용

• Task와 관련된 anchor tokens을 추가하여 성능 개선(anchor token값은 고정)

•언어모델의 구조와 상관없이 적용가능

• NLU Task에서 GPT style model로 BERT style model보다 더 낫거나 비슷한 성능

• P-tuning 방식을 적용하여 SuperGLUE 벤치마크 측정 결과: AE, AR 방식 모두 모든 세팅(fully-supervised & few-shot setting)에서 기존 fine-tuning 방식 대비 성능 개선. 특히 AR 방식의 성능 개선 폭이 더 크게 나타남

• Manual Prompt(MP), Fine-tuning(FT), MP+FT, P-tuning의 성능을 비교해보면 Fine tuning보다 같거나 더 좋은 결과

✔️ Prefix Tuning vs Prompt Tuning vs P-Tuning

Large Language Model을 밀어서 잠금해제: Parameter-Efficient Fine-Tuning 2 |  

✔️ LoRA (Low Rank Adaptation)

• Pre-trained weigh를 고정한 상태로 유지하며, dense layer 변화에 대한 rank decomposition metrices를 최적화

• GPT-3의 경우 175B의 파라미터 가운데 0.01%의 파라미터 개수만 이용할 정도로 높은 효율성

•작은 rank 값을 설정해도 성능이 유지

✔️ How to use LoRA?

• Huggingface에서 제공하는 peft 라이브러리를 통해 쉽게 사용 가능

✔️ Quantization

• Training Time 을 줄이는게 아닌, Inference Time 을 줄이는 것이 주 목적

(모델을 서빙할때 많이 사용됨)

딥러닝의 Quantization (양자화)와 Quantization Aware Training - gaussian37

✔️ Quantization종류

모델 경량화 2 - Quantization(양자화) | aalphaca's devlog

포스트 트레이닝할때 / 학습과정할때  

✔️ Quantization이란?

•모델의 파라미터를 lower bit로 표현함으로써 계산과 메모리 access 속도를 높이는 경량화 기법

•보통 32비트 부동소수점 연산을 8비트 정수로 변환하는 방식 사용

: Pytorch, Tensorflow의 default data type = fp32

✔️ 양자화와 분위수

✓ 주요목표 : 모델을 손상시키지 않으면서 모델의 성능높임

양자화 : 모델의 가중치와 활성화를 더 낮은 비트 정밀도로 변환해서 모델의 크기를 줄이고 실시간을

단축하고 에너지 효율성을 높이는 개념

연속적인 실수값을 미리 정의된 이산적인 심볼로 맵핑하는과정 

큰 실수값의 집합을 더 작은 실수값의 집합으로 변환 

분위수 : 실제 숫자의 분포를 기반으로 중요한 값을 보존 

각 분위의 속하는 값들을 같은 값으로 맵핑 ( 중앙값과 최빈값을 잘 보존) 

✔️  신경망에 적용

✔️  QLoRA (Quantized Low Rank Adapters)

 

• Q + LoRA

: 4-bit Quantized language model into LoRA

=> 기존 사전학습 모델의 weight 는 양자화로 저장하고, LoRA에 의해 더해지는 weight는 그대로 16-bit finetuning을 유지

 

•사전학습 모델을 4-bit로 quantize하는 high-precision 방법

=> QLoRA를 사용하면 16-bit fine-tuning 성능을 유지하면서 단일 48GB GPU에서 650억 매개 변수 모델을 fine tuning 가능

 

•두 벤치마크 모두에서 16, 8, 4비트의 어댑터가 16비트 full-finetuning 베이스라인 성능을 거의 재현

LoRA 보통 8비트

✔️ How to use QLoRA?

• Huggingface에서 제공하는 transforemers 라이브러리로 로드가능

peft 라이브러리와 연계를 통해 QLoRA 적용 가능 

Making LLMs even more accessible with bitsandbytes, 4-bit quantization and QLoRA

from transformers import BitsAndBytesConfig

double_quant_config = BitsAndBytesConfig(
   load_in_4bit=True,
   bnb_4bit_use_double_quant=True,
)

model_double_quant = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=double_quant_config)

 

✔️ IA3 (Infused Adapter by Inhibiting and Amplifying Inner Activations)

• Self-Attention, Cross-Attention에서의 Key, Value 값을 rescale해주는 벡터와 position-wise feed-forward network의 값에 rescale을 해주는 벡터를 추가해서 모델을 튜닝하는 기법

<=> LoRA의 경우에는 hidden state에 새로운 값을 더해주는 기법

•기존에 공개된 LoRA보다 적은 파라미터를 사용하면서 높은 성능

• LoRA 보다 파라미터 업데이트 수도 적으며,

• GPT-3를 in-context learning 했을 때 보다도 성능이 좋음

 

✔️ LLaMA Adapter

• LLaMA 모델을 instruction 모델로 효율적으로 미세 조정하기 위한 방법

•학습 가능한 프롬프트 토큰을 상위 Transformer 레이어의 입력 텍스트 토큰 앞에 추가해 학습

• 1.2M의 적은 피라미터 수로 각 어댑터를 유연하게 삽입하여 다양한 지식을 부여

• Multi-modal conditioning

✔️ LLaMA Adapter

• Visual encoder(e.g. CLIP)를 통해 각 scale의 feature를 추출하고 학습 가능 projection 적용