인공지능/논문 리뷰 or 진행

R-KV: Redundancy-aware KV Cache Compression for Reasoning Models

이게될까 2026. 8. 1. 01:36
728x90
728x90

https://neurips.cc/virtual/2025/loc/san-diego/poster/120110

뉴립스 2025 포스터네요 

중요하면서도 다른 토큰과 중복되지 않는 정보를 선택적으로 KV Cache에 남기는 학습 없는 압축 방법이다. 

여기서도 Reasoning model의 토큰 생성 문제를 말합니다. 

그러나 SnapKV와 같은 방법들은 Attention을 통해 과거 토큰의 중요도를 따지는데 동일한 문장을 여러번 반복하면 과거 문장들에 높은 attnetion을 줄 수 밖에 없다. 

 

이 Distill model들은 정답을 내기 전에 중간 계산, 자기 검증, 재검토, reflection, 반복 등을 통해 출력이 엄청나게 늘어나게 된다. 

그럼 KV cache만으로도 엄청난 저장 공간이 추가되게 된다. 

여기서 중복되는 정보가 계속 남는다는 것을 알 수 있다. => Attention이 높다는 것이 사실과 새로운 정보를 제공한다는 것은 동일하지 않다. 

B_Budget : 이전 토큰 중 선택된 KV를 저장하는 고정 cache 

B_buffer : 새롭게 생성되는 토큰들의 KV를 임시 저장하는 버퍼 

가장 최근 8토큰은 무조건 유지 => 나머지 후보 토큰들의 중요도와 중복도를 계산 => 캐시 버짓에 맞게 상위 토큰만 선택 => 선택되지 않은 KV는 제거 => 다시 128토큰 생성 

=> 버짓 근처에서 유지하게 됨 

토큰의 중요도는 최근 8토큰이 얼마나 해당 토큰에 attention하는지를 이용해 계산함 
- 최근 생성된 토큰이 과저의 특정 토큰을 계속 참조하면 그 과거 토큰은 앞으로도 필요할 가능성 높음 

각 토큰의 키 벡터 사이의 코사인 유사도를 계산하여 특정 토큰의 키 벡터가 다른 많은 토큰과 유사하다면 그 토큰은 이미 캐시에 존재하는 정보와 겹친다고 봄 
그래도 최근 유사 토큰은 보호하여 reasoning state를 유지함 

중요도와 중복도를 결합하여 진행함 

생각보다 결과가 엄청 좋습니다.

특히 라마 8B의 압축률은 심각하네요 .... 

FullKV보다 성능이 높아지는 이유에서 저자는 노이즈와 같은 상태들을 제거하여 잘못된 추론으로 끌려가는 현상을 줄인다고 설명한다. 

 

메모리 처리량도 비교해보면 R-KV는 버짓을 유지하니 메모리가 선형적으로 증가하지 않고, 배치를 더 키울 수 있게 되며 디코딩타임도 조금 감소하게 되네요. 

 

흠 성능도 올라가면서 KV 캐시 사용량 10%까지도 줄일 수 있는 이 논문이 상당히 무섭네요..... 

뭐 다른 벤치마크에서는 30%까지 가야 본문치는 실험도 있긴 하지만.. 

 

