Quantization(Linear)

DL 맥락에서 모델의 weight와 activation을 high-precision에서 low-precision으로 낮추는 기술.
더 작은 데이터 타입으로 변환하여,

  1. memory saving
  2. fast inference 가 주된 목적.

Detail Procedure

크게 2 step으로, scaling rounding으로 구성됨.

1. 선형 양자화의 수학적 원리 (수식화)

실수(FP32) 값을 , 정수로 양자화된 값을 라고 할 때 변환 공식은 다음과 같습니다.

매핑 과정은 두 가지 핵심 변수(, )로 정의됨.

  • (Scale Factor): 원래 데이터의 Min-Max 범위와 타겟 데이터 타입(예: INT8의 경우 -128 ~ 127)의 비율입니다. 범위를 얼마나 압축할지 결정합니다.
  • (Zero-Point): 실수 세계의 ‘0.0’이 정수 세계에서는 몇 번 인덱스에 매핑되어야 하는지 알려주는 영점 조준 값입니다. 딥러닝에서는 패딩(Padding)이나 ReLU 활성화 함수 때문에 정확한 ‘0’을 표현하는 것이 매우 중요하므로 이 Zero-Point가 필수적입니다.
    반대로 모델이 계산 결과를 뱉어낼 때 다시 실수로 복원하는 과정(Dequantization)은 다음과 같습니다.


이때 사이의 미세한 차이가 바로 성능 저하를 일으키는 **양자화 오차(Quantization Error)**가 됩니다.

2. 매핑 방식에 따른 두 가지 카테고리

“Min-Max 범위를 뽑아낸다”는 접근법에서, 범위를 어떻게 설정하느냐에 따라 실무에서는 두 가지로 나뉩니다.

  • 비대칭 양자화 (Asymmetric Quantization):
    • 방식: 실제 데이터의 Min과 Max를 그대로 사용하여 타겟 범위에 꽉 차게 매핑합니다.
    • 특징: 데이터 분포가 한쪽으로 쏠려 있을 때 해상도를 최대한 알뜰하게 쓸 수 있지만, 값이 0이 아니기 때문에 행렬 곱셈 연산 시 추가적인 덧셈 연산이 필요해 계산이 조금 느려집니다.
  • 대칭 양자화 (Symmetric Quantization):
    • 방식: 절대값이 가장 큰 값(Max Absolute)을 기준으로 범위를 대칭으로 설정합니다.
    • 특징: 항상 이 되므로 연산 속도가 무진장 빠릅니다. 하지만 데이터가 0을 기준으로 비대칭하게 퍼져있다면, 한쪽 빈 공간은 전혀 쓰지 못해 해상도 손해를 봅니다.

quantization 시 performance 하락? 개인적 해석

그러면 일반적으로 quantization을 하면 성능하락이 발생할 것 같긴한데, 이걸 어떻게 설명할 수 있지? 정확하게는 모르겠으나, 일단 quantization을 하면 데이터 타입이 작아지니, parameter sparsity는 줄어들 것 같은데 모든 경우에 대해 확실하게 줄어드는 지는 확답할 수 없지만, 늘 수는 없겠지. 이러한 걸 정보이론 관점에서 정보의 해상도가 떨어진다고도 해석할 수 있을 것 같은데, 맞아?

네, 맞습니다. 양자화(Quantization) 시 성능 하락이 발생하는 이유와 이를 정보 이론적 관점에서 해석하는 부분에 대해 아주 정확하게 이해하고 계십니다.

양자화 시 성능 하락 설명

양자화 시 성능 하락이 발생하는 주된 이유는 다음과 같습니다.

정보 손실 (Information Loss) / 해상도 저하:

