learn

Model Quantization — 왜 성능이 떨어지고, 왜 그래도 쓰나

Model Quantization — 왜 성능이 떨어지고, 왜 그래도 쓰나

양자화란

학습된 모델의 weight는 float32(32bit) 또는 bfloat16(16bit) 실수. 양자화는 이를 더 적은 비트로 표현해 메모리를 줄이는 기법.

  • Q4: 4bit, 16개의 이산값으로 표현
  • Q8: 8bit, 256개의 이산값

왜 성능이 떨어지나

핵심은 양자화 오차(quantization error).

원래 weight 0.3714... → Q4 후 0.3750처럼 반올림됨. 이 오차가 레이어를 거치면서 누적된다. Transformer는 수십~수백 레이어이므로 오차가 쌓임.

특히 attention에서 미묘한 가중치 차이가 뭉개지면서:

  • 긴 문맥 추론 능력 저하
  • 뉘앙스, 세밀한 언어 판단 저하
  • 수학/코딩처럼 정밀 추론이 필요한 태스크에서 더 크게 체감

그럼 왜 양자화를 하나

VRAM 제약. 30B 모델 기준:

| 포맷 | 필요 VRAM | |------|---------| | bfloat16 | ~60GB | | Q8 | ~30GB | | Q4 | ~17GB |

Q4라면 소비자용 RTX 3090/4090(24GB) 한 장에서 실행 가능.

양자화 30B vs 원본 9B — 뭐가 더 좋나

대부분의 경우 양자화 30B가 이긴다.

직관: 30B 모델은 9B보다 훨씬 많은 표현력을 weight에 담고 있다. 양자화는 정보를 손실시키지만 완전히 파괴하지는 않는다.

30B Q4: 원본 지식량의 ~85~90%
9B bf16: 원본 지식량 100% (but 원본 자체가 작음)

파라미터 수 차이에서 오는 capacity gap > 양자화 손실.

예외

  • 세대 차이가 크면 역전 가능 (예: Qwen2.5-7B vs Llama2-30B-Q4)
  • 수학/코딩처럼 정밀 추론 태스크에서는 양자화 손실 체감이 더 큼

관련 개념