해결하려는 문제 DeepSeek-R1 계열 reasoning model은 긴 Chain-of-Thought와 반복적인 자기 검증을 생성한다.
이로 인해 생성 길이에 비례해 KV cache가 커지며, GPU 메모리 사용량과 inference 비용이 급증한다.
핵심 관찰 Reasoning 출력은 정답 해설보다 약 8–14배 길고, 1-/2-gram 반복 빈도도 약 5–7배 높다.
즉, 긴 reasoning trace의 상당 부분은 새로운 정보가 아니라 반복적인 reflection과 재계산이다.
기존 방법의 한계 SnapKV와 같은 attention 기반 방법은 attention score가 높은 토큰을 남긴다.
그러나 반복된 문장들은 서로 유사하기 때문에 높은 attention을 받을 수 있다.
그 결과 중요한 문제 조건이나 중간 계산은 제거되고, “Wait”, “따라서 답은 3이다”와 같은 반복 구간이 과도하게 보존된다.
논문의 핵심 주장 Attention이 높다는 것과 새로운 정보를 제공한다는 것은 다르다.
따라서 KV cache에는 단순히 중요한 토큰이 아니라, 중요하면서도 다른 토큰과 중복되지 않는 정보를 남겨야 한다.
제안 방법 R-KV는 decoding 중 KV cache를 반복적으로 압축하며, 각 토큰의 ① attention 기반 중요도와 ② Key vector 기반 중복도를 함께 계산하여 보존할 토큰을 선택한다.
별도 학습이나 모델 파라미터 수정은 필요 없다.
Decoding-time 압축 방식 고정 크기의 기존 cache B_budget와 새 토큰 B_buffer를 사용한다. 일정 길이의 토큰이 생성될 때마다 기존 cache와 buffer를 합치고, 최근 observation token 일부는 무조건 유지한 뒤 나머지를 점수에 따라 pruning한다.
기본 설정은 buffer 128개, observation token 8개이다.
중요도 계산 최근 observation token들이 과거 Key token에 부여하는 attention weight를 이용한다.
최근 토큰들이 자주 참조하는 과거 토큰일수록 높은 중요도 (I_i)를 가진다.
GQA에서는 공유 KV head에 속한 여러 query head의 attention을 max pooling하여 중요한 신호가 평균화되어 사라지는 것을 방지한다.
중복도 계산 동일 attention head 내 Key vector 간 cosine similarity를 계산한다.
다른 많은 Key와 유사한 토큰은 정보가 반복되어 있다고 보고 높은 중복도 (R_i)를 부여한다.
단, 유사 토큰 중 가장 최근의 β개는 현재 reasoning state를 반영할 수 있으므로 보호한다.
최종 선택 기준 . 중요도가 높을수록 점수가 증가하고, 중복도가 높을수록 감소한다.
실험에서는 λ=0.1이 가장 좋았다. 중요도만 사용하거나 중복도만 사용하는 경우 모두 성능이 크게 하락했다.
직관적 의미 제한된 cache에 같은 결론을 반복한 토큰 여러 개를 저장하는 대신, 문제 조건·중간 계산·수정된 판단·최근 결론처럼 서로 다른 역할을 하는 정보를 골고루 보존한다.
실험 모델 및 데이터 DeepSeek-R1-Distill-Llama-8B, DeepSeek-R1-Distill-Qwen-14B를 사용하고, MATH-500과 AIME 2024에서 평가했다.
비교 대상은 모든 KV를 저장하는 FullKV와 attention 기반 SnapKV이다.
정확도 결과 R1-Llama-8B는 MATH-500에서 약 34%, AIME 2024에서 약 10%의 KV cache만으로 FullKV 수준의 성능을 달성했다.
AIME 2024에서는 약 16% budget에서 FullKV 대비 약 105% 성능을 기록했다.
R1-Qwen-14B도 AIME 2024에서 약 25% budget으로 FullKV에 근접하고, 33% budget에서 FullKV를 넘어섰다.
Baseline 대비 효과 동일 KV budget에서 SnapKV보다 최대 약 40%p 높은 정확도를 보였다.
특히 reasoning trace가 긴 AIME 2024에서 성능 격차가 크게 나타났다.
FullKV보다 좋아질 수 있는 이유 FullKV에는 잘못된 가설, 오래된 계산, 반복적인 자기 의심도 모두 남는다.
R-KV는 이러한 상태를 일부 제거하여 모델이 과거의 잘못된 reasoning에 다시 끌려가는 현상을 줄이는 context denoising 또는 inference-time regularization 역할을 할 가능성이 있다.
다만 논문에서 이를 직접 인과적으로 검증하지는 않았다.
메모리 효과 고정 cache budget을 사용하므로 FullKV와 달리 생성 길이가 증가해도 KV 메모리가 선형으로 증가하지 않는다.
10% budget 설정에서 약 90% KV cache 메모리 절감을 달성했다.
처리량 효과 16K 생성에서 10% budget을 사용하면 FullKV보다 약 9배 큰 batch size, 약 6.6배 높은 throughput을 지원했다.
고정 budget 1,024에서는 최대 약 13.4배 큰 batch size와 9.2배 throughput을 기록했다.
무엇을 압축하는가 생성되는 reasoning token 자체를 줄이는 방법은 아니다.
모델은 여전히 긴 CoT를 생성하지만, 그 과정에서 attention이 참조하는 과거 Key/Value 상태만 선택적으로 제거한다.
따라서 output token 비용이나 생성 step 수보다는 KV 메모리와 attention 연산량을 줄인다.
주요 기여 ① reasoning model의 KV 압축 문제를 중복 정보 보존 문제로 재정의,
② importance와 redundancy를 결합한 decoding-time eviction 제안,
③ training-free·model-agnostic 방식으로 높은 압축률과 reasoning 성능 유지,
④ LLM serving과 RL rollout에서 활용 가능한 효율성 입증
한계 수학 reasoning 데이터셋과 두 개의 DeepSeek-R1 distilled 모델에 평가가 제한되어 있다.
중복도 계산은 O(B_{budget}^2) 복잡도를 가진다. 또한 Paged Attention 및 기존 serving framework와의 통합, KV memory 재할당 비용 등 실제 시스템 구현상의 문제가 남아 있다.
최종 해석 이 논문은 “과거 토큰을 얼마나 많이 저장할 것인가”보다 “제한된 cache에 어떤 서로 다른 정보를 남길 것인가”가 더 중요하다고 주장한다.
Reasoning trace의 반복성을 명시적으로 고려하면 전체 KV cache의 일부만으로도 추론 능력을 거의 보존할 수 있다는 것이 핵심이다.
더보기

