1. 양자화란?
양자화는 딥러닝 모델의 숫자 표현을 float에서 정수(int)로 바꾸는 과정.
기본적으로 딥러닝 모델은 float32(32비트 부동소수점) 숫자를 사용합니다.
하지만 이런 계산은 연산 속도 느리고, 메모리 많이 차지하고, 전력 소모가 큽니다.
그래서 float → int8 또는 int4 같은 저정밀도 정수로 바꿔모델을 더 작고, 빠르게, 저전력으로 만듭니다.
2. 양자화의 3가지 주요 방식
양자화는 사용 목적과 상황에 따라 다음 세 가지 방식으로 나뉩니다:
1. 이미 양자화된 모델을 불러와서 사용
2. Post Training Quantization (PTQ)
3. Quantization Aware Training (QAT)
1. 이미 Quantized된 모델 사용 (가장 많이 사용)
이미 양자화가 적용된 모델을 그냥 불러와서 사용하는 방식.
- Hugging Face, llama.cpp, GGML 등에서 제공하는 모델들 (예: GPTQ, AWQ, GGUF 모델)
- 학습은 다 끝났고, 양자화도 이미 적용된 상태
- 우리는 다운로드만 해서 바로 사용하면 됩니다.
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("TheBloke/Llama-2-7B-GPTQ")
✅ 장점
- 사용 매우 간편
- 튜닝된 모델이라 성능도 보장됨
- 학습 불필요
⚠️ 단점
- 내가 양자화 방식이나 세부 설정을 선택할 수 없음
- 파인튜닝 어렵거나 불가능
2. PTQ (Post Training Quantization)
학습이 끝난 모델을 나중에 양자화하는 방식.
- 이미 훈련된 float32 모델을 int8로 바꾸는 방식
- 추가 학습 없이 양자화 수행 가능
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("TheBloke/Llama-2-7B-GPTQ")
✅ 장점
- 구현 간단, 빠르게 적용
- 학습 필요 없음
⚠️ 단점
- 정확도 손실이 생길 수 있음 (특히 복잡한 모델에서)
- 미세한 튜닝 어려움
3. QAT (Quantization Aware Training)
학습할 때부터 양자화를 반영해서 정확도를 최대한 유지
- 학습 중 int8 정밀도로 연산하는 것을 시뮬레이션해서 모델이 양자화 환경에 적응하도록 학습합니다.
- PTQ보다 정확도 훨씬 더 좋음.
model.qconfig = torch.quantization.get_default_qat_qconfig('fbgemm')
torch.quantization.prepare_qat(model, inplace=True)
train(model) # 학습 진행
quantized_model = torch.quantization.convert(model.eval(), inplace=False)
✅ 장점
- 정확도 손실 거의 없음
- 실서비스나 모바일 배포용으로 적합
⚠️ 단점
- 학습이 느려지고 복잡해짐
- 추가 리소스 필요
📊 정리 비교표
| 이미 양자화된 모델 사용 | PTQ | QAT | |
| 학습 필요 | ❌ 없음 | ❌ 없음 | ✅ 필요 |
| 정확도 | 보통 ~ 좋음 | 낮음 ~ 중간 | 높음 |
| 속도 | ✅ 매우 빠름 | ✅ 빠름 | ❌ 느림 |
| 사용 난이도 | 🔰 매우 쉬움 | 쉬움 | 어려움 |
| 실전 활용 | 사전 튜닝 모델 사용 | 프로토타입 | 정확도 최적화 배포 |
🤔 1번과 3번의 차이점은?
| 이미 양자화된 모델 사용 | QAT | |
| 내가 양자화? | ❌ (남이 해준 것 사용) | ✅ (내가 학습하면서 양자화 적용) |
| 양자화 시점 | 학습 후 이미 완료 | 학습 중 실시간 적용 |
| 컨트롤 가능성 | 거의 없음 | 매우 큼 |
| 활용 목적 | 빠르게 써보기 / 테스트 | 실제 서비스용 고정밀 양자화 모델 훈련 |
마무리 요약
- 양자화는 속도, 메모리, 전력 모두 줄여주는 핵심 최적화 기술
- 가장 많이 쓰는 건 이미 양자화된 모델을 불러와 사용하는 방식
- 정밀도가 중요하면 QAT로 직접 양자화를 반영해 학습해야 함
- 각각 장단점이 있으니 목적에 맞게 선택하는 것이 중요!
'Machine Learning' 카테고리의 다른 글
| Low-rank Approximation vs. Quantization 비교 (3) | 2025.07.28 |
|---|---|
| LLM 파인튜닝 방법론 (3) | 2025.07.26 |
| RAG (Retrieval Augmented Generation) 심층 분석 (2) | 2025.07.26 |
| 프롬프트 엔지니어링 완벽 가이드 (0) | 2025.07.26 |
| Re-ranker, Bi-encoder vs Cross-encoder: RAG 시스템을 더 똑똑하게! (0) | 2025.07.22 |