양자화는 더 많은 비트(높은 정밀도)를 가진 데이터를 더 적은 비트(낮은 정밀도)로 표현하는 과정입니다. 예를 들어, 16비트 부동 소수점(BFloat16)으로 표현할 수 있는 값의 범위와 세밀함은 4비트 정수(Int4)로 표현할 수 있는 값의 범위와 세밀함보다 훨씬 큽니다.
이 과정에서 원래 데이터가 가질 수 있었던 미세한 값의 차이들이 더 가까운 양자화 레벨로 뭉뚱그려져 표현됩니다. 즉, 데이터의 “해상도(Resolution)“가 떨어지는 것입니다.
이러한 해상도 저하는 모델의 가중치나 활성화 값(Activation)에 적용될 때, 미묘한 차이를 학습하거나 표현하는 능력을 저하시켜 결과적으로 모델의 예측 정확도나 성능을 떨어뜨릴 수 있습니다.

오차 누적 (Error Accumulation):

양자화 과정에서는 원래 값을 정확히 표현하지 못하고 **양자화 오차(Quantization Error)**가 발생합니다. 모델은 여러 층(Layer)으로 이루어져 있는데, 각 층에서 발생하는 양자화 오차가 다음 층으로 전달되고 누적될 수 있습니다. 이러한 오차 누적은 모델의 최종 출력에 더 큰 영향을 미치고 성능을 더욱 저하시킬 수 있습니다.

Outlier 문제:

일부 데이터(가중치나 활성화 값)는 매우 크거나 작은 **특이값(Outlier)**을 가질 수 있습니다.
양자화는 보통 전체 데이터 범위를 균등하게 나누어 레벨을 할당하는데, 특이값이 있는 경우 대부분의 데이터 포인트는 매우 좁은 범위에 몰려 있고, 특이값 때문에 양자화 레벨의 상당 부분이 비효율적으로 사용될 수 있습니다. 이로 인해 중요한 정보를 제대로 표현하지 못하게 됩니다. (QLORA의 NF4가 정규 분포를 가정하고 특이값 문제를 완화하려는 시도 중 하나입니다.)

정보 이론적 관점: 정보의 해상도 저하

말씀하신 것처럼, 양자화를 정보 이론(Information Theory) 관점에서 정보의 해상도가 떨어진다고 해석하는 것은 매우 적절합니다.정보 이론에서 **엔트로피(Entropy)**는 불확실성 또는 정보량을 측정하는 척도입니다. 더 많은 비트로 데이터를 표현할수록 더 많은 불확실성(즉, 더 많은 잠재적 상태)을 담을 수 있어, 이론적으로 더 많은 정보량을 가질 수 있습니다. 양자화는 각 파라미터가 가질 수 있는 값의 범위를 극도로 제한하여, 가능한 상태의 수를 줄입니다. 예를 들어, 16비트 부동 소수점은 개의 값을 표현할 수 있지만, 4비트 정수는 개의 값만 표현할 수 있습니다. 이는 파라미터가 담을 수 있는 정보량(또는 정보의 정밀도)이 크게 감소했음을 의미합니다. 따라서, 양자화는 데이터를 더 적은 수의 양자화 레벨로 투영(Projection)하는 과정이며, 이 과정에서 원래 데이터가 가지고 있던 고유한 정보의 미세한 차이(정보의 해상도)가 손실된다고 볼 수 있습니다.‘

결론

양자화는 정보의 해상도를 낮추고, 오차를 유발하며, 특이값 문제를 야기하여 성능 하락을 초래합니다. 이는 정보 이론적으로 파라미터가 담을 수 있는 정보량, 즉 해상도가 감소하기 때문이라고 설명할 수 있습니다.


LLM 양자화 규격 및 방법론

위의 선형 양자화 원리를 기반으로, 실제 LLM 추론/파인튜닝에서는 다양한 양자화 규격과 알고리즘이 사용된다. 아래에서는 GGUF(llama.cpp) 양자화 타입과 **주요 양자화 방법론(논문)**을 정리한다.


1. GGUF 양자화 규격 (llama.cpp)