1. 코딩·에이전트에서도 유사한 연구가 있는가?

있다. 특히 2025년 말부터 2026년 사이에, R-KV처럼 일반적인 attention score만 사용하지 않고 도메인 특유의 중요도·중복성을 이용하는 연구들이 등장했다. 다만 R-KV가 생성 중인 reasoning trace의 KV를 decoding 단계에서 압축한다면, 코딩·에이전트 연구는 주로 코드베이스, 도구 실행 기록, 스크린샷, 대화 이력과 같은 입력 및 trajectory context를 압축한다는 차이가 있다.

CodeComp: Structural KV Cache Compression for Agentic Coding Fault localization, patch generation 등 coding agent Attention만 사용하면 call site, branch condition, assignment 같은 구조적으로 중요한 코드를 제거할 수 있다고 지적한다. Joern으로 추출한 Code Property Graph 구조 정보를 KV 선택 prior로 활용한다. Training-free이며 SGLang 기반 coding pipeline에 통합한다. 코딩 분야에서 가장 직접적인 대응 연구다. R-KV가 의미적 중복성을 추가한다면, CodeComp는 프로그램 구조적 중요성을 추가한다. 다만 주 대상은 긴 코드 입력 context이지, 생성된 code reasoning trace의 반복성은 아니다. (arXiv)
SideQuest: Model-Driven KV Cache Management for Long-Horizon Agentic Reasoning Deep research, browsing, tool-calling 등 장기 agent task 고정 attention heuristic 대신, reasoning model 자체가 현재 context에서 더 이상 필요 없는 구간을 판단해 삭제한다. Memory 관리 작업은 main reasoning과 병렬인 auxiliary thread에서 수행한다. R-KV보다 상위 수준의 semantic garbage collection이다. R-KV는 토큰별 수치 점수를 사용하지만 SideQuest는 agent가 context의 미래 유용성을 직접 추론한다. Peak KV 사용량을 56–65% 줄이고, SGLang 실험에서 최대 throughput을 약 83.9% 높였다. (arXiv)
GUI-KV GUI agent의 연속 스크린샷과 action history 현재 screenshot에서 중요한 visual token은 hidden-state norm으로 보강하고, 이전 screenshot과 중복되는 visual KV는 key-subspace projection으로 제거한다. R-KV의 importance + redundancy 구성을 GUI의 공간적 중요도와 시간적 중복성으로 바꾼 형태다. 10–20% 수준의 cache budget에서도 full-cache에 근접하며, 5개 screenshot 조건에서 decoding FLOPs를 38.9% 줄였다. (arXiv)
ST-Lite Long-horizon GUI agent UI component의 공간적 saliency와 trajectory 내 반복 screenshot의 semantic redundancy를 함께 계산한다. GUI-KV와 마찬가지로 R-KV의 핵심 아이디어를 agent trajectory에 적용한 사례다. 10–20% KV budget에서 약 2.45배 decoding acceleration을 보고한다. (arXiv)
EpiCache 장기 대화형 assistant 및 multi-turn QA 대화 이력을 semantic episode로 clustering하고, 질의와 관련된 episode별 KV를 보존한다. Layer별 eviction 민감도에 따라 budget도 다르게 배분한다. 개별 토큰 중복성보다 대화 주제 단위의 다양성·관련성을 보존한다. 4–6배 압축에서 near-full-KV 정확도를 유지하고 latency를 최대 2.4배 줄였다. (arXiv)
Continuum 도구 호출을 포함하는 multi-turn agent serving Agent가 tool을 실행하는 동안 KV cache를 바로 버리지 않고, 예상 재사용 가치에 따라 TTL 동안 GPU에 유지한다. 압축 알고리즘이라기보다 cache scheduling/reuse 연구다. SWE-Bench 등의 agent workload에서 평균 job completion time을 8배 이상 개선했다고 보고한다. (arXiv)

