딥러닝 모델의 성능은 좋지만, 모델 크기와 연산량이 큰 것이 단점입니다.
이를 해결하기 위해 양자화(Quantization) 기법이 널리 사용되며, 정확도 손실 없이 모델을 작고 빠르게 만들 수 있습니다.
딥러닝 모델 양자화(Quantization)란? : 경량화
목차2. Post-Training Quantization(PTQ)
1. 양자화 개념
양자화(Quantization)는 딥러닝 모델에서 사용하는 실수(float32) 기반 가중치 및 연산을 정수(int8 등)로 근사하는 기법입니다.
즉, 정밀도가 높은 값을 정밀도가 낮은 숫자로 표현하여 모델 크기를 줄이고 연산 속도를 높이기 위한 방법입니다.
- 일반적으로 float32 → int8 또는 uint8로 변환
- 메모리 사용량 약 4배 감소
- 정수 기반 연산으로 성능 최적화 가능
양자화는 다음과 같은 상황에서 특히 유용합니다:
- 모바일, 엣지 디바이스에 배포 시 리소스 제약 해결
- 실시간 추론이 필요한 경우 지연 시간 감소
- 모델 압축을 통해 저장 공간과 전송 속도 향상
양자화는 크게 두 가지로 나뉩니다:
구분 | 설명 |
Post-Training Quantization (PTQ) | 학습 완료 후 정수화 수행 |
Quantization-Aware Training (QAT) | 학습 중에 양자화 고려 |
이 외에도 Static Quantization과 Dynamic Quantization, Weight-only Quantization 등 다양한 세부 기법이 존재합니다.
2. Post-Training Quantization(PTQ)
PTQ는 이미 학습된 float 모델을 변환하는 가장 간단한 방법입니다.
TensorFlow Lite, PyTorch 모두 지원하며, 일부 샘플 데이터로 calibration 과정을 진행합니다.
import torch
from torchvision.models import resnet18
model_fp32 = resnet18(pretrained=True)
model_fp32.eval()
# 특정 레이어만 양자화
model_int8 = torch.quantization.quantize_dynamic(
model_fp32, {torch.nn.Linear}, dtype=torch.qint8
)
장점: 구현이 쉽고 빠름
단점: QAT보다 정확도 손실 가능성 높음
3. Quantization-Aware Training(QAT)
QAT는 학습 중부터 양자화를 고려하여 weight와 activation을 정수로 근사합니다.
model.train()
#qconfig는 모델에 어떤 방식의 양자화를 적용할 것인지를 지정하는 설정값입니다.
model.qconfig = torch.quantization.get_default_qat_qconfig('fbgemm')
#이 단계에서 PyTorch는 모델에 FakeQuantize 모듈을 삽입합니다.
#학습 중 실제 정수 연산을 하진 않지만, 정수화된 것처럼 시뮬레이션을 합니다.
model_prepared = torch.quantization.prepare_qat(model)
# 이후 float 상태로 학습 진행
# 최종적으로 정수 양자화 적용
#학습이 끝난 후, FakeQuant 모듈들을 제거하고 실제 int8 연산 모듈로 변환합니다.
#이때부터 모델은 완전히 정수 연산 기반으로 동작합니다.
model_quantized = torch.quantization.convert(model_prepared)
장점: 정확도 유지에 강함
단점: 학습 시간 증가, 복잡성 증가
4. PQT vs QAT 비교
항목 | PTQ | QAT |
적용 시점 | 학습 후 | 학습 중 |
정확도 | 낮을 수 있음 | float 수준 유지 가능 |
속도 | 빠름 (분 단위) | 느림 (학습 필요) |
복잡도 | 낮음 | 높음 |
추천 상황 | 간단한 모델, 빠른 테스트 | 고정밀 모델, 실전 배포 |
PTQ는 빠르고 간단하지만 정확도 손실 가능성이 있고, QAT는 복잡하지만 성능 손실을 최소화할 수 있는 고급 전략입니다.
두 방법 모두 PyTorch, TensorFlow, ONNX 등에서 공식 지원되며, 실제 프로젝트에서는 보통 PTQ → QAT 순으로 테스트하면서 결정합니다.
관련 글 링크
[Deep Learning] 양자화 Quantization - 1. 정의, 사용 경우 및 종류
양자화(Quantization) 양자화를 사용하는 경우 양자화 사용 시 발생할 수 있는 문제점 양자화의 종류 딥다이브 시작 직전까지, 졸업필수 과목인 안드로이드 앱 개발 강의를 수강하고 있었다. 딥러닝
velog.io
'2.인공지능 > 개념&이론' 카테고리의 다른 글
7. 객체 탐지 모델 성능 지표:IoU,Precision,Recall,AP,mAP,FPS (0) | 2025.04.23 |
---|---|
6. 회기 모델 성능 지표: MAE, MSE, RMSE, MAPE, MPE, R² (0) | 2025.04.23 |
5. 분류 모델 성능 지표: Confusion Matrix (0) | 2025.04.23 |
3. 이미지 분석 기술: Classification, Object Detection, Segmentation (0) | 2025.04.22 |
2. 전이 학습(Transfer Learning):Fine-tuning (0) | 2025.04.16 |