모델 양자화
IT 위키
모델 양자화(模型量子化, Model Quantization)는 딥러닝 모델의 수치 표현 정밀도를 낮춰 메모리 사용량과 연산량을 줄이는 최적화 기법이다. 주로 대형 언어 모델(LLM)이나 모바일·엣지 디바이스에서 효율적인 추론을 위해 사용된다.
개요
딥러닝 모델은 일반적으로 32비트 부동소수점(float32)으로 학습되지만, 추론 시에는 16비트(float16), 8비트(int8), 4비트(int4) 등 더 낮은 정밀도의 형식으로 변환할 수 있다. 이러한 변환을 통해 모델의 크기를 줄이고 연산 속도를 향상시킬 수 있다.
종류
- 정적 양자화(Static Quantization): 학습 이후 전체 모델을 정적으로 양자화하는 방식
- 동적 양자화(Dynamic Quantization): 실행 시점에 가중치나 활성값을 동적으로 양자화
- 양자화 인식 학습(QAT, Quantization-Aware Training): 학습 단계에서 양자화를 고려하여 정확도 손실을 최소화
- 후처리 양자화(Post-training Quantization): 별도의 학습 없이 훈련된 모델에 양자화 적용
접미어
표기 | 의미 | 비트 수(정밀도) | 특징 | 용량 크기 | 추론 속도 | 정확도 |
---|---|---|---|---|---|---|
Q2 | 2-bit 양자화 | 2bit | 극단적 경량화, 테스트 용도 적합 | 매우 작음 | 매우 빠름 | 낮음 |
Q3 | 3-bit 양자화 | 3bit | 일부 GGML 호환, 실용성 제한적 | 작음 | 빠름 | 낮음~보통 |
Q4 | 4-bit 양자화 | 4bit | 일반적 최적 균형, 많이 사용됨 | 중간 | 빠름 | 중간~높음 |
Q4_K | 4-bit K-quant | 4bit | K-quant 최적화 구조, llama.cpp 전용 | 중간 | 빠름 | Q4보다 높음 |
Q5_K | 5-bit K-quant | 5bit | K-quant + 정밀도 향상 | 큼 | 중간 | 높음 |
IQ2, IQ3 | Integer 양자화 | 2~3bit | GPTQ 계열, 하드웨어 최적화 | 작음 | 빠름 | Q2~Q3 수준 |
Q4_0_4_4, Q4_0_8_8 | 그룹별 scale 양자화 | 4bit | 세분화된 스케일 설정 → 정확도 향상 | 큼 | 중간 | 높음 |
_XS / _S / _M / _L / _XL | 설정 스케일 또는 텐서 전처리 방식 | - | 각 벤더 정의에 따라 달라짐 | XS일수록 작음 | XS일수록 빠름 | XL일수록 정확 |
장단점
장점
- 모델 크기 감소: 저장 공간 절감 및 모델 전송 속도 향상
- 추론 속도 향상: CPU 및 GPU에서 더 빠른 연산 가능
- 메모리 사용량 감소: 모바일 및 엣지 디바이스에 적합
단점
- 정확도 손실: 정밀도 감소로 인해 예측 정확도가 하락할 수 있음
- 하드웨어 제약: 일부 정밀도(예: int4)는 특정 하드웨어에서만 지원됨
- 추가 튜닝 필요: 양자화 적용 후 정확도 회복을 위한 조정이 요구될 수 있음
활용 사례
- 대형 언어 모델(LLM)의 로컬 추론(예: GGML, llama.cpp 등)
- 온디바이스 AI 앱에서의 실시간 예측
- 경량화된 AI 모델 배포를 위한 사전 처리 과정
도구 및 프레임워크
- PyTorch: torch.quantization, bitsandbytes 등
- TensorFlow Lite: 정적/동적 양자화 지원
- ONNX Runtime: 양자화된 ONNX 모델 추론
- Hugging Face Transformers: 8bit, 4bit 모델 제공
같이 보기
참고 문헌
- Jacob, B. et al. (2018). Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference. CVPR.
- Zhang, S. et al. (2020). Accelerating Deep Learning Inference via Quantization. arXiv preprint.
- Hugging Face. (2023). 8-bit and 4-bit quantization in Transformers.