가장 가까운 논문을 고르면

  • 코딩: CodeComp
  • 일반적인 장기 agent reasoning: SideQuest
  • GUI agent: GUI-KV 또는 ST-Lite

특히 CodeComp와 GUI-KV는 R-KV와 매우 유사한 연구 흐름을 보인다.

[
\text{일반 attention importance}
+
\text{도메인 특화 신호}
]

  • R-KV: attention 중요도 + reasoning token 중복도
  • CodeComp: attention 중요도 + code structure
  • GUI-KV: attention 중요도 + spatial saliency + temporal redundancy
  • EpiCache: attention/관련성 + episode structure

따라서 최근 연구 흐름은 “모든 task에 동일한 KV eviction rule을 적용하는 대신, task-specific structure를 이용해 무엇을 기억할지 결정하자”로 이동하고 있다고 볼 수 있다.

다만 생성 중인 코딩 CoT나 code token의 반복성을 R-KV처럼 직접 제거하는 연구는 상대적으로 덜 탐색되어 있다. CodeComp도 주로 코드베이스 입력의 구조적 중요성에 집중한다. 이 지점은 아직 충분한 연구 공간이 있다.


2. R-KV에서 시간은 왜 생각보다 적게 줄었는가?

맞다. R-KV는 KV memory를 최대 90% 이상 줄이지만, 단일 응답의 생성 시간은 그만큼 줄지 않는다.

논문의 batch size 1 결과는 다음과 같다.

8K 107.30초 100.60초 6.2%
16K 234.65초 201.18초 14.3%

즉, 90% memory saving이 90% latency reduction으로 이어지는 것이 아니다. 논문의 큰 수치인 6.6배 또는 9.2배 throughput 향상은 한 요청이 6–9배 빨라졌다는 의미가 아니라, 절약한 메모리로 훨씬 큰 batch를 동시에 처리할 수 있다는 의미다.


원인 1. 생성하는 토큰 수는 전혀 줄지 않는다

R-KV는 reasoning trace 자체를 압축하지 않는다.

예를 들어 모델이 16,000 tokens을 생성한다면:

  • FullKV: 16,000번 autoregressive decoding
  • R-KV: 동일하게 16,000번 autoregressive decoding

R-KV가 줄이는 것은 각 step에서 참고하는 과거 KV의 양이다. 따라서 다음 연산은 그대로 수행된다.

  • 모든 Transformer layer의 forward
  • Q/K/V projection
  • MLP/FFN
  • normalization
  • residual connection
  • vocabulary logits 계산
  • sampling
  • 16,000회의 순차적 token generation

즉,

[
\text{전체 시간}

\text{Attention 시간}
+
\text{나머지 모델 연산}
+
\text{압축 오버헤드}
]

R-KV가 줄이는 것은 이 가운데 주로 Attention 시간뿐이다.


원인 2. Attention은 전체 decoding 연산의 일부일 뿐이다

KV cache가 90% 줄어도 다음 연산량은 거의 변하지 않는다.

  • MLP/FFN matrix multiplication
  • attention projection
  • output projection
  • LM head
  • 모델 weight 로딩

특히 batch size 1에서는 GPU가 매 token마다 거대한 모델 weight를 메모리에서 읽는 비용이 크다. KV cache를 줄여도 model weight bandwidth와 FFN 비용은 그대로 남는다.

Amdahl’s law로 생각하면 이해하기 쉽다. 예를 들어 전체 시간 중 KV attention이 20%이고 이를 10배 가속해도,

[
\text{Speedup}

\frac{1}{0.8+0.2/10}
\approx 1.22
]

전체 시간은 약 18% 정도만 감소한다. 이 수치는 설명을 위한 예시이지만, R-KV의 16K 결과인 약 14% 감소와 같은 방향을 보인다.