GGUF는 llama.cpp에서 사용하는 모델 포맷으로, 다양한 양자화 타입을 지원한다. 크게 Legacy, K-Quant, I-Quant 세 계열로 나뉜다.

1-1. Legacy 타입 — 단순 블록 양자화

가장 초기의 양자화 방식. 고정 크기 블록(보통 32개 weight) 단위로 하나의 scale factor를 공유한다.

타입bpw설명
Q4_04.54비트 양자화, scale만 저장 (zero-point 없음)
Q4_15.04비트 양자화, scale + zero-point 저장 (비대칭)
Q5_05.55비트 양자화, scale만 저장
Q5_16.05비트 양자화, scale + zero-point 저장
Q8_08.58비트 양자화, scale만 저장 (거의 무손실)

bpw (bits-per-weight)

실제 weight 비트 + 메타데이터(scale, zero-point) 오버헤드를 포함한 평균 비트 수. 예를 들어 Q4_0은 weight 자체는 4비트이지만 블록당 16비트 scale이 추가되어 ~4.5 bpw가 된다.

Mixed-Precision Quantization

**Mixed-Precision(혼합 정밀도)**이란 모델의 모든 weight를 동일한 비트로 양자화하는 대신, 레이어·모듈·채널별로 서로 다른 비트 수를 할당하는 전략이다.

왜 필요한가? 모델 내부의 모든 파라미터가 출력 품질에 동일하게 기여하지 않기 때문이다:

  • Attention의 Q/K projection처럼 작은 오차가 전파되는 민감한 레이어는 높은 비트(5-6비트)를 유지하고,
  • 상대적으로 둔감한 FFN 중간층 등은 낮은 비트(2-3비트)로 압축해도 전체 perplexity 손실이 적다.

이를 통해 동일한 평균 bpw에서 uniform 양자화보다 더 높은 품질을 달성할 수 있다. 아래의 K-Quant, EXL2, LLM.int8() 등이 모두 이 원리를 활용한다.

1-2. K-Quant 타입 — 이중 블록(Super-block) 구조

K-Quant는 블록 안의 블록(super-block) 구조를 사용하여 위의 mixed-precision을 구현한다. 중요도가 높은 weight에 더 많은 비트를 할당하는 방식.

타입bpw설명
Q2_K3.352비트 기반, super-block scale은 4비트로 저장
Q3_K_S3.503비트, Small — 최소 메타데이터
Q3_K_M3.913비트, Medium — attention/FFN 레이어에 차등 정밀도
Q3_K_L4.273비트, Large — 더 많은 레이어를 높은 정밀도로
Q4_K_S4.584비트, Small
Q4_K_M4.854비트, Medium — 가장 널리 사용되는 균형점
Q5_K_S5.545비트, Small
Q5_K_M5.695비트, Medium — 품질 우선 시 선택
Q6_K6.566비트 — Q8_0에 근접하는 품질

접미사 의미

  • K = K-Quant 계열 (이중 블록 구조)
  • S / M / L = Small / Medium / Large — 높은 정밀도로 양자화하는 레이어의 비율을 결정. L일수록 더 많은 레이어가 높은 비트를 사용하여 품질↑, 용량↑

1-3. I-Quant 타입 — Importance 기반 극한 압축

Importance matrix를 활용하여 weight의 중요도에 따라 극단적으로 낮은 비트를 할당하는 방식. 매우 작은 모델 크기가 필요할 때 사용.

타입bpw설명
IQ1_S1.561비트급, 극한 압축 (실험적)
IQ2_XXS2.062비트급, 최소 크기
IQ2_XS2.312비트급
IQ2_S2.502비트급
IQ3_XXS3.063비트급, 최소 메타데이터
IQ3_S3.443비트급
IQ4_NL4.504비트, Non-Linear quantization levels
IQ4_XS4.254비트급, 극소 메타데이터

