KV²가 전체 문맥 재계산 없이 KV 캐시를 압축한다

KV$^2$: A Self-Refining KV Cache

arXiv2610.03198v1

Johannes Wesch2026-10-02

무엇인가

긴 문맥 LLM에서 KV 캐시는 문맥 길이에 비례해 메모리를 차지하고, 하나의 프리필된 문맥을 이후 여러 질의가 재사용하는 환경에서는 비용을 지배한다. 이 재사용 환경에서 질의 비의존(query-agnostic) 압축은 비용과 품질을 맞바꾼다. 가벼운 추정기는 싸지만 부정확하고, 전체 문맥 재구성 점수는 정확하지만 프롬프트 전체를 다시 처리해야 한다. 이 논문은 그 맞바꿈이 필수가 아니라고 주장한다.

어떻게 동작하나

KV²는 두 단계 선택적 재구성 파이프라인이다. 먼저 프리필된 캐시를 청크로 나눈다. 프롬프트 앞부분의 소수 sink 토큰은 그대로 유지하고, 나머지 압축 대상 부분을 크기 m(기본 4K)의 청크 C_1…C_M으로 분할한다. 1단계(질의 선택)에서는 가벼운 프록시 점수기(기본값 KeyDiff)로 각 토큰의 점수를 계산한다. 층과 KV 헤드별 점수를 평균해 토큰 수준 점수 p_i를 만들고(최댓값 집계보다 평균이 더 강했다고 밝힌다), 청크마다 상위 n_q = max(floor(ρ|C_r|), 1)개 위치를 재구성 질의 집합 Q_r로 고른다. 선택된 위치들은 연속 구간일 필요가 없다.

무엇과 다른가

2단계(캐시 점수화)는 선택된 토큰만 재구성 질의로 쓴다. 이 토큰들은 프리필된 캐시 뒤에 덧붙여지고 위치 ID도 프리필 문맥 직후로 부여되며, 전체 캐시를 볼 수 있는 새 causal forward pass에서 처리된다. 즉 은닉 상태와 질의 벡터가 문맥 전체를 조건으로 갖는다. 반면 최종 점수 추출은 현재 청크로 제한된다. 각 재구성 질의가 청크 C_r 안의 캐시 위치 i에 지불한 어텐션을 구하고, 질의들에 대한 최댓값을 그 위치의 점수로 삼는다. 최댓값을 쓰는 이유는 모든 질의가 동의할 것을 요구하지 않고 하나라도 강하게 의존하면 유지하기 위해서다. 모든 청크를 처리한 뒤 지역 점수를 전역 텐서로 모으고, sink 위치를 최대 점수로 고정한 뒤 목표 예산에 맞춰 최하위 점수 항목을 제거한다. 2단계 출력은 1단계 프록시와 같은 토큰 단위 granularity이므로 다음 패스의 프록시를 대체할 수 있고, 이것이 선택적 반복 정제가 된다. 단일 패스가 기본값이다. 프록시 패스는 문맥 길이에 선형이고 재구성 forward가 지배적 비용인데, KV²는 청크 전체가 아니라 ρ 비율만 재구성하므로 런타임과 최대 활성 메모리가 ρ에 비례한다.

어떻게 쓰나

