양자화 (Quantization)
1양자화란?¶
양자화(Quantization)는 딥러닝 모델의 가중치(Weights)와 활성화값(Activations)을 높은 정밀도(High precision, 예: 32비트 또는 16비트 부동소수점)에서 낮은 정밀도(Low precision, 예: 8비트 또는 4비트 정수)의 수치 표현식으로 변환하는 모델 압축 및 경량화 기술입니다.
거대 언어 모델(LLM)은 수백억 개의 파라미터를 가지고 있어 단일 그래픽 카드(GPU)의 메모리(VRAM) 한계를 크게 초과합니다. 예를 들어 FP16 정밀도를 사용하는 70B(700억 파라미터) 모델을 로딩하려면 순수 모델 가중치에만 최소 140GB 이상의 VRAM이 필요합니다. 양자화는 이러한 모델 크기를 4분의 1 혹은 그 이하로 압축하여 일반 퍼스널 컴퓨터나 저가형 에지 디바이스에서도 LLM을 매끄럽게 구동할 수 있도록 돕는 핵심 열쇠입니다.
2양자화의 수학적 기초¶
양자화의 기본 원리는 실수 범위의 입력값 를 이산적인 정수 범위 로 선형 맵핑(Linear Mapping)하는 것입니다.
이 매핑은 스케일 인자(Scale Factor, )와 제로 포인트(Zero-point, )라는 두 가지 매개변수를 활용합니다.
2.1스케일(Scale, )과 제로 포인트(Zero-Point, ) 유도¶
스케일 (): 실수 범위와 정수 범위의 비율을 정의하는 양의 실수입니다.
제로 포인트 (): 실수 영역의 0이 정수 영역에서 맵핑되는 오프셋 정수입니다. 실제 값이 정확히 0일 때 패딩 등이 왜곡되지 않도록 유지하는 역할을 합니다.
2.2양자화 및 역양자화 수식¶
양자화 (Quantization):
역양자화 (Dequantization): 정수 연산 결과를 다시 실수 영역으로 복원하여 후속 레이어에 전달할 때 사용됩니다.
3양자화의 분류¶
3.1매핑 방식에 따른 분류: 대칭 vs 비대칭¶
비대칭 양자화 (Asymmetric Quantization):
실수 입력의 최솟값과 최댓값 을 정수 공간에 그대로 대응시킵니다.
제로 포인트 가 0이 아닌 임의의 정수 값을 갖습니다.
활성화 함수(예: ReLU, GeLU)의 출력처럼 비대칭적인 데이터 분포를 다룰 때 오차를 최소화할 수 있습니다.
대칭 양자화 (Symmetric Quantization):
실수의 최댓값 절대값을 기준으로 절대 대칭 범위 를 설정하여 정수 공간에 맵핑합니다.
제로 포인트 가 항상 0으로 고정됩니다 ().
계산식이 단순해져 가속 연산(GEMM) 효율성이 극대화되므로 주로 모델 가중치 양자화에 쓰입니다.
3.2수행 단계에 따른 분류: PTQ vs QAT¶
사후 양자화 (Post-Training Quantization, PTQ):
이미 사전 훈련 및 사후 훈련이 완벽히 끝난 FP16 모델을 가져와 보정(Calibration) 데이터셋을 약간 주입하여 가중치 분포를 파악한 뒤 양자화를 적용합니다.
추가적인 모델 훈련이나 백프로파게이션이 필요 없어 시간과 자원 비용이 거의 들지 않으며, 현대 대형 언어 모델 양자화의 표준으로 자리 잡았습니다.
양자화 고려 훈련 (Quantization-Aware Training, QAT):
모델의 순전파 학습 과정에서 양자화 시 발생하는 노이즈(오차)를 시뮬레이션하며 역전파를 수행해 모델이 양자화 오차에 적응하도록 학습시킵니다.
정밀도 유실이 최소화되지만 LLM의 크기가 커짐에 따라 막대한 훈련 자원이 소요되므로 공학적 한계가 존재합니다.
4현대 LLM 전용 양자화 알고리즘¶
거대 언어 모델은 기존의 일반적인 8비트 균등 양자화를 적용할 경우 정밀도가 급격히 붕괴하는 현상이 일어납니다. 특히 특정 채널의 활성화값(Activation)이 비정상적으로 튀는 아웃라이어(Outliers) 현상 때문입니다. 이를 해결하기 위해 혁신적인 LLM 전용 PTQ 알고리즘들이 고안되었습니다.
4.1GPTQ¶
원리: 2차 테일러 급수 확장을 활용하여 단일 레이어 단위로 가중치 양자화 시 발생하는 MSE(Mean Squared Error) 에러를 수학적으로 역추적하여 다른 가중치들을 역으로 보정(Error Compensation)합니다.
특징: 가중치를 4비트나 3비트로 극단적으로 압축하면서도 성능 저하가 극히 적으며, GPU 추론 속도 개선에 특화되어 있습니다.
4.2AWQ (Activation-aware Weight Quantization)¶
원리: 모든 가중치가 똑같이 중요하지 않다는 점에 착안했습니다. 모델 추론을 주도하는 상위 1%의 핵심 가중치(Salient weights)는 활성화(Activation) 강도가 강한 채널과 맞닿아 있습니다. AWQ는 이 핵심 가중치를 양자화하지 않고 원본 값 그대로 보존하는 대신 스케일링 기법을 적용하여 정밀도 유실을 완벽히 복원합니다.
특징: 보정 데이터셋에 대한 과적합 위험이 적고 일반화 성능이 뛰어나 최신 LLM의 GPU 서빙 백엔드(vLLM 등)에서 주력으로 활용됩니다.
4.3GGUF / GGML (llama.cpp 생태계)¶
원리: 가중치 행렬을 작은 크기의 블록(Block, 예: 32개 또는 256개 가중치 단위)으로 쪼개고, 각 블록마다 독립적인 스케일 인자를 설정하여 비트 유실을 줄이는 블록 단위 양자화(Block-wise Quantization)를 구현합니다.
특징: CPU 멀티스레딩 최적화 및 Apple Silicon(Metal) 가속 하드웨어 아키텍처에 완벽하게 호환되며, 4비트(
Q4_K_M), 5비트(Q5_K_M) 등 다양한 정밀도를 혼합하여 최고의 성능 대 용량 비를 냅니다.
5LLM 양자화 알고리즘 비교¶
| 알고리즘 | 대상 (Weight / Activation) | 권장 비트수 (Weight) | 주 사용 하드웨어 | 주용도 및 특징 |
|---|---|---|---|---|
| GPTQ | Weight-Only | 4-bit / 3-bit | NVIDIA GPU | 단일 GPU 배포 시 VRAM 절약 극대화 |
| AWQ | Weight-Only | 4-bit | NVIDIA GPU | vLLM 등 고성능 클라우드 서빙용, 안정성 높음 |
| SmoothQuant | Weight & Activation (W8A8) | 8-bit | GPU / NPU | 가중치와 활성화값 모두 INT8로 변환해 하드웨어 연산 속도 극대화 |
| GGUF | Block-wise Weight | 2-bit ~ 8-bit | CPU / Apple Silicon | 맥북, 미니 PC 등 로컬 및 에지 디바이스 구동 환경 최적화 |
양자화를 거쳐 압축된 모델은 가벼운 저장 용량과 VRAM 점유율 덕분에 로컬 가속 프레임워크(llama.cpp) 또는 에지 기반 오케스트레이터(Ollama) 등을 타고 일반 사용자들의 손끝에서 강력한 성능을 발휘할 수 있게 됩니다.