LLM Quantization은 왜 scale 결정의 문제인가
INT8부터 BitNet 1.58-bit까지, scale·granularity·calibration의 세 가지 선택이 어떻게 quantization accuracy의 Pareto frontier를 결정하는지 추적한다.
- 01 모델 효율화의 4축 — Memory, Compute, Latency, Throughput
- 02 Pruning은 무엇을 제거하는가 — saliency에서 hardware까지
- 03 LLM Quantization은 왜 scale 결정의 문제인가
- 04 Knowledge Distillation은 왜 단순 압축이 아닌가
- 05 모델 압축의 4축은 어떻게 하나의 철학으로 수렴하는가
- 06 FlashAttention은 어떻게 O(N²) 메모리 벽을 넘었나
- 07 LLM을 어떻게 배포할 것인가 — serving 스택의 네 층
Quantization을 배울 때 가장 먼저 만나는 수식은
이다. 그런데 이 수식에서 실제로 모든 결정을 내리는 것은 하나다 — scale을 어떻게 정하느냐가 정확도의 전부를 결정한다. PTQ, QAT, GPTQ, AWQ, NF4까지, 챕터마다 다른 이름으로 등장하는 기법들은 결국 “를 어떤 기준으로 구할 것인가” 라는 하나의 질문에 대한 다른 답이다.
scale 결정의 세 가지 축
quantization에서 내려야 하는 결정은 세 가지 축으로 정리된다.
calibration 방법: absolute-max는 로 단순하지만 outlier 하나가 scale 전체를 지배한다. percentile은 tail을 잘라 main mass의 정밀도를 보호한다. KL divergence minimization은
으로 원 분포와 quantized 분포의 정보 손실을 최소화한다. TensorRT의 calibration 표준이 여기서 나왔다.
granularity: per-tensor는 matrix 전체에 하나의 를 쓴다. per-channel은 output dimension마다 독립적인 scale을 두어 채널 간 magnitude 차이를 보정한다. per-group은 128개 elements 단위로 scale을 잡는다 — GPTQ의 표준. granularity가 세밀해질수록 정확도는 오르지만 metadata overhead도 따라붙는다.
bit-width: INT-는 levels를 제공한다. INT8은 256 levels로 사실상 lossless baseline, INT4는 16 levels로 GPTQ/AWQ를 요구하고, BitNet의 1.58-bit는 3 levels다.
가정 시 rounding error의 분산은
이다. rounding error는 scale에 선형하다 — scale을 키우면 정밀도가 그대로 떨어진다.
PTQ: fine-tune 없이 얼마나 갈 수 있나
Post-Training Quantization은 calibration set(수백~수천 sample)으로 scale을 결정하고 가중치를 교체한다. 학습이 없다는 것이 PTQ의 최대 장점이다.
그런데 여기서 layer-wise error 누적이 문제가 된다. 각 layer 의 quantization error 는 forward pass에서
로 쌓인다. network가 깊을수록, 압축률이 같아도 누적 error는 늘어난다.
Cross-Layer Equalization(CLE)은 이 문제를 연속 layer의 channel magnitude를 geometric mean으로 균형 맞춰 완화한다. 연속 layer 에 대해 로 변환하면 출력은 동일하지만 per-tensor scale의 dynamic range 활용도가 오른다.
INT8까지는 PTQ가 safe baseline이다. INT4 아래부터는 다른 무언가가 필요하다.
QAT와 STE: 미분 불가능한 함수를 학습시키는 트릭
round 함수의 derivative는 거의 모든 점에서 0이다. QAT는 이 문제를 Straight-Through Estimator(STE)로 우회한다.
forward에서는 , backward에서는 . round를 identity처럼 취급하는 “거짓 gradient”다.
uniform noise 가정 시, . STE는 stochastic rounding 하에서 정확하다.
uniform noise에서 round의 기대 gradient는 identity다. STE는 이 기대값을 결정론적 근사로 쓴다.
이 트릭이 QAT, LSQ(learnable scale), BitNet 1.58-bit까지 모든 학습형 quantization의 토대다. 4-bit 이하에서 PTQ의 accuracy가 급락하는 이유는 PTQ가 이 적응 과정 없이 고정된 grid에 가중치를 욱여넣기 때문이다. QAT는 학습이 가중치 분포를 quantization grid에 맞춰 수렴시킨다.
GPTQ와 AWQ: LLM에서 INT4를 가능하게 한 두 아이디어
GPTQ(Frantar 2023)는 Optimal Brain Surgeon의 30년 만의 부활이다. layer-wise objective
를 column 단위로 순차 풀면서, column 를 quantize할 때 발생하는 error를 나머지 column들이 즉시 흡수하도록 Hessian 으로 보정한다.
LLaMA-7B INT4 naive PTQ의 perplexity drop이 5 이상인 반면, GPTQ는 0.5 미만이다. column-wise error compensation이 그 차이를 만든다.
AWQ(Lin 2023)와 SmoothQuant(Xiao 2023)는 LLM 특유의 문제를 겨냥한다 — 일부 hidden dimension의 activation magnitude가 다른 채널의 100~1000배인 “outlier feature”. per-tensor scale이 이 outlier 하나에 지배되면 나머지 99% 채널의 effective bits는 1에 가까워진다.
두 기법 모두 동일한 equivalent transform 를 쓰지만 목적이 다르다.
AWQ: 를 activation outlier channel의 magnitude에 맞춰 weight를 줄여 weight-only(W4A16) quantization을 안전하게 만든다. activation은 FP16 유지. INT4 LLM serving(vLLM, TensorRT-LLM)의 표준.
SmoothQuant: 로 outlier를 weight 쪽으로 transfer해 W8A8을 가능하게 한다. weight와 activation 모두 INT8 — throughput 최적화.
같은 수식, 반대 방향의 선택.
4-bit 이하: distribution-aware codebook의 시대
INT4의 16 levels는 Gaussian 분포에 sub-optimal이다. weight의 대부분이 0 근처에 몰려 있는데 uniform spacing은 outlier를 위해 grid를 낭비한다.
NF4(Dettmers 2023)는 정규분포의 quantile로 codebook을 구성한다. codebook entries — Lloyd algorithm의 Gaussian 최적해다. LLaMA-7B에서 INT4 GPTQ의 perplexity drop이 0.5일 때 NF4는 0.2다.
BitNet b1.58(Ma 2024)은 이 논리를 극단까지 밀어붙인다. weight를 로 제한하면 bit/weight이고,
MatMul이 sign-flip과 add만으로 환원된다. 곱셈이 사라진다.
정리
- quantization의 accuracy는 scale 결정의 함수다 — calibration 방법, granularity, bit-width의 세 축이 Pareto를 결정한다.
- PTQ는 INT8까지 safe. INT4부터는 GPTQ(column-wise error compensation) 또는 QAT(STE 기반 분포 수렴)가 필요하다.
- LLM의 activation outlier는 equivalent transform()으로 처리한다 — AWQ는 W4A16, SmoothQuant는 W8A8을 타깃으로 의 방향이 반대다.
- 4-bit 이하에서는 distribution-aware codebook(NF4)이나 ternary(BitNet)처럼 weight 분포의 모양 자체를 설계에 반영해야 한다.
scale 하나를 어떻게 정하느냐 — 이 질문이 INT8에서 1.58-bit까지의 스펙트럼 전체를 관통한다.