I-Quant 사용 시 주의

IQ1~IQ2 수준은 perplexity 손실이 매우 크며, 주로 리서치 목적이나 극한 메모리 제약 환경에서만 사용된다. 실용적 최소 품질 기준은 보통 IQ3_S ~ Q4_K_M 구간.


2. 주요 양자화 방법론 및 논문

2-1. Post-Training Quantization (PTQ)

학습 완료된 모델에 대해 추가 학습 없이 양자화를 적용하는 방법들.

GPTQFrantar et al., 2022

  • 논문: “GPTQ: Accurate Post-Training Quantization for Generative Pre-Trained Transformers” (arXiv: 2210.17323)
  • 핵심: Hessian 정보 기반 layer-wise 양자화. OBQ(Optimal Brain Quantization)를 대규모 모델에 확장. 각 weight를 양자화할 때 나머지 weight를 보정하여 오차를 최소화.
  • 특징: 3-4비트에서 우수한 성능, GPU 기반 추론에 최적화.

AWQLin et al., 2023

  • 논문: “AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration” (arXiv: 2306.00978)
  • 핵심: 모든 weight가 동등하지 않다는 관찰. Activation magnitude가 큰 채널의 weight를 보호하여 salient weight를 보존. Scale factor로 양자화 전 weight 분포를 조정.
  • 특징: Calibration 데이터 소량만 필요, 하드웨어 친화적.

SqueezeLLMKim et al., 2023

  • 논문: “SqueezeLLM: Dense-and-Sparse Quantization” (arXiv: 2306.07629)
  • 핵심: Weight를 **dense 부분(균일 양자화) + sparse 부분(outlier를 별도 저장)**으로 분해. Sensitivity 기반 non-uniform 양자화와 sparse outlier 저장을 결합.

QuIP / QuIP#Chee et al., 2023 / 2024

  • 논문: “QuIP: 2-Bit Quantization of Large Language Models With Guarantees” (arXiv: 2307.13304)
  • QuIP#: “QuIP#: Even Better LLM Quantization with Hadamard Incoherence and Lattice Codebooks” (arXiv: 2402.04396)
  • 핵심: Incoherence processing — 랜덤 직교 변환으로 weight를 균일하게 분산시킨 후 양자화. QuIP#은 E₈ lattice codebook을 사용하여 2비트에서도 높은 품질 달성.

AQLMEgiazarian et al., 2024

  • 논문: “AQLM: Extreme Compression of LLMs via Additive Quantization” (arXiv: 2401.06118)
  • 핵심: Multi-codebook additive quantization. 여러 개의 codebook 벡터를 더하여 weight를 근사. 2비트 이하에서 GPTQ/AWQ 대비 우수한 perplexity.

SmoothQuantXiao et al., 2022

  • 논문: “SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models” (arXiv: 2211.10438)
  • 핵심: Activation의 outlier를 weight 쪽으로 수학적으로 이전(smoothing). 형태로 activation과 weight 양쪽의 양자화 난이도를 균형화.
  • 특징: W8A8 (weight 8비트 + activation 8비트) INT8 추론에 특화.

HQQBadri & Shaji, 2023

  • 핵심: Calibration 데이터 없이 half-quadratic optimization으로 양자화 수행. 빠른 양자화 속도가 장점.
  • 특징: Calibration-free이므로 데이터 준비 불필요, 빠른 양자화.

2-2. Quantization-Aware Training / Fine-tuning

학습 과정에서 양자화를 고려하는 방법들.

QLoRA / NF4Dettmers et al., 2023

  • 논문: “QLoRA: Efficient Finetuning of Quantized LLMs” (arXiv: 2305.14314)
  • 핵심: NormalFloat 4-bit (NF4) — 정규분포를 가정하여 양자화 bin을 정보 이론적으로 최적 배치. 4비트 양자화된 모델 위에 LoRA adapter를 학습. Double quantization으로 양자화 상수 자체도 양자화.
  • 특징: 단일 48GB GPU에서 65B 모델 파인튜닝 가능.

