한 줄 정의
양자화는 모델이 들고 있는 가중치와 계산값을 더 적은 비트로 표현하는 방법이야. 원래 32비트나 16비트로 저장하던 수를 8비트나 4비트처럼 더 작은 형식으로 바꿔서 모델을 가볍게 만든다고 보면 돼.
핵심은 모델 구조를 새로 만드는 게 아니라 같은 모델의 숫자 표현 방식을 바꾸는 데 있어. 그래서 양자화된 모델은 다른 모델이라기보다, 원본 모델을 더 작고 싸게 돌리기 좋게 바꾼 버전인 경우가 많아.
어떻게 작동하나
보통은 큰 값 범위를 더 적은 숫자 칸에 다시 매핑해. 이 과정에서 정확도는 조금 잃을 수 있지만 메모리 사용량과 계산량, 전송해야 하는 데이터 양이 크게 줄어.
예를 들어 FP16 모델을 INT8로 바꾸면 메모리 부담이 줄고 CPU나 GPU에서 추론하기 쉬워질 수 있어. INT4처럼 더 강하게 줄이면 더 가벼워지지만, 품질 저하나 특정 작업에서의 흔들림이 더 커질 수도 있어.
실무에서는 로컬 실행, 모바일이나 엣지 배포, 적은 VRAM 환경, 대량 추론 비용 절감 같은 이유로 양자화를 써. 다만 가중치만 줄이는지, 활성값까지 같이 줄이는지, 어느 레이어를 얼마나 강하게 줄이는지에 따라 결과가 꽤 달라져.
왜 중요한가
양자화가 중요한 이유는 좋은 모델을 버리지 않고도 더 작은 장비와 예산에 맞출 수 있어서야. 같은 모델이라도 양자화를 잘 하면 개인 GPU, 노트북, CPU 서버에서도 돌릴 여지가 생겨.
반대로 너무 공격적인 양자화는 답변 품질, 코드 생성, 수학 계산 같은 민감한 작업에서 손실을 만들 수 있어. 그래서 양자화는 무조건 좋은 압축이 아니라, 품질과 비용 사이에서 어디까지 줄일지 정하는 선택이라고 보는 게 맞아.
관련 용어
- Distillation 은 학습 단계에서 모델 자체를 더 작게 만드는 쪽이고, 양자화는 이미 있는 모델을 더 가볍게 배포하는 쪽이야.
- Prompt Caching 은 같은 요청을 덜 다시 계산해서 비용을 줄이는 방법이고, 양자화는 모델 숫자 표현 자체를 줄이는 방법이야.
- ONNX 는 양자화된 모델을 어떤 형식과 실행 경로로 배포할지 볼 때 같이 보면 흐름이 잘 잡혀.
- Runtime 은 양자화가 실제 실행 환경에서 어떤 이득이나 제약으로 나타나는지 연결해서 보기 좋아.