4비트 vs 8비트 양자화, 4비트가 약 29% 더 빠른 이유 (직접 측정)

양자화는 모델 가중치를 더 적은 비트로 줄여 같은 모델을 더 적은 메모리에서 돌리는 기술이다. 직접 재 보면 의외로 4비트(Q4_K_M)가 8비트(Q8_0)보다 토큰 생성이 약 29% 더 빠르고, 품질 손실은 perplexity(모델이 다음 단어를 얼마나 헷갈리는지 재는 지표) 기준 약 3~5%에 그친다. 8비트는 거의 무손실(1% 미만)이지만 더 느리고 메모리를 더 먹는다.

한 줄 요약: 대부분의 로컬 사용에서 4비트(Q4_K_M)가 속도·메모리·품질의 균형점이고, 8비트는 VRAM이 남고 정밀도가 중요할 때만 쓴다.

왜 4비트가 8비트보다 빠를까?#

직관과 반대지만 사실이다. LLM의 토큰 생성은 메모리 대역폭에 묶인다. GPU는 토큰마다 가중치를 VRAM에서 읽어오는 데 대부분의 시간을 쓰고, 곱셈-덧셈 연산 자체는 한가하다. 그래서 파라미터당 비트 수가 적을수록 토큰마다 읽을 바이트가 줄어 생성이 그만큼 빨라진다. 8비트는 파라미터 하나에 1바이트, 4비트는 약 0.5바이트만 읽으니 대략 절반의 데이터만 오가는 셈이다.

llama.cpp 공식 벤치(Llama 3.1 8B)에서 Q8_0은 Q4_K_M보다 생성이 약 29% 느리고, Q5_K_M은 약 7%만 느리다. 이 비율은 하드웨어와 무관하다 — RTX 4090이든 M3 Max든 병목이 "토큰당 읽는 바이트"로 같기 때문이다.

(주의: GPU 서빙에서 4비트가 빠르려면 Marlin·Triton 같은 최적화 커널이 필요하다. 없으면 역양자화 오버헤드로 오히려 느려질 수 있다.)

Llama 3.1 8B 기준 정밀도별 크기·속도·품질 (llama.cpp/perplexity 측정) · columns: 정밀도, 비트/파라미터, 파일 크기, 생성 속도, 품질 손실(perplexity) · 출처 Hax hax.moche.ai/p/1015?ref=ai_answer

Llama 3.1 8B 기준 정밀도별 크기·속도·품질 (llama.cpp/perplexity 측정) · columns: 정밀도, 비트/파라미터, 파일 크기, 생성 속도, 품질 손실(perplexity) · 출처 Hax hax.moche.ai/p/1015?ref=ai_answer

정밀도 | 비트/파라미터 | 파일 크기 | 생성 속도 | 품질 손실(perplexity)
FP16 | 16비트 | 약 16GB | 기준(가장 느림) | 0% (기준)
Q8_0 | 8비트 | 약 8.5GB | Q4보다 약 29% 느림 | 1% 미만
Q5_K_M | 약 5.5비트 | 약 5.7GB | Q4보다 약 7% 느림 | 약 1~2%
Q4_K_M | 약 4.5비트 | 약 4.1GB | 가장 빠름 | 약 3~5%
Q2_K | 약 2.6비트 | 약 2.8GB | 빠름 | 약 8% (품질 절벽)

목차

품질은 얼마나 깎이나?

그럼 항상 4비트가 정답일까?

직접 측정하려면?

참고 링크

품질은 얼마나 깎이나?#

생각보다 적게 깎인다. Q8_0은 FP16 대비 1% 미만으로 사실상 무손실이고, Q4_K_M은 약 3~5%다. 한 직접 측정에서는 7.2GB 모델을 Q4_K_M으로 4.1GB(약 43% 감소)로 줄였는데 perplexity 손실이 0.51%에 불과했다. Q4와 Q8의 perplexity 차이는 약 0.05로, 대화에서 체감되지 않는 수준이다.

단 2비트(Q2_K)로 내리면 손실이 약 8%로 튀는 품질 절벽이 나타난다. 아래 그림처럼 4비트까지는 손실이 완만하게 늘다가 2비트에서 급격히 꺾인다. 그래서 실용적 바닥은 보통 4비트로 잡는다.

중요한 단서: perplexity는 무딘 잣대다. 코딩·도구호출·롱컨텍스트는 perplexity가 시사하는 것보다 더 빨리 무너지는 경향이 있으니, 내 실제 작업으로 확인해야 한다.

그럼 항상 4비트가 정답일까?#

핵심 규칙 하나: 같은 메모리라면 큰 모델을 낮은 정밀도로 돌리는 게 작은 모델을 높은 정밀도로 돌리는 것보다 거의 항상 낫다. 4비트 70B가 8비트 8B를 사실상 모든 벤치에서 이긴다(메모리는 2배가 안 됨).

또 손실은 모델 크기에 반비례한다 — 70B는 4비트로도 FP16과 거의 같지만, 3B는 4비트에서 환각이 눈에 띄게 는다. 작은 모델일수록 8비트가 안전하고, 큰 모델일수록 4비트가 거의 공짜다. 코딩은 구조 패턴이 양자화에 강해 Q4_K_M에서도 HumanEval·MBPP 저하가 2~3%에 그친다.

직접 측정하려면?#

남의 표 말고 내 머신에서 재라. 아래 순서로 속도와 품질을 각각 실측하면 된다.

속도: ollama run 모델:q4_K_M --verbose 와 :q8_0 을 같은 프롬프트로 돌려 끝의 eval rate(tokens/s)를 비교한다.

품질: llama.cpp의 llama-perplexity -m 모델.gguf -f wiki.test.raw 로 같은 텍스트에서 perplexity를 재 정밀도별로 비교한다.

4비트 정확도를 더 끌어올리려면 단순 RTN(반올림) 대신 AWQ나 GPTQ 양자화를 쓴다(보정 데이터로 약 98.9% 정확도 회복).

빠른 결정 기준: VRAM이 모델 FP16 크기 이상이면 FP16, 절반 이상이면 Q8_0, 1/3 이상이면 Q4_K_M, 그 미만이면 더 작은 모델을 Q4_K_M으로.

참고: 수치는 2025~2026년 llama.cpp/커뮤니티 측정(Llama 3.1 8B, 짧은 컨텍스트 기준)이며 모델·아키텍처·보정 데이터·백엔드에 따라 달라진다. 작은 모델일수록 4비트 손실이 커진다. 정확한 값은 본문 방법으로 직접 측정하라. 분기별로 갱신한다.

참고 링크#

llama.cpp(GGUF 양자화·벤치)

4bit vs 8bit 분석(SitePoint)

Q4~Q8 품질 손실 수치

AWQ 논문(Lin et al., 2023)

GPTQ 논문(Frantar et al., 2022)