실험은 RULER 4K/16K, LongBench, Paul Graham 에세이로 만든 Needle-in-a-Haystack에서 수행했고, 백본은 Llama-3.1-8B-Instruct와 Qwen3-8B다(부록에 Qwen2.5-7B-Instruct-1M, InfiniteBench). 비교 대상은 KeyDiff, Expected Attention, KVzip이다. RULER 16K에서 5%, 특히 2% 예산에서 KV²가 훨씬 완만하게 성능이 떨어지고, 희소 검색·집계 과제에서 이점이 가장 크다. 2% 예산에서 평균 점수가 차선 베이스라인보다 40%p 이상 높다. NIAH는 Llama-3.1-8B, 5% 고정 예산, ROUGE-2 recall 기준으로 문맥 길이와 needle 깊이가 커져도 가장 안정적이고, KeyDiff는 들쭉날쭉하며 KVzip은 긴 haystack에서 더 빨리 무너진다. LongBench 2% 예산에서 평균이 Llama에서 24.16→33.59, Qwen3-8B에서 16.59→32.97로 차선 베이스라인 대비 오른다. 5%에서는 Llama 39.91, Qwen 38.28로 경쟁 기법의 29.12, 22.61과 격차가 크다. 이득은 다중 문서 QA와 합성 검색·계수 과제에 집중되고, RepoBench-P는 예외로 넓은 재구성이 더 도움이 된다. 부록의 200K 규모에서도 Llama-3.1-8B는 세 예산 모두 최강 베이스라인을 앞서고 Qwen2.5-7B-Instruct-1M은 약간 앞선다.

전제와 한계

분석에 따르면 마스킹 기반 백엔드에서 KV²는 KVzip보다 일관되게 빠르고 최대 메모리도 적다. 청크 크기 4K가 기본인 이유는 4K 미만에서는 청크별 반복 오버헤드로 런타임이 오르고, 4K 초과에서는 재구성 집합이 청크 크기에 선형으로 커져 런타임과 최대 메모리가 늘어 가장 큰 설정은 OOM이 나기 때문이다. 품질은 청크 크기에 비교적 둔감하다. 프록시 점수기는 KeyDiff가 가장 강하고 Knorm이 근접 대안이며, CUR과 StreamingLLM은 압축이 심해질수록 빠르게 나빠져 연구된 최고 압축률에서 랜덤 프록시보다도 낮아진다. 재구성 비율은 최종 캐시 예산이 클수록 커지는 게 최적이다. Llama는 최종 예산 2%, 5%, 10%에서 각각 10%, 50%, 100% 재구성에서 RULER 점수가 최고이고 Qwen3-8B는 10%, 25%, 75%다. 반복 정제는 첫 몇 패스에서 대부분의 이득이 나오고, 초기 프록시가 약하거나 재구성 비율이 2%로 아주 작을 때 효과가 크며 이미 강하면 미미하다. 이득은 주로 런타임 비용으로 오고 최대 메모리는 크게 변하지 않는다.

개발자에게 이 논문은 하나의 프리필 문맥을 여러 질의가 재사용하는 서빙, 예컨대 장문 QA나 지속형 에이전트 문맥에서 예산을 10% 미만, 심지어 1~2%까지 낮춰야 하는 상황에 해당한다. 다음 질의를 미리 알 수 없어도 압축 캐시를 만들 수 있다는 점이 핵심이다. 다만 보고된 런타임과 최대 메모리는 압축 단계 비용이며 실제 디코딩 지연·메모리 절감이 아니다. kvpress 백엔드에서 KVzip과 KV² 모두 headwise masking으로 구현되어 캐시가 물리적으로 압축되지 않기 때문이다. 실서비스 적용에는 headwise 캐시 컴팩션, 헤드별 압축 시퀀스 길이를 허용하는 어텐션 커널, 반복 질의 서빙 파이프라인이 필요하다. 출발점으로는 청크 크기 4K, 프록시 KeyDiff, ρ를 최종 유지 비율에 맞추는 기본 설정이 제시된다.

저자들이 밝힌 한계는 세 가지다. 반복 정제를 고정 스케줄이 아니라 적응적으로 만들어야 하고, 1단계 프록시 자체를 더 강하게 만들어야 하며(내용 적응형이 구조 고정형보다 낮은 예산에서 낫다는 결과는 학습된·모델 인지 프록시의 가능성을 시사한다), 마스킹 기반 구현을 컴팩트 서빙 백엔드로 대체해야 한다. 또한 이득은 관련 근거가 희소하고 앵커처럼 뭉쳐 있을 때 가장 크고, 근거가 문맥 전반에 넓게 퍼진 경우(RepoBench-P)에는 넓은 재구성이 더 유리하다는 경계도 남는다.