Qwen3.8 27B 모델의 KV 캐시 양자화가 미치는 영향
Effects of KV Cache Quantization on Qwen3.8 27B
핵심 요약
KV 캐시 양자화가 모델 성능에 미치는 영향을 KLD로 정밀 분석한 결과, 8비트 캐시는 효율적이나 4비트 캐시는 긴 문맥에서 성능 저하가 확인됨.
- 8비트 KV 캐시 — 메모리 사용량을 절반으로 줄이면서도 성능 손실이 거의 없어 권장됨.
- 4비트 KV 캐시 — 긴 문맥에서 성능 저하가 뚜렷하며 특히 고정밀 가중치 모델에서 손실이 큼.
- 문맥 길이 영향 — 4비트 캐시 사용 시 16k~32k 토큰 구간에서 성능 저하가 15~30% 더 심화됨.
- 엔진별 차이 — llama.cpp와 ExLlamaV3는 8비트에서 우수하나 vLLM은 약간의 KLD 증가가 관찰됨.
KV 캐시 양자화는 이 바닥에서 꽤 오랫동안 "절대 하지 마라"부터 "4비트 정도면 괜찮다"까지 의견이 갈리며 뜨겁게 논쟁하던 주제야. 경험적인 증거들이 워낙 들쭉날쭉해서, 모델의 출력 분포가 얼마나 변하는지 잘 보여주는 지표인 KLD(KL 발산)를 써서 KV 캐시 양자화가 모델에 정확히 어떤 영향을 주는지 직접 측정해 보기로 했어.
llama.cpp, exllamav3, vLLM을 돌면서 16비트, 8비트, 그리고 (지원하는 경우) 4비트 KV 캐시를 적용해 총 35개의 가중치 양자화 모델을 테스트했어. 이번에는 KLD 데이터셋이랑 측정 방식도 싹 갈아엎었는데, (Qwen3.8 27B 풀 정밀도로 생성한) 에이전트식 도구 사용 데이터랑 다양한 도메인의 텍스트를 섞어서 구성했어. 현재 데이터셋은 행당 최대 64k 토큰 컨텍스트까지 커버해.
세 줄 요약:
-
8비트 KV 캐시는 아주 잘 작동해. llama.cpp랑 ExLlamaV3에서는 캐시 크기가 절반으로 줄어드는데, KLD 차이는 거의 없어. vLLM에서는 약간 차이가 나긴 하지만, VRAM 부족한 사람들에겐 여전히 훌륭한 타협점이야.
-
4비트 캐시는 영향이 꽤 커. ~Q8 가중치에서는 손실이 크지만, Q3 이하를 쓰고 있다면 고려해 볼 만할지도 몰라. 그래도 추천하진 않아.
-
4비트 캐시만 컨텍스트가 길어질수록 영향이 커져. 테스트한 긴 문서들에서 16-32k 토큰 구간의 추가 KL은 처음 4k 토큰보다 15-30% 정도 더 높았어.
관심 있으면 블로그 포스트에서 모든 데이터와 결과가 담긴 인터랙티브 차트랑 표를 확인해 봐.
숫자 읽는 법
각 양자화 모델은 양자화되지 않은 bf16 원본 모델과 토큰 단위로 비교했어. **KL 발산(KL divergence)**은 양자화 모델의 다음 토큰 확률이 원본에서 얼마나 벗어났는지를 나타내 (0이면 변화 없음). Top-1 일치율은 두 모델이 가장 확률이 높다고 판단한 토큰이 얼마나 자주 일치하는지를 의미해.
기준점을 잡으려고 llama.cpp랑 vLLM에서 양자화 안 된 모델을 각각 돌려서 비교해 봤어. KL 차이가 0.0004 정도 났는데, 이건 사실상 두 개의 (정상적인) 구현체가 부동소수점 연산 순서가 달라서 생기는 오차 수준이야. 그러니까 여기서 서로 다른 엔진에서 돌아가는 양자화 모델들의 KLD 수치를 비교해도 문제없다는 거지.
참고: exllamav3 양자화 모델은 bf16 llama.cpp 참조 로짓으로 측정했어.
가중치 양자화
KL 발산 vs 로드된 가중치 크기, 16비트 KV 캐시:





