1. 메모리 사용량 계산 (모델의 파라미터가 fp32일 때)
파라미터 당 bytes : 32 bits / 8 bits = 4 bytes
2. 모델 학습 시 메모리 사용량 고려
Forwarding을 위해 필요한 모델 파라미터를 N이라고 가정했을 때,
모델 메모리는 4 * N
Optimizer 메모리 - 4 * 4 * N
Gradient 메모리 - 4 * N
예시 모델 : LLaMA-7B
모델 메모리는 4 * 7B = 28GB
Optimzer(AdamW) 4 * 4* 7B = 112GB
Gradient 4 * 7B = 28GB
총 메모리 사용량 = 28 + 112 + 28 = 168GB
LLaMA-7B 모델 훈련을 위해서는 168GB 이상의 vRAM이 소요
한정된 자원에서 모델을 훈련시키는데에 메모리가 너무 많이 소요된다.
3. 그래서 Model optimization techniques
- Quantization(GPTQ) : 모델 파라미터의 Precision을 줄이자.
- precision : 하나의 숫자를 표현하기 사용되는 bits 수
- Quantization : 원본 파라미터의 precision을 감소시키는 경량화 방법론
- Sparsity(Pruning) : 모델 파라미터 중 중요한 파라미터만 사용하자.
- 모델의 파라미터 중 성능에 중요한 일부 파라미터만 사용
- Distillation(Distillation Step-by-Step) : 더 작은 모델이 비슷하게 행동하도록 학습시키자.
- 큰 모델과 유사한 출력을 생성하는 작은 모델을 생성하여 추론하는 방법론
4. Model Training Optimization Techniques
모델이 학습된 결과를 근사하는 모듈을 트랜스포머 구조 내부에 추가
- Adapter : 각 sub-layer 직후
- 원본 모델은 학습하지 않고, Adapter 모듈 내 파라미터만 학습하는 방법론
- Prefix-Tuning : Self Attention의 Key와 value
- 원본 모델은 학습하지 않고, 추가된 Prefix 파라미터만 학습하는 방법론
- LoRA : Self Attention의 Query와 Key
- 원본 모델은 학습하지 않고, 추가된 LoRA Layer 내 파라미터만 학습하는 방법론
즉, 학습 대상이 되는 Optimizer와 Gradient에 해당되는 파라미터를 효과적을 줄이는 방법
5. 파인튜닝을 한 것에 대한 측정
- Open-LLM Learderboard
- H7 Dataset(7개 평가 데이터셋)을 이용한 LLM ㄹ평가 리더보드
- 평가방식(lm-evaluation-harness)
- ARC(AI2 Reasoning Challenge) : 초등학교 수준의 과학 지식에 대한 다양한 질문 및 지식 유형을 통한 평가
- Hellawag : 일상 생활에서 발생하는 다양한 문장 연결 관계 파악 태스크
- TruthfulQA : 사실 기반 문장 이해 능력 평가, 38개 도메인으로 구성, 사실관계가 매우 중요한 질문
- WinoGrande : 초등학생 수준의 일반 상식 보유 능력 평가
- GSM8k : 초등학생 수준의 수학문제
- DROP(Discrete Reasoning Over the content of Paragraphs) : 모델의 문맥 내 수치 이해 및 추론 능력 평가
- MMLU(Massive Multitask Language Understanding) : 다중 태스크 57개의 태스크로 구성