2.인공지능/개념&이론

5. 딥러닝 모델 양자화(Quantization)란? : 경량화

쿼드큐브 2025. 5. 19. 08:40
728x90

딥러닝 모델의 성능은 좋지만, 모델 크기와 연산량이 큰 것이 단점입니다.
이를 해결하기 위해 양자화(Quantization) 기법이 널리 사용되며, 정확도 손실 없이 모델을 작고 빠르게 만들 수 있습니다.

 

딥러닝 모델 양자화(Quantization)란? : 경량화

 

목차

1. 양자화 개념

2. Post-Training Quantization(PTQ)

3. Quantization-Aware Training(QAT)

4. PTQ vs QAT 비교

관련 글 링크

 

 

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 순으로 테스트하면서 결정합니다.

 


 

 

 

관련 글 링크

https://velog.io/@sohtks/Deep-Learning-%EC%96%91%EC%9E%90%ED%99%94-Quantization-1.-%EC%A0%95%EC%9D%98-%EC%82%AC%EC%9A%A9-%EA%B2%BD%EC%9A%B0-%EB%B0%8F-%EC%A2%85%EB%A5%98

 

[Deep Learning] 양자화 Quantization - 1. 정의, 사용 경우 및 종류

양자화(Quantization) 양자화를 사용하는 경우 양자화 사용 시 발생할 수 있는 문제점 양자화의 종류 딥다이브 시작 직전까지, 졸업필수 과목인 안드로이드 앱 개발 강의를 수강하고 있었다. 딥러닝

velog.io

 

728x90