2-3. Mixed-Precision / 특수 방법

LLM.int8()Dettmers et al., 2022

  • 논문: “LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale” (arXiv: 2208.07339)
  • 핵심: Activation에서 극단적 outlier가 발생하는 emergent feature 차원을 FP16으로 유지하고, 나머지는 INT8로 처리하는 mixed-precision decomposition.
  • 특징: 175B 모델까지 성능 저하 없이 INT8 추론 최초 달성.

EXL2ExLlamaV2

  • 핵심: Variable bits-per-weight — 레이어별, 모듈별로 서로 다른 비트를 할당하는 mixed quantization. 목표 bpw를 설정하면 자동으로 최적 비트 배분.
  • 특징: GPU 추론에 최적화, 매우 빠른 inference 속도.

EETQNetEase Youdao

  • 핵심: Per-channel INT8 weight quantization. 채널별로 독립적인 scale factor를 사용하여 정밀도 유지.
  • 특징: 간단한 구현, 빠른 양자화, W8A16 지원.

3. 양자화 방법론 비교 요약

방법비트연도핵심 아이디어Calibration
LLM.int8()W8 mixed2022Outlier 차원 FP16 분리
SmoothQuantW8A82022Activation outlier → Weight로 이전✓ (소량)
GPTQW3-42022Hessian 기반 layer-wise PTQ
QLoRA / NF4W4 + LoRA2023정규분포 최적 4비트 + LoRA 파인튜닝
AWQW42023Activation-aware salient weight 보호✓ (소량)
SqueezeLLMW3-42023Dense-Sparse 분해
QuIP / QuIP#W2-42023-24Incoherence + E₈ lattice codebook
HQQW2-42023Half-quadratic, calibration-free
AQLMW22024Multi-codebook additive quantization
EXL2Variable레이어별 variable bpw 최적 배분
EETQW8Per-channel INT8

실용 가이드

  • 메모리 극한: IQ2~IQ3 또는 AQLM/QuIP# 2비트
  • 품질-효율 균형: Q4_K_M (GGUF) 또는 AWQ/GPTQ 4비트
  • 거의 무손실: Q8_0 (GGUF) 또는 SmoothQuant W8A8
  • 파인튜닝 목적: QLoRA + NF4
  • 빠른 양자화 필요: HQQ (calibration-free)

4. 실무: 모델 체급 × Precision × Performance

4-1. 모델 크기와 양자화 내성

모델이 클수록 redundancy(중복 파라미터)가 많아 양자화 손실에 강하다.

모델PrecisionVRAM 사용량Perplexity (WikiText-2)비고
Llama 2 70BQ4_K_M~38 GB~3.124비트에도 품질 유지
Llama 2 70BFP16~140 GB~3.08기준선
Llama 2 7BQ4_K_M~4.4 GB~5.95소형 모델은 4비트 손실 체감
Llama 2 7BFP16~14 GB~5.47기준선

경험적 규칙

큰 모델의 4비트 ≈ 작은 모델의 FP16 — 70B Q4는 7B FP16보다 절대 perplexity가 훨씬 낮다. VRAM 여유가 있다면 작은 모델을 FP16으로 돌리기보다 큰 모델을 4비트로 돌리는 편이 실제 품질이 높다.

왜 이런 차이가 발생하는가:

  • 대형 모델은 파라미터 간 정보 중복이 높아, 일부 precision 손실이 다른 파라미터로 보상됨
  • 소형 모델은 각 weight가 담당하는 정보량이 크므로 quantization error의 영향이 상대적으로 큼
  • 같은 비트 수라도 K-quant(importance-aware mixed precision)가 round-to-nearest보다 소형 모델에서 격차가 더 크게 벌어짐

4-2. Training 시 Precision 관행

Precision용도특징
FP32Legacy, optimizer state현재 LLM 전체 학습에서는 거의 사용하지 않음 (메모리 2배 낭비)
BF16현재 LLM 학습의 사실상 표준Dynamic range가 FP32와 동일(exponent 8비트), A100/H100 네이티브 지원
FP16BF16 미지원 GPU (V100 등)Dynamic range가 좁아 loss scaling 필수, overflow 위험
Mixed Precision실제 학습 파이프라인FP32 master weight + BF16/FP16 forward/backward, gradient accumulation은 FP32
QLoRA (NF4 + BF16)파인튜닝4비트 고정 base weight + BF16 LoRA adapter gradient, 단일 GPU 학습 가능

BF16 vs FP16

  • BF16: exponent 8비트 → dynamic range ↑, mantissa 7비트 → precision ↓
  • FP16: exponent 5비트 → dynamic range ↓, mantissa 10비트 → precision ↑
  • LLM 학습에서는 gradient의 dynamic range가 넓어 BF16이 안정적
  • H100의 FP8 (E4M3/E5M2) 학습도 등장 중이나, 아직 BF16이 기본

4-3. Inference 시 Precision 선택 기준

시나리오추천 Precision이유
로컬 추론 (Consumer GPU)Q4_K_M ~ Q5_K_M (GGUF)VRAM 6~24GB 범위에서 품질-메모리 최적 트레이드오프
서버 추론 (A100/H100)FP16/BF16 또는 INT8 (SmoothQuant)Throughput 중심, tensor core 활용 극대화
API 서빙 (대규모 배치)AWQ/GPTQ 4비트 + vLLM/TGI동시 요청 처리량 극대화, KV cache 메모리 절약
CPU 추론GGUF Q4_K_Mllama.cpp 기반, AVX2/NEON 최적화, 사실상 표준
Edge/모바일INT4 / GGUF IQ2~IQ4극한 메모리 제약, 품질 타협 불가피

vLLM + AWQ 조합이 인기 있는 이유

  • AWQ는 weight-only 4비트로 모델 크기를 ~75% 줄임
  • vLLM의 PagedAttention이 KV cache를 효율적으로 관리
  • 결과적으로 같은 GPU에서 동시 처리 가능한 요청 수가 3~4배 증가

4-4. 실무 고려사항 & 주의점

Perplexity ≠ 체감 품질

Perplexity 차이 0.1~0.2는 일반 대화에서 거의 체감되지 않는다. 그러나 코딩, 수학 추론, 긴 문맥 추적 태스크에서는 양자화 손실이 두드러지게 나타난다. 용도별로 적절한 비트 수를 선택해야 한다.

Calibration 데이터의 중요성

  • PTQ(Post-Training Quantization) 품질은 calibration set에 크게 의존
  • 도메인 특화 모델은 해당 도메인 텍스트로 calibration해야 최적 결과
  • 일반적으로 128~512 샘플이면 충분하지만, 분포가 다르면 outlier 처리가 부정확해짐

KV Cache 양자화

  • 모델 weight뿐 아니라 KV cache도 FP16 → INT8/INT4로 양자화 가능
  • 긴 context window(32K+)에서 KV cache가 VRAM의 주요 병목이 됨
  • KIVI, Coupled Quantization 등의 기법으로 KV cache를 2~4비트까지 압축
  • 품질 손실은 weight 양자화보다 상대적으로 적음

양자화 모델의 추가 학습

  • 양자화된 weight를 직접 업데이트하면 gradient가 왜곡되어 학습이 불안정
  • 올바른 접근: base weight는 양자화 상태로 고정(freeze), LoRA adapter만 FP16/BF16으로 학습 (= QLoRA)
  • GPTQ/AWQ 양자화 모델 위에 LoRA를 붙이는 것도 가능하나, NF4 + double quantization 조합이 메모리 효율 최고