양자화 개요

양자화 개요 (Quantization Overview)

큰 모델을 다룰 때 가장 먼저 부딪히는 벽이 메모리예요. 양자화(quantization)는 가중치를 더 낮은 정밀도로 저장해서 모델을 로딩·사용할 때 필요한 메모리를 줄이면서, 가능한 한 정확도를 보존하려는 기법입니다. 이 가이드에서는 트랜스포머(Transformers)가 지원하는 양자화 방법의 전반을 살펴봐요.

출처: Quantization Overview - Hugging Face Transformers 공식문서

양자화란?

양자화는 가중치를 더 낮은 정밀도로 저장해서 모델 로딩·사용 시 메모리 요구량을 낮추면서, 가능한 한 정확도를 보존하는 기법이에요. 가중치는 보통 전체 정밀도(fp32) 부동소수점으로 저장되지만, 오늘날 모델이 워낙 커서 반정밀도(fp16 또는 bf16)도 점점 많이 쓰입니다. 어떤 양자화 방법은 정수 표현(예: int8, int4)으로까지 더 낮출 수 있어요.

Transformers는 각각 장단점이 있는 여러 양자화 방법을 지원하므로, 여러분의 사용 사례에 맞는 최선의 방법을 고를 수 있습니다. 어떤 방법은 더 높은 정확도와 극단적 압축(1-2bit)을 위해 캘리브레이션(calibration)이 필요한 반면, 어떤 방법은 온더플라이(on-the-fly) 양자화로 바로 동작합니다.

방법 비교표

아래 표를 참고해 하드웨어와 양자화 비트 수에 따라 방법을 고르세요.

Quantization Method On the fly quantization CPU CUDA GPU ROCm GPU Metal (Apple Silicon) Intel GPU Torch compile() Bits PEFT Fine Tuning Serializable with 🤗Transformers 🤗Transformers Support Link to library
AQLM 🔴 🟢 🟢 🔴 🔴 🟢 🟢 1/2 🟢 🟢 🟢 https://github.com/Vahe1994/AQLM
AutoRound 🔴 🟢 🟢 🔴 🔴 🟢 🔴 2/3/4/8 🔴 🟢 🟢 https://github.com/intel/auto-round
AWQ 🔴 🟢 🟢 🟢 🔴 🟢 ? 4 🟢 🟢 🟢 https://github.com/casper-hansen/AutoAWQ
bitsandbytes 🟢 🟢 🟢 🟡 🟡 🟢 🟢 4/8 🟢 🟢 🟢 https://github.com/bitsandbytes-foundation/bitsandbytes
compressed-tensors 🔴 🟢 🟢 🟢 🔴 🟢 🔴 1/8 🟢 🟢 🟢 https://github.com/neuralmagic/compressed-tensors
EETQ 🟢 🔴 🟢 🔴 🔴 🔴 ? 8 🟢 🟢 🟢 https://github.com/NetEase-FuXi/EETQ
Four Over Six 🟢 🟢 🟢 🔴 🔴 🔴 🟢 4 🔴 🟢 🟢 https://github.com/mit-han-lab/fouroversix
FP-Quant 🟢 🔴 🟢 🔴 🔴 🔴 🟢 4 🔴 🟢 🟢 https://github.com/IST-DASLab/FP-Quant
GGUF / GGML (llama.cpp) 🟢 🟢 🟢 🔴 🟢 🟢 🟢 1/8 🔴 🔴 See Notes https://github.com/ggerganov/llama.cpp
GPT-QModel 🔴 🟢 🟢 🟢 🟢 🟢 🔴 2/3/4/8 🟢 🟢 🟢 https://github.com/ModelCloud/GPTQModel
HIGGS 🟢 🔴 🟢 🔴 🔴 🔴 🟢 2/4 🔴 🟢 🟢 https://github.com/HanGuo97/flute
HQQ 🟢 🟢 🟢 🔴 🔴 🟢 🟢 1/8 🟢 🔴 🟢 https://github.com/mobiusml/hqq/
Metal 🟢 🔴 🔴 🔴 🟢 🔴 🔴 2/4/8 🔴 🟢 🟢 Hub Kernels
NVFP4 🟢 🔴 🟢 🔴 🔴 🔴 🟢 4 🔴 🔴 🟢 Hub Kernels
optimum-quanto 🟢 🟢 🟢 🔴 🟢 🟢 🟢 2/4/8 🔴 🔴 🟢 https://github.com/huggingface/optimum-quanto
SINQ 🟢 🟢 🟢 🟡 🟡 🟡 🟡 2/3/4/6/8 🔴 🟢 🟢 https://github.com/huawei-csl/SINQ
FBGEMM_FP8 🟢 🔴 🟢 🔴 🔴 🔴 🔴 8 🔴 🟢 🟢 https://github.com/pytorch/FBGEMM
torchao 🟢 🟢 🟢 🔴 🟡 🟢 4/8 🟢🔴 🟢 https://github.com/pytorch/ao
VPTQ 🔴 🔴 🟢 🟡 🔴 🔴 🟢 1/8 🔴 🟢 🟢 https://github.com/microsoft/VPTQ
FINEGRAINED_FP8 🟢 🔴 🟢 🔴 🔴 🟢 🔴 8 🔴 🟢 🟢 Built-in
SpQR 🔴 🔴 🟢 🔴 🔴 🔴 🟢 3 🔴 🟢 🟢 https://github.com/Vahe1994/SpQR/
Quark 🔴 🟢 🟢 🟢 🟢 🟢 ? 2/4/6/8/9/16 🔴 🔴 🟢 https://quark.docs.amd.com/latest/

(🟢 = 지원, 🔴 = 미지원, 🟡 = 제한적 지원, ? = 미확인)

리소스

양자화가 처음이라면 DeepLearning.AI와 협업해 만든 초보자 친화적 양자화 강좌를 추천해요.

사용자 친화적 양자화 도구

친숙한 양자화 경험을 원한다면 다음 커뮤니티 Space와 노트북을 쓸 수 있어요.

더 알아보기 (Learn more)