
LLM 양자화 가이드: 7가지 방법 비교 (벤치마크 수치 포함)
Llama 3.3 70B를 FP16으로 실행하려면 가중치만 140GB가 필요합니다. H100 두 개가 있어야 합니다. Q4_K_M에서는 동일한 모델이 약 42GB에 맞고, 이는 eBay에서 구입한 중고 RTX A6000 한 개입니다. 이 격차가 LLM 양자화가 존재하는 전부이며, 잘못된 방법을 선택하면 눈에 띄는 품질 손실이나 보유하지 않은 VRAM 중 하나를 잃게 됩니다.
이 LLM 양자화 가이드는 2026년에 중요한 7가지 방법을 비교하며, 모든 수치는 공개된 출처로 추적됩니다.
핵심 요약
- 양자화는 메모리와 대역폭을 측정 가능하고 보통 작은 품질 손실과 맞바꿉니다.
- GPTQ와 AWQ는 GPU 우선이고, GGUF는 CPU에서도 실행되는 형식입니다.
- Q4_K_M은 4가 아니라 약 4.8비트/가중치입니다. 명명법이 오버헤드를 숨깁니다.
- 6비트 양자화는 llama.cpp k-quants PR에 따르면 FP16 퍼플렉시티의 약 0.1% 범위 내에 있습니다.
LLM 양자화가 실제로 모델에 무엇을 하나요?
LLM 양자화는 모델 가중치를 더 낮은 숫자 정밀도로 저장하여 반올림 오류 비용으로 메모리와 대역폭을 줄입니다. 70B 매개변수 모델은 FP16의 140GB에서 4비트의 약 42GB로 떨어집니다. 지능은 남고, 소수점 자리는 사라집니다. 이 가이드의 모든 방법은 그 트레이드오프의 변형입니다.
정밀도 계층은 FP32(32비트)에서 시작하여 FP16과 BF16(각 16비트)을 지나 INT8, INT4로 내려갑니다. 각 단계는 매개변수당 바이트를 반으로 줄입니다. IEEE 754 표준은 부동소수점 형식을 정의하고, Mark Horowitz의 2014년 논문 "Computing's Energy Problem"은 그 바이트를 이동하는 것이 그들에 대한 산술이 아니라 에너지 비용을 지배함을 보여주었습니다. 이것이 양자화가 추론을 가속하는 물리적 이유입니다.
양자화를 작동하게 만드는 두 가지 매개변수가 있습니다: 척도 계수(정수 범위를 실수 값에 다시 매핑하는 승수)와 영점(0.0을 나타내는 정수). 대칭 양자화는 범위를 0에 중심을 두고 영점을 건너뜁니다. 비대칭 양자화는 가중치가 0에서 멀어질 때 전체 정수 범위를 사용하도록 오프셋합니다.
가중치는 정적이고 정규분포를 따르기 때문에 깔끔하게 양자화됩니다. 활성화값은 그렇지 않습니다. 이따금 중앙값의 100배인 이상 활성화값은 순진하게 양자화하면 반올림 오류를 폭발시킵니다. 이 비대칭이 대부분의 방법이 가중치만 양자화(W4A16)하고 활성화값을 FP16으로 유지하는 이유입니다.
사후학습 양자화(PTQ)는 학습 후 완성된 모델을 변환합니다. 양자화 인식 학습(QAT)은 학습 중 반올림을 시뮬레이션하여 모델이 적응합니다. 이 글의 모든 것은 PTQ입니다. QAT는 더 많은 계산과 학습 실행이 필요합니다. 별도의 결정입니다.
INT4와 NF4 행은 이론적 순수 4비트입니다: 가중치당 4비트 그 이상 없음. 실제 4비트 형식은 그 위에 블록 척도와 최솟값을 가지므로 더 높게 착지합니다. 70B 모델 Q4_K_M에서는 35가 아니라 약 42GB입니다. 아래 VRAM 테이블은 유효 비율을 대신 사용합니다.
양자화는 모델의 지능을 줄이지 않습니다. 그 지능을 저장하는 소수점 자리 수를 줄입니다. 그리고 API 추론에 대해 토큰당 비용을 지불한다면, LLM API 요금을 줄이는 것은 종종 양자화된 모델을 직접 실행하는 것에서 시작됩니다.
7가지 양자화 방법, 나란히 비교
아래 7가지 방법은 2026년 LLM 양자화의 모든 프로덕션 경로를 다룹니다. 둘은 GPU 전용(GPTQ, AWQ), 하나는 어디서나 실행(GGUF), 하나는 로드 시 양자화(BitsandBytes), 둘은 높은 처리량 서빙(SmoothQuant, FP8)을 대상으로 하고, 하나는 PyTorch 기본(TorchAO)입니다. 올바른 선택은 어느 방법이 리더보드에서 가장 높은 점수를 얻는지가 아니라 하드웨어에 달려 있습니다.
GPTQ는 역 헤시안을 사용하여 반올림 오류를 남은 가중치에 재분배함으로써 층별로 양자화합니다. 보정 집합과 GPU가 필요합니다. GPTQ 논문은 175B 모델을 3~4비트로 약 4 GPU-시간에 양자화한다고 보고합니다.
AWQ는 가장 중요한 약 1% 가중치(활성화 크기에서 발견된 중요 가중치)를 식별하고 반올림으로부터 보호하도록 크기를 조정합니다. AWQ 논문(MLSys 2024 최고 논문)은 데스크톱과 모바일 GPU 모두에서 HuggingFace FP16 구현보다 3배 이상 빠른 속도를 보고합니다.
GGUF는 알고리즘이 아니라 파일 형식입니다. 내부 알고리즘은 llama.cpp PR #1684의 k-quant 블록 체계입니다. CPU에서 실행되는 유일한 방법이므로 로컬 추론의 기본값입니다. 이에 입력할 수 있는 오픈 가중치 모델을 참조하세요.
BitsandBytes는 미리 수행하는 대신 로드 시 양자화합니다. NF4(4비트 NormalFloat)는 특징 형식이고 QLoRA 미세조정의 백본입니다. 보정 집합이 필요 없습니다.
SmoothQuant는 활성화 이상치를 가중치로 이동하여 둘 다 INT8에서 실행될 수 있습니다. 이 논문은 최대 1.56배 속도 향상과 2배 메모리 감소를 보고하며, W4A16 방법이 성능을 남겨두는 대규모 배치 서빙의 처리량을 대상으로 합니다.
FP8(W8A8)은 H100과 B200 GPU의 기본 경로입니다. 8비트에서 거의 무손실이며, 보정 골치 없고, vLLM이 직접 지원합니다.
TorchAO는 PyTorch의 자체 양자화 라이브러리로, torch.compile과 함께 작동하도록 구축되었습니다. 파이프라인이 이미 PyTorch라면 최소 저항 경로입니다.
실제로 두 가지 질문뿐입니다: 하드웨어가 실행할 수 있는가, 그리고 그것이 비용이 드는 품질을 감당할 수 있는가?
공개된 벤치마크가 실제로 무엇을 보여줄까요?
공개된 벤치마크는 4비트 양자화가 7B 모델에서 1~2% 퍼플렉시티 비용이 든다고 하고, 6비트 비용은 0.1% 미만입니다. 이 수치는 llama.cpp PR #1684(2023)에서 나왔으며, llama.cpp 유지관리자가 RTX 4080의 단일 7B 모델에서 측정했습니다. 이들은 양자화 공간에서 가장 많이 인용된 수치이며, 실제입니다. 또한 n = 1입니다.
출처: llama.cpp PR #1684(2023). 7B 모델, RTX 4080, llama.cpp 유지관리자가 측정. n = 1 모델.
비트/가중치 열에 대한 주석: 이들은 기본 k-quant 유형의 공칭 비율이고, _K 혼합은 유효 비율을 올립니다. Q2_K가 한 경우입니다. 공칭 2.5625와 6.74B 매개변수 모델에서 글의 공식을 실행하면 약 2.0GB를 얻지만, 행은 2.67GB 파일을 보고하며, 역계산하면 약 3.4 비트/가중치입니다. 이 글의 나머지는 유효 비율을 사용하며, 이들 파일 크기에서 유도됩니다.
GPU 방법 수치는 논문에서 직접 나옵니다. GPTQ는 A100에서 FP16 대비 대략 3.25배 최종 추론 속도 향상을 보고하고 A6000에서 ~4.5배, 175B 모델을 약 4 GPU-시간에 3~4비트로 양자화합니다. AWQ는 "데스크톱과 모바일 GPU 모두에서 Huggingface FP16 구현보다 3배 이상 빠름"과 함께 TinyChat을 통한 모바일 GPU의 첫 번째 70B Llama-2 배포를 보고합니다. 부정확한 정밀도로 수치를 의역하는 대신 논문의 표현을 인용합니다.
여기서의 원래 기여는 산술입니다. 가중치에 대한 메모리는 다음과 같습니다: 가중치(GB) ≈ 매개변수(B) × 비트/가중치 ÷ 8. 문제는 어느 비트/가중치 수치를 입력하는지입니다. PR #1684는 기본 k-quant 유형(Q4_K = 4.5)의 비율을 공개하고, _S / _M / _L 혼합은 그 기본 비율보다 높게 앉습니다. 주의 및 피드포워드 텐서에 추가 비트를 건네주기 때문입니다. 그래서 우리는 PR 자체가 공개한 파일 크기에서 유효 비율을 유도했으며, 실제로 6.74B 매개변수인 7B 모델에서: Q2_K는 2.67GB에서 약 3.4 bpw로 역계산, Q4_K_S는 3.56GB에서 약 4.5로, Q6_K는 5.15GB에서 약 6.6으로. Q4_K_M은 약 4.8에 착지합니다.
이것이 헤드라인 수치를 바꿉니다. 70B 모델 Q4_K_M에서: 70 × 4.8 ÷ 8 = 42GB. 대부분 게시물은 35GB를 말합니다. 그들은 4.0 bpw를 사용하고 블록 척도 오버헤드를 완전히 건너뜁니다. 교차 확인은 한 클릭입니다: Llama-3.3-70B-Instruct-Q4_K_M.gguf는 HuggingFace의 bartowski, lmstudio-community 및 second-state 저장소에서 42.5GB로 배송됩니다. 우리는 그 기초 위에 VRAM 테이블 아래의 모든 셀을 다시 계산했습니다.
이들 수치에 대한 우리의 읽음: Q6_K(5.9110)와 F16(5.9066) 사이의 퍼플렉시티 격차는 0.0044이며, 이는 동일한 기본 모델의 서로 다른 두 미세조정 사이의 격차보다 작습니다. 이것이 "그냥 Q4_K_M 또는 Q5_K_M을 사용하세요"가 실제 하드웨어와의 접촉을 견디는 조언인 이유입니다. ms/token 열은 또한 Q2_K가 Q4_K_S(둘 다 15.5ms/token)보다 속도 향상을 얻지 못하면서 0.75 퍼플렉시티 비용이 든다는 것을 보여줍니다. Q2_K는 표에서 최악의 거래입니다.
...