q8_0이면 거의 공짜라는 통념, LocalLLaMA가 깨뜨린 KV 캐시 데이터

왜 이 글이 Reddit에서 의미 있었나

이 포스트가 먹힌 이유는 로컬 LLM 사용자들이 거의 상식처럼 반복하던 말을 정면으로 건드렸기 때문이다. q8_0 KV cache는 사실상 무손실이라는 말이다. Localbench 글은 이걸 감으로 말하지 않고 데이터로 바꿨다. 그래서 LocalLLaMA에서도 “차트 하나 더 나왔다”가 아니라 “메모리 절약 기본값을 다시 생각해야 할 수 있다”는 반응이 나왔다. 크롤링 시점 스레드는 324점, 58개 댓글이었다. 방법론 글치고는 꽤 강한 반응이다.

측정 방식이 깔끔했다

이 글이 설득력을 얻은 이유는 실험 구성이 단순했기 때문이다. 같은 BF16 GGUF를 같은 머신에서 세 번 불러오고, 바뀌는 변수는 KV cache precision만 f16, q8_0, q4_0로 바꿨다. 데이터셋은 약 25만 토큰, 범주는 코딩, 일반 대화, tool calling, science, 비라틴 문자, 긴 문서까지 6개다. 지표는 f16 cache 기준과의 token-by-token KL divergence다. 또 llama.cpp에 최근 들어간 TurboQuant 계열 attention rotation이 켜진 상태라고 적었다. 즉 예전 환경의 낡은 기준이 아니라, 실제 최신 로컬 추론 스택에 더 가까운 상태를 보려 했다는 뜻이다.

어디서 차이가 크게 났나

가장 눈에 띄는 수치는 Gemma 쪽이다. 글은 Gemma 31B의 q8_0 cache를 KL 0.108, Gemma 4 26B A4B를 0.377로 적는다. q4_0에서는 후자가 KL 1.088, 68.0% top-1까지 간다. 반면 Qwen은 훨씬 안정적이다. 테스트된 두 Qwen 모델은 q8_0에서 모두 KL 0.04 이하, q4_0도 전체적으로 0.087~0.117 밴드에 머문다고 한다. 물론 긴 문서 쪽 손실은 커지지만, 그래도 “모든 모델에서 q8_0은 거의 공짜”라는 식의 단일 규칙이 틀렸다는 데는 충분한 수치다. 모델 아키텍처와 cache 민감도가 함께 움직인다는 얘기다.

댓글이 보탠 맥락

댓글도 꽤 좋았다. 상위 댓글 하나는 Gemma 열화가 SWA cache를 계속 양자화하는 결정과 연결될 수 있다고 짚으며, 그 부분만 고정 정밀도로 두면 어떨지 궁금하다고 했다. 또 다른 댓글은 llama.cpp의 attention rotation 구현 배경을 바로잡았다. 단순히 “어디에서 영감을 받아서 들어왔다”는 식으로 보기보다, 프로젝트 내부의 더 긴 논의 맥락을 봐야 한다는 것이다. 이게 바로 LocalLLaMA가 잘할 때 나오는 흐름이다. 벤치마크를 끝맺음이 아니라 구현 분석의 출발점으로 다룬다. 그래서 이 글은 그래프 모음이 아니라, 실제 VRAM과 품질 사이에서 타협하는 사람들에게 바로 닿는 운영 메모에 가깝다.

출처: Localbench benchmark post · Reddit 토론