원인 3. R-KV 자체에도 압축 계산 비용이 있다

R-KV는 128개 토큰을 생성할 때마다 다음 작업을 수행한다.

  1. 최근 query와 cache 사이 attention 중요도 계산
  2. Key vector normalization
  3. 모든 Key 쌍의 cosine similarity 계산
  4. 중복도 softmax 계산
  5. importance와 redundancy 결합
  6. Top-k token 선택
  7. 선택된 KV를 새로운 cache로 복사

특히 redundancy 계산은 budget (B)에 대해

[
O(B^2)
]

복잡도를 가진다.

따라서 attention 대상이 줄면서 얻는 시간 이득 중 일부가 similarity 계산, sorting, indexing, memory copy에 의해 상쇄된다. 논문도 R-KV가 SnapKV보다 약간의 추가 계산을 갖지만, throughput 차이는 1% 미만이라고 설명한다.


원인 4. GPU kernel이 압축된 KV 구조를 충분히 활용하지 못할 수 있다

이론적으로 KV가 줄면 attention 연산도 크게 줄어야 한다. 그러나 실제 구현에서는 다음 문제가 생긴다.

  • KV 위치가 불규칙해져 contiguous memory access가 어려움
  • pruning 후 KV tensor 재배치 필요
  • cache allocation/deallocation 발생
  • PagedAttention block 구조와 충돌
  • 기존 FlashAttention/vLLM kernel이 동적 eviction을 직접 지원하지 않음
  • Python 또는 일반 PyTorch 연산으로 scoring하면 kernel launch overhead 증가

R-KV 논문도 PagedAttention 호환성과 serving framework의 native compression interface 부재를 주요 한계로 명시한다. 압축 전 cache를 해제하고 압축 cache를 다시 할당해야 한다면, memory management 비용이 실제 acceleration을 상쇄할 수 있다.

이 때문에 최근 LongFlow 같은 연구는 압축 알고리즘 자체뿐 아니라 FlashAttention, importance scoring, eviction을 하나의 custom kernel로 fuse하는 방향을 택한다. (arXiv)


원인 5. R-KV의 주요 목표는 latency보다 throughput이다

R-KV의 가장 큰 장점은 한 요청을 빠르게 끝내는 것이 아니라, 같은 GPU에 더 많은 요청을 올리는 것이다.

16K 조건을 보면:


FullKV 30 347 tok/s
R-KV, 10% budget 271 2,300 tok/s
R-KV, fixed 1,024 402 3,189 tok/s

따라서:

  • 10% budget: batch 약 9배, throughput 약 6.6배
  • fixed 1,024: batch 약 13.4배, throughput 약 9.2배

이 큰 이득은 각 응답이 9배 빨라서가 아니라, 9–13배 많은 응답을 병렬로 처리하기 때문이다.

즉, R-KV는 다음 환경에서 특히 유리하다.

  • RL rollout처럼 수백 개 reasoning sample을 동시에 생성
  • Best-of-N 또는 pass@k sampling
  • 고동시성 LLM serving
  • 동일 모델에서 여러 agent를 병렬 실행
  • GPU memory 때문에 batch size가 제한되는 환경

반대로 사용자가 한 명이고 batch size가 1이라면, 체감 latency 개선은 제한적이다.


3. 핵심 결론

R-KV의 성능을 정확히 해석하면 다음과 같다.

R-KV는 “생각을 더 빨리 끝내게 하는 방법”이라기보다, “긴 생각을 훨씬 적은 메모리로 수행하여 더 많은 생각을 동시에 실행하게 하는 방법”이다.

단일 요청 latency를 크게 줄이려면 KV cache compression만으로는 부족하다. 다음 요소가 함께 필요하다.

[
\text{KV compression}
+
\text{CoT token 감소}
+
\text{optimized sparse/compact attention kernel}
+
\text{large-batch scheduling}
]

따라서 코드·에이전트 연구에서 가장 유망한 방향은 R-KV식 domain-aware KV selection과 실제 trajectory/token 길이 감소를 결합하는 것이다. 예를 들어 coding agent에서는 반복되는 tool output과 실패 로그는 제거하면서, call graph·수정 이력·test failure evidence는 유지하고, 동시에 불필요한 reflection 생성 자체도 억제하는 구조가 더 큰 end-to-end 시간 절감을 만들 수 있다.

728x90