Summary
Quantization(양자화)은 모델의 가중치와 활성화 값을 더 낮은 정밀도(예: FP32 → INT8, INT4)로 변환하여 모델 크기를 줄이고 추론 속도를 높이는 기법이다.
Why It Matters
GPT-3 175B 모델은 FP16으로 약 350GB의 메모리가 필요하다. 이를 INT4로 양자화하면 약 87GB로 줄어든다. Quantization은 대형 모델을 실용적인 하드웨어에서 실행 가능하게 만드는 핵심 기술이다.
Core Diagram
원본 모델 (FP16) 양자화된 모델 (INT4)
┌─────────────┐ ┌─────────────┐
│ 가중치: 16bit│ → │ 가중치: 4bit │
│ 350GB │ │ 87GB │
│ 느린 추론 │ │ 빠른 추론 │
└─────────────┘ └─────────────┘
정확도: 100% 정확도: ~97%
Concept Explanation
수치 표현 정밀도
| 타입 | 비트 수 | 범위 | 용도 |
|---|---|---|---|
| FP32 | 32bit | ±3.4×10³⁸ | 학습 (원본) |
| FP16 | 16bit | ±65,504 | 학습/추론 |
| BF16 | 16bit | ±3.4×10³⁸ | 학습 (넓은 범위) |
| INT8 | 8bit | -128~127 | 추론 최적화 |
| INT4 | 4bit | -8~7 | 경량 추론 |
양자화 방식
PTQ (Post-Training Quantization)
- 학습 완료된 모델에 적용
- 추가 학습 불필요
- 구현이 간단하지만 품질 저하 가능
- 대표: GPTQ, AWQ, GGUF
QAT (Quantization-Aware Training)
- 학습 과정에서 양자화를 시뮬레이션
- 더 높은 품질 유지
- 추가 학습 비용 발생
- 대표: LLM-QAT, BitNet
대표적인 양자화 기법
| 기법 | 설명 | 장점 |
|---|---|---|
| GPTQ | GPU 최적화 PTQ | 빠른 GPU 추론 |
| AWQ | 활성화 인식 양자화 | 높은 품질 유지 |
| GGUF | CPU 최적화 포맷 | llama.cpp 호환 |
| SqueezeLLM | 비균일 양자화 | 극한 압축 |
품질 vs 크기 트레이드오프
FP16 (100%) ────── INT8 (99%) ────── INT4 (95~97%) ────── INT2 (80~90%)
350GB 175GB 87GB 43GB
System Perspective
프로덕션 LLM 추론 파이프라인에서 Quantization의 위치:
- 모델 준비: 원본 모델 → 양자화 변환 (GPTQ/AWQ/GGUF)
- 서빙: 양자화된 모델을 vLLM, TGI, llama.cpp 등으로 로드
- 추론: 낮은 정밀도로 행렬 연산 수행 (GPU INT8/INT4 커널)
- 출력: 결과를 FP32로 복원하여 토큰 생성
KV Cache도 양자화 가능하다 — KV Cache Quantization으로 메모리를 추가 절약할 수 있다.
Practical Insight
- INT8 양자화는 거의 품질 손실 없이 2x 압축과 속도 향상을 얻을 수 있다
- INT4는 품질 저하가 있지만, 대부분의 일반 대화/요약 작업에는 충분하다
- 수학/코딩 등 정밀도가 중요한 작업에서는 양자화 손실이 크게 체감된다
- GGUF 포맷은 CPU 추론에 최적화되어 있어, GPU 없는 환경에서 유용하다
- 양자화 후에는 반드시 벤치마크로 품질을 검증해야 한다
Common Misunderstandings
- 양자화가 모델을 "학습"시키는 것이 아니다 — 기존 가중치의 표현 방식만 변경한다
- INT4가 항상 INT8보다 빠른 것은 아니다 — 하드웨어 지원에 따라 다르다
- 양자화된 모델을 다시 파인튜닝하면 품질이 회복되는 것은 아니다 — QLoRA는 별도 기법이다
- 모든 레이어를 동일한 비트로 양자화할 필요는 없다 — 혼합 정밀도(Mixed Precision)가 가능하다
Connected Topics
- 이전: Transformer, KV Cache
- 다음: Batching
- 관련: Inference 최적화 전반