양자화(Quantization)

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로 직접 양자화를 반영해 학습해야 함
  • 각각 장단점이 있으니 목적에 맞게 선택하는 것이 중요!