[3-2] A Survey of Large Language Models - Adaptation of LLMs
업데이트:
[1] Instruction Tuning
1.1 Formatted Instance Construction
- Formatting NLP Task Datasets: 기존의 NLP task dataset에 자연어 task description을 추가
- Formatting Daily Chat Data: 실제 사용자가 제출한 query를 task description으로 사용하고, 사람이 직접 이에 대한 답변을 작성
- Formatting Synthetic Data: 기존 instance를 LLM에 입력하여 다양한 task description과 instance를 자동으로 생성
Key Factors for Instance Construction.
- Scaling the instructions.
- task 수를 늘리면 일반화 능력이 향상되지만, 일정 수준 이상이 되면 추가 이득이 미미함
- Formatting design
- task description이 가장 중요한 요소이며, 적절한 수의 demonstration을 사용하는 것도 도움됨
- diversity와 quality가 quantity보다 더 중요함
1.2 Instruction Tuning Strategies
- 서로 다른 task의 비율 균형을 맞추는 것이 중요함
- Pre-training data를 활용하여 regularization 효과를 얻을 수 있음
- Task-formatted instruction과 daily chat instruction 데이터의 균형을 맞추기 위해 multi-stage tuning 전략을 사용할 수 있음
- Multi-turn chat data의 경우 전체 대화를 한 번에 입력하고 chatbot response에 대해서만 loss를 계산하는 것이 효율적
- LLM의 정체성 정보를 포함하는 instruction을 만들어 fine-tuning하는 것이 실제 애플리케이션 배포에 도움될 수 있음
1.3 The Effect of Instruction Tuning
- 적절한 양의 instance로 tuning해도 성능이 크게 향상됨
- 특정 task에 대한 demonstration 없이도 자연어 지시를 이해하고 수행하는 능력을 갖게 됨
- 의료, 법률 등 특정 도메인에 특화된 전문가 모델을 만드는데 효과적임
1.4 Empirical Analysis for Instruction Tuning
Instruction Datasets
- Task-specific instructions:
- FLAN-T5 데이터셋 사용
- 1,836개의 task와 1,500만개 이상의 instruction으로 구성
- 비교를 위해 80,000개의 instruction을 무작위로 샘플링
- Daily chat instructions:
- ShareGPT instruction set 사용
- 63,000개의 실제 사용자 instruction으로 구성
- Vicuna의 핵심 instruction으로 사용됨
- Synthetic instructions:
- Self-Instruct-52K 데이터셋 사용
- 52,000개의 instruction과 82,000개의 instance input-output 쌍으로 구성
- 생성된 instruction이 사람이 작성한 seed task와 유사한 분포를 가짐
Improvement Strategies
- Instruction complexity 향상
- topic diversity를 키움
- instruction 수를 늘림
- instruction difficulty를 조절 (난이도 균형을 맞추기)
Results & Analysis
- Task-specific instruction은 QA에는 적합하지만 chat에는 부적합할 수 있음
- 서로 다른 종류의 instruction을 혼합하면 LLM의 종합적 능력 향상에 도움됨
- Instruction의 complexity와 diversity를 높이면 성능 향상으로 이어짐
- 단순히 instruction 수를 늘리는 것은 큰 도움이 되지 않으며, 난이도 균형을 맞추는 것도 항상 좋은 것은 아님
- 더 큰 모델일수록 더 나은 instruction following 성능을 보임
[2] Alignment Tuning
Alignment Criteria
- Helpfulness: 사용자의 작업을 효율적으로 해결하고, 필요한 경우 적절한 수준의 민감성과 신중함을 보여야 함
- Honesty: 정확한 내용을 제시하고, 불확실성에 대해 적절하게 전달해야 함
- Harmlessness: 공격적이거나 차별적인 언어를 생성하지 않아야 하며, 위험한 행동을 거절할 수 있어야 함
2.1 Collecting Human Feedback
Human Labeler Selection
- Labeler는 높은 수준의 교육을 받고 영어에 능숙해야 함
- Researcher의 의도와 human labeler 간의 불일치를 해결하기 위해 screening process를 거쳐 높은 agreement를 보이는 labeler 선택
- “Super rater”를 사용하여 human feedback의 높은 품질 보장
Human Feedback Collection
- Ranking-based approach.: 후보 출력을 비교하여 선호도 순위를 도출
- Question-based approach: Researcher가 설계한 특정 질문에 대한 답변을 통해 상세한 피드백 제공
- Rule-based approach: 일련의 규칙을 사용하여 alignment 기준을 충족하는지 테스트하고 평가 수집
2.2 Reinforcement Learning from Human Feedback (RLHF)
- Human feedback을 통한 강화학습(RLHF)은 수집된 human feedback 데이터로 LLM을 fine-tuning하여 alignment 기준(helpfulness, honesty, harmlessness 등)을 개선하는 데 사용됨
- RLHF 시스템은 정렬될 pretrained LM, human feedback에서 학습하는 reward model, LM을 학습시키는 RL 알고리즘으로 구성됨
- RLHF의 주요 단계
- Supervised fine-tuning
- LM이 원하는 동작을 수행하도록 paired prompt-output 데이터셋으로 초기 fine-tuning
- prompt-output: 다양한 task들로 human labeler rk wlrwjq wpwkr
- Reward model training
- LM이 생성한 출력 텍스트에 대해 human labeler가 선호도를 annotation하고, 이를 바탕으로 reward model 학습
- InstructGPT에서는 6B GPT-3 모델로 RM을 학습
- reinforcement learning from AI feedback (RLAIF)
- 최근에는 human labeler 대신 AI agent가 preference annotation을 직접 함
- RL fine-tuning
- RL 알고리즘을 통해 Pretrained LM을 alignment
- reward model의 신호를 사용하여 PPO (Proximal Policy Optimization) 알고리즘으로 최적화
- Supervised fine-tuning
- RLHF의 실용적인 전략
- Effective reward model training
- (1) InstructGPT는 6B GPT model, 즉 작은 모델을 사용했다면, 최근에는 reward model 학습 시 큰 모델을 사용 → LLM의 output을 더 잘 판단
- (2) reward 모델을 pretraining된 checkpoint로 초기화
- LLaMA2-chat
- reword model로 pretrained chat model checkpoints를 사용 → aligned 된 모델과 reward 모델 간의 정보격차를 극복
- LLaMA2-chat
- (3) regularization 적용
- large-scale reward model 을 binary classification task (응답이 좋은지 나쁜지만을 평가)로만 학습하면 overfitting이 될 수 있음 → humman-annotated alignment dataset의 input prompt에 대한 적절한 답변을 생성하도록 모델을 학습한 후 LM loss로 업데이트하면, regularization의 효과를 볼 수 있음 (overfitting 방지)
- (4) 다중 reward model 학습: alignment criteria 가 여러개이므로 각 기준 별 reward 모델을 학습
- Effective RL training
- RL 학습에서 supervised fine-tuning으로 사전 학습, rejection sampling 활용, 여러 번 반복 수행 등
- Effective reward model training
- Process-supervised RLHF
- reward 점수를 어떻게 잘줄지?
- Outcome-supervision signals
- LLM이 생성한 전체 텍스트의 품질을 정량적 점수로 평가
- Process-supervision signals
- process-supervised reward models (PRM)
- 생성된 콘텐츠 내의 각 개별 구성 요소(문장, 단어, 추론 단계 등)에 대한 평가를 제공하여 미세한 수준의 supervision signal을 통해 학습을 가이드하고 원치 않는 생성 내용을 개선
- OpenAI의 PRM800k 데이터셋
- 12K개의 process-annotated 수학 문제(MATH 데이터셋)와 이에 대한 LLM이 생성한 75K개의 솔루션으로 구성
- 각 수학 문제의 추론 단계가 positive, negative, neutral로 레이블링됨
- Process-supervised reward model (PRM) 학습에 활용되며, 각 레이블의 예측 확률이 RLHF 과정에서 supervision signal로 사용됨
- Expert Iteration을 통한 Process-Supervision Signals 활용
- Policy Improvement Stage: Expert policy가 체계적인 검색 절차를 통해 샘플을 생성하고, PRM이 제공하는 process-supervision signal이 expert policy를 가이드하여 샘플의 품질을 향상시킴
- Distillation Stage: Policy improvement stage에서 expert policy가 생성한 샘플을 사용하여 supervised fine-tuning을 통해 base policy를 개선
2.3 Alignment without RLHF
RLHF의 단점
- 여러 LM 을 학습시켜야함 → 리소스 많이 듦
- RLHF의 PPO 알고리즘은 복잡하고 hyperparameter에 민감함
- → 최근에는 RL 없이 supervised fine-tuning (SFT) 만으로 align을 맞추는 연구들이 많음
Alignment Data Collection
- Reward model based approaches: 기존 reward models을 활용하여 high-quality responses를 선택하고 supervised fine-tuning에 사용
- LLM based generative approaches: 강력한 LLMs을 활용하여 human-aligned data를 자동으로 생성
- LLM based interactive approaches: LLM agents로 구성된 simulated interaction environment를 구축하여 외부 feedback signals을 통해 스스로 개선
Supervised Alignment Tuning
- Primary training objective: Alignment data를 기반으로 전통적인 cross-entropy loss를 사용하여 sequence-to-sequence learning 수행
- Auxiliary optimization objectives: Primary cross-entropy loss 외에도 ranking loss나 contrastive learning을 사용하여 alignment data로부터의 학습을 강화
2.4 Remarks on SFT and RLHF
Overall Comparison with RL Formulation
- RLHF와 SFT는 LLMs을 위한 두 가지 주요 adaptation tuning 방법임
- RLHF는 reward model을 먼저 학습한 다음, RL training을 통해 LLM을 개선함
- SFT는 teacher-forcing 접근 방식을 채택하여 demonstration output의 likelihood를 직접 최적화함
Pros and Cons of SFT
- SFT는 다양한 benchmarks에서 LLMs의 성능을 향상시키는 효과적인 방법으로 입증됨
- SFT는 주로 abilities를 unlock하지만 새로운 abilities를 주입하지는 않음
- Demonstration data가 LLMs의 지식이나 능력 범위를 벗어나면 hallucination 행동을 조장할 수 있음
- 고품질의 instruction data가 SFT 단계에서 LLMs의 효과적인 학습을 위한 주요 요인임
Pros and Cons of RLHF
- RLHF는 유해한 responses를 완화하고 model capacity를 향상시키는 데 효과적임
- RLHF는 annotators 간의 불일치를 크게 완화할 수 있음
- RLHF는 본질적으로 LLMs이 스스로 생성한 responses를 대조하여 올바른 policies를 학습하도록 장려함
- RLHF는 고전적인 RL 알고리즘의 단점을 상속받음 (예: sample inefficiency, training instability)
- RLHF는 복잡한 반복 최적화 프로세스에 human annotators가 관여하며, 많은 중요한 세부 사항들이 전체 모델 성능에 중요한 영향을 미침
2.5 RLHF 대체 방법론
참고
https://tech.scatterlab.co.kr/luda-rlhf/
https://tech.scatterlab.co.kr/alt-rlhf/
- 학습시 RLHF보다 더 적은 수의 모델을 이용하여 사용량이 적으면서도 학습 속도가 빠르게 최적화한다.
- 간단한 학습 방식과 더 적은 하이퍼파라미터 튜닝으로 안정적으로 학습이 진행된다.
- 기존 RLHF 통해 fine-tuning한 모델보다 더 좋은 성능을 낸다.
Rejection Sampling (Best of N)
- prompt가 주어지면 LLM이 N개의 output을 샘플링 → 리워드 모델이 점수 계산
- 그 중 점수가 가장 높은 샘플로 SFT
RRHF (Rank Responses to Align Language Models with Human Feedback without tears)
- 여러 모델을 사용하여 답변을 구축해둠 (Policy 모델
- 학습해야할 타켓 모델
외에도 ChatGPT, GPT4, 사람 등 다양한 모델 사용 가능) → Reward 모델을 통해 랭킹을 맥임 - ranking loss를 최소화하는 방향으로 학습 → 랭킹이 높은 (리워드가 높은) 답변의 확률은 높아지고, 랭킹이 낮은 답변의 확률은 낮아지도록 학습
SLiC-HF: Sequence Likelihood Calibration with Human Feedback
- RRHF와 비슷. 다만, 단일 답변 후보를 인풋으로 받는 방식 (point-wise reward model)이 아니라 두 답변 후보를 입력으로 받아서 어느 답변이 더 좋은지를 계산 (pair-wise reward model)
- 우열을 메긴 답변 후보쌍들을 기반으로 Rank Calibration Loss를 구함 → loss가 최소화하는 방향으로 학습 → 랭킹이 높은 답변의 확률이 높아지게 학습
DPO (Direct Preference Optimization)
- 리워드 모델 학습용 데이터셋을 직접 사용하여 positive 답변에 대한 확률은 높아지도록, negative 답변에 대한 확률은 낮아지도록 학습
- 학습할 때 리워드 모델을 사용하지 않음. 레퍼런스 모델만을 사용
- RLHF 보다 안정적
[3] Parameter-Efficient Model Adaption
3.1 Parameter-Efficient Fine-Tuning Methods (PEFT)
-
[a] Adapter tuning
<img src="https://github.com/happy-jihye/happy-jihye.github.io/blob/master/_posts/images/2024/nlp/23-llm/5.png?raw=1" width = 550" >
- 작은 neural network module(adapter)을 Transformer에 통합하여 파라미터 수를 줄임
- 기존 LM의 파라미터는 freezing (Near-identity), adapter module만을 추가한 후 fine-tuning
- [b] Prefix tuning
- prompt만 잘 구성해줘도 LLM의 성능을 크게 개선할 수 있다. → prompt prefix만을 학습
- trainable continuous vector(prefix)를 각 Transformer layer에 추가하여 파라미터 효율적으로 최적화함
- prefix vector를 바로 학습하는 것보다 parameterization 기법을 사용하는게 더 효과적이었다고 함. (MLP 함수를 학습하여 작은 matrix를 prefix의 parameter matrix에 매핑하는 reparameterization trick)
- 학습 후에는 MLP는 사용하지 않고 오직 prefix-vector 만을 사용 → task-specific performance 향상
- P-tuning v2
- Transformer 에 layer-wise prompt vector를 추가하여 multi-task learning이 가능하도록 함
- [c] Prompt tuning
- trainable prompt vector를 input layer에 통합하여 downstream task에 적용함
- 개별 테스크마다 prompt의 파라미터를 업데이트하는 soft prompt의 학습방식 사용
- embedding 공간에서 프롬프트를 최적화하는 방식
- [d] LoRA
- FT 할때, trainable parameter 수를 줄이기 위해 각 dense layer의 update matrix를 low-rank constraint로 근사함
- Parameter matrix W를 최적화하는 경우를 고려할 때, 업데이트 과정은 W ← W + ∆W와 같이 일반적인 형태로 쓸 수 있음
- LoRA의 기본 아이디어는 원래 matrix W ∈ R^(m×n)를 고정하고, parameter update ∆W를 low-rank decomposition matrix로 근사하는 것
- 즉, ∆W = A · B^⊤, 여기서 A ∈ R^(m×k) 및 B ∈ R^(n×k)는 task adaptation을 위한 trainable parameter이고, k ≪ min(m, n)는 reduced rank임
- LoRA는 메모리와 저장 공간 사용량(예: VRAM)을 크게 절약할 수 있음
3.2 Parameter-Efficient Fine-Tuning on LLMs
- LLM의 등장으로 downstream task에 대한 효율적인 adaptation 방법에 대한 연구가 증가하고 있음
- 특히 LoRA가 LLaMA, BLOOM 등의 open-source LLM에 널리 적용되고 있음
- Alpaca-LoRA는 7B LLaMA를 사람의 instruction에 fine-tuning한 Alpaca의 경량화 버전임
- LLaMA-Adapter는 각 Transformer layer에 learnable prompt vector를 삽입하고, zero-initialized attention을 통해 training을 개선함
- GPT-J, BLOOM, LLaMA에 대해 여러 efficient tuning 방법을 비교한 실험 연구도 있었음
- PEFT 라이브러리는 여러 efficient tuning 방법을 구현하여 제공하고 있음
- 기존 연구는 주로 작은 pre-trained language model에 대해 수행되었으며, LLM에 대한 광범위한 연구는 아직 부족함
[4] Memory-Efficient Model Adaptation
- LLM은 inference 시 많은 메모리 footprint를 차지하여 실제 적용이 어려움
- 모델 quantization을 통해 LLM의 메모리 사용량을 줄이는 방법에 대해 논의함
4.1 Background for Quantization
- Quantization은 보통 neural network의 weight와 activation을 floating-point number에서 integer로 매핑하는 과정을 의미함
- INT8 quantization이 많이 사용되며, 간단한 quantization 함수를 예시로 들어 설명함
4.2 Quantization Methods for LLMs
- Quantization-aware training(QAT)과 post-training quantization(PTQ)의 두 가지 주요 quantization 방식이 있음
- LLM은 parameter 수가 많아 PTQ 방식이 선호되며, activation의 큰 outlier로 인해 quantization이 어려움
- post-training quantization(PTQ)
- Mixed-precision decomposition (LLM.int8())
- overflow를 방지하기 위한 방법
- LLM.int8()은 outlier가 있는 차원과 나머지 차원을 분리하여 mixed-precision decomposition을 수행함 (각각 fp16과 int8로 계산)
- Fine-grained quantization
- ZeroQuant는 activation에 token-wise quantization, weight에 group-wise quantization을 적용함
- 일반적으로 그룹 크기 128을 사용
- SmoothQuant
- weight와 activation 간의 quantization difficulty를 조절하기 위해 스케일링 변환을 함
- GPTQ와 AWQ
- layerwise quantization 방법을 개선하여 매우 큰 모델도 3~4 bit precision으로 quantization이 가능하게 함
- Mixed-precision decomposition (LLM.int8())
- QLoRA는 quantized model에 작은 tunable adapter를 추가하여 효율적이고 고성능의 quantization이 가능하게 함
- LLaMA에 data-free distillation을 적용한 QAT 방법도 연구되었음
4.3 Empirical Analysis and Findings
- Quantization은 LLM 배포 시 메모리 사용량과 지연 시간을 줄이는 데 많이 사용되고 있음
- 기존 연구에서 quantization이 LLM 성능에 미치는 영향에 대한 주요 발견을 요약함
- INT8 weight quantization은 성능 저하 없이 메모리 사용량을 크게 줄일 수 있음
- Activation은 weight보다 quantization이 어려움
- Efficient fine-tuning을 활용한 quantization 방법이 quantized LLM의 성능을 높이는 데 효과적임
- 직접 quantization 실험을 통해 quantized model의 inference 성능을 분석한 결과를 제시함
댓글남기기