이 논문은 LLM의 KV 캐시를 이미지 압축(JPEG) 기술의 관점으로 바라본다 — 어텐션 헤드들이 공유하는 잠재 공간을 PCA로 표현하고, 비트를 동적으로 배분하며, 엔트로피 코딩으로 마무리하는 transform coding 파이프라인으로 최대 20×(특정 상황 40×) 압축을 달성한다.
arXiv →챗봇, 코드 어시스턴트, 반복적 문서 편집 등 현대적인 LLM 사용 패턴의 공통점이 있다: 대화가 이어질수록 KV 캐시가 커진다. Llama 3.1 8B에서 1,000 토큰의 KV 캐시는 128 MiB, Llama 3.3 70B에서는 320 MiB이다. 이 캐시를 어떻게 다룰 것인가가 서빙 시스템의 핵심 병목이 되었다.
이 문제를 해결하려는 시도들은 크게 네 방향으로 나뉜다.
양자화 (KIVI, GEAR, KVQuant, FP8): KV 캐시를 저정밀도로 표현해 메모리를 줄인다. 그러나 5× 정도의 압축에서 이미 정확도 저하가 시작되며, 여러 방법을 결합해 더 높은 비율을 달성하려 하면 급격히 불안정해진다. 논문 저자들이 지적하듯, 이런 방법들은 "brittleness"를 갖고 있어 고압축 영역에서 신뢰하기 어렵다.
토큰 제거/증류 (H₂O, TOVA, DMS): 중요도가 낮은 토큰의 KV를 삭제해 캐시를 줄인다. 효율적이지만 정보 손실이 비가역적이며, 특히 "Lost in the Middle" 같은 장문 검색 태스크에서 성능이 급락한다 (H₂O 20.2, TOVA 1.2, 바닐라 99.4).
SVD 기반 압축 (xKV, SVDq, LoRC): KV 텐서의 저랭크 구조를 활용한다. 가장 자연스러운 접근이지만 프롬프트마다 SVD를 다시 계산해야 한다는 치명적 약점이 있다. 새 토큰이 디코딩되는 중에 SVD를 다시 계산하는 것은 현실적으로 불가능하다.
CacheGen: KV 캐시를 전송용으로 압축한다. 최대 8.6× 압축을 달성하지만, kvtc의 20~40× 대비 낮은 비율에서 그친다.
저자들의 핵심 통찰은 다음이다: "KV 캐시는 이미지와 같다. JPEG가 DCT로 공간적 상관성을 제거하고 비트를 배분하듯, KV 캐시의 헤드 간 상관성을 PCA로 제거하고 비트를 배분하면 되지 않을까?"
"Our Key-Value Transform Coder (kvtc) builds upon the transform-coding framework, a widely adopted methodology for designing image and video compression algorithms such as JPEG."kvtc는 JPEG 같은 이미지·영상 압축 알고리즘 설계에 폭넓게 사용되는 transform coding 프레임워크 위에 구축된다.
저자들은 먼저 흥미로운 실험을 수행한다. 같은 위치의 서로 다른 어텐션 헤드들의 키 벡터 쌍을 비교했을 때, 정렬 전(before alignment) 코사인 유사도는 0.2 이하로 매우 낮다. 그런데 Procrustes 문제를 풀어 최적 직교 행렬 R*로 한쪽을 회전시키면 유사도가 크게 올라간다.
헤드 간 코사인 유사도 (Llama 3.1 8B, Qasper 데이터셋)
Before 헤드 간 유사도 < 0.2 | After 직교 정렬 후 Keys는 크게 상승, Values는 중간 수준 상승
이 관찰은 무엇을 의미하는가? 서로 다른 어텐션 헤드의 키들이 직교 변환을 기준으로 공통된 부분 공간(subspace)에 존재한다는 것이다. 헤드들의 불일치는 키·값 프로젝션 행렬의 무작위 초기화에서 비롯된 것일 뿐, 실제 정보는 공유 공간에 있다.
보충 JPEG와의 유사성을 더 깊이 살펴보면: JPEG는 8×8 픽셀 블록에 DCT를 적용해 에너지를 저주파 계수에 집중시킨 뒤, 주파수별로 다른 양자화 스텝을 적용한다. kvtc는 모든 레이어·헤드의 KV 벡터를 이어붙인 행렬에 PCA를 적용해 분산을 앞쪽 주성분에 집중시킨 뒤, 분산 크기에 따라 다른 비트 수를 배분한다. 두 방법 모두 "상관성 제거 → 중요도 기반 비트 배분 → 무손실 엔트로피 코딩"의 세 단계를 따른다.
kvtc는 세 가지 연산 단계를 갖는다: 보정(Calibration), 압축(Compression), 복원(Decompression). 보정은 모델당 단 한 번 실행되며, 압축·복원은 추론 사이(inference phase 사이)에 실행된다.
kvtc의 수학적 핵심은 세 가지 수식으로 표현된다.
수식 (1) — Procrustes 문제: 헤드 간 정렬 가능성 검증
| 변수 | 의미 | 비고 |
|---|---|---|
Kᵢ, Kⱼ | 어텐션 헤드 i, j의 키 캐시 | 형상: [T, dhead] |
R | 직교 행렬 (회전/반사) | R⊤R = I 제약 |
‖·‖_F | Frobenius 노름 | 행렬의 모든 원소 제곱합의 루트 |
R* | 최적 정렬 행렬 | Procrustes 문제의 해 |
직관적 해설
수학적 해
수식 (2, 3) — PCA 기반 특성 비상관화
| 변수 | 의미 | 비고 |
|---|---|---|
C ∈ ℝⁿˣᵖ | 보정 데이터 행렬 | n개 토큰, p = l×h×dhead 특성 |
μ ∈ ℝᵖ | 특성별 평균 | 배치 차원에 걸쳐 계산 |
V ∈ ℝᵖˣʳ | PCA 기저 행렬 (저장됨) | 특잇값 내림차순 정렬, r ≤ p |
D ∈ ℝⁿˣʳ | 비상관화된 표현 | 주성분 좌표 |
X ∈ ℝᵐˣᵖ | 압축할 KV 행렬 | 추론 시 사용 |
직관적 해설
핵심 특성: 직교 변환과 Frobenius 노름 보존
수식 (4, 5) — DP 기반 최적 비트 배분
| 변수 | 의미 | 비고 |
|---|---|---|
qᵢ ∈ ℤ≥0 | i번째 주성분에 배분된 비트 수 | 0이면 해당 성분 삭제 |
Dq₁,...,qₖ | 각 성분을 qᵢ비트로 양자화한 D | 비트 수는 성분별로 다름 |
‖·‖²_F | Frobenius 노름의 제곱 (재구성 오차) | 최소화 목표 |
직관적 해설
DP 최적성의 핵심 논리
주성분 순서(X축)와 배분되는 비트 수(Y축)의 패턴을 시뮬레이션한다. DP 알고리즘은 분산이 지수적으로 감소하는 PCA 특성에 맞게 비트를 배분한다.
파란색: 비트 배분 곡선 | 주황 점선: 평균 비트폭 | 0비트 구간은 해당 주성분이 완전히 삭제됨
재현에 필요한 주요 설정값들을 정리한다.
| 항목 | Llama 3.1/3.3 | Mistral NeMo 12B | Qwen 2.5 R1 |
|---|---|---|---|
| 보정 토큰 수 | 160K | 160K | 200K |
| PCA 차원 상한 (r) | 10K | 10K | 8K |
| Attention sink (s) | 4 토큰 | 4 토큰 | 4 토큰 |
| Sliding window (w) | 128 토큰 | 128 토큰 | 128 토큰 |
| 압축 주기 | 16 토큰마다 | 16 토큰마다 | 16 토큰마다 |
| 보정 데이터 | FineWeb : OpenR1Math = 1:1, 문서 길이 1K~32K | ||
| PCA 알고리즘 | Randomized SVD (Halko et al., 2011), 8회 반복, H100 GPU | ||
| 보정 소요 시간 | ~10분 (H100) | ~10분 (H100) | 미공개 |
| 가능한 블록 크기 | {1, 16, 64, 256, 1024} | ||
| 가능한 양자화 타입 | None (0비트), int2, int4, fp8 (E4M3) | ||
| PCA 행렬 크기 | 모델 파라미터의 ~2.4% (Llama 3.3 70B 기준) | ||
| 엔트로피 코딩 | DEFLATE (nvCOMP, GPU 병렬) | ||
| 평가 프레임워크 | LM Evaluation Harness + RULER + Transformers 라이브러리 | ||
보충 동일한 PCA 행렬이 모든 압축 비율에서 재사용된다는 점이 중요하다. 압축 비율이 바뀌어도 보정을 다시 할 필요가 없다 — DP 비트 배분 테이블만 재계산하면 된다.
굵은 숫자 = 바닐라 모델 대비 1점 이내. CR = 압축 비율.
| 방법 | CR | GSM8K | MMLU | QASPER | LITM | RULER-VT |
|---|---|---|---|---|---|---|
| Baseline GEAR 2-bit | 5× | 52.8 | 59.6 | 40.4 | 96.9 | 99.8 |
| Baseline KIVI 2-bit | 5× | 52.8 | 59.6 | 39.1 | 88.8 | 98.9 |
| Baseline H₂O | 8× | 54.3 | 44.3 | 34.3 | 20.2 | 50.4 |
| Baseline TOVA | 8× | 54.5 | 44.8 | 38.6 | 1.2 | 99.7 |
| Baseline xKV | 1-5× | 56.6 | 59.5 | 35.6 | 99.9 | 99.8 |
| FP8 | 2× | 55.2 | 60.1 | 40.8 | 99.4 | 99.9 |
| Ours kvtc 8× | 9-10× | 57.0 | 59.8 | 40.1 | 99.3 | 99.1 |
| Ours kvtc 16× | 18-22× | 56.9 | 60.1 | 40.7 | 99.3 | 99.1 |
| Ours kvtc 32× | 34-44× | 57.8 | 60.6 | 39.4 | 99.1 | 98.9 |
| Ours kvtc 64× | 60-88× | 57.2 | 60.7 | 37.8 | 90.2 | 95.9 |
| Vanilla | 1× | 56.8 | 60.5 | 40.4 | 99.4 | 99.8 |
| 모듈 | BS=8, CTX=8K 압축 | BS=8, CTX=8K 복원 | BS=2, CTX=16K 압축 | BS=2, CTX=16K 복원 |
|---|---|---|---|---|
| PCA 투영 | 153 ms | 156 ms | 78 ms | 75 ms |
| 양자화 | 67 ms | 37 ms | 39 ms | 27 ms |
| DEFLATE | 137 ms | 64 ms | 66 ms | 36 ms |
| 전체 | 379 ms | 267 ms | 194 ms | 143 ms |
| 바닐라 재계산 TTFT | 3,098 ms | 1,780 ms | ||
| kvtc 복원 TTFT | 380 ms (8.1× 단축) | 208 ms (8.6× 단축) | ||
압축 비율 64× 조건에서 각 컴포넌트를 제거하면 얼마나 성능이 떨어지는가?
주의: sink/sliding window 압축 수치는 Figure 4 (a)(b)의 대략적 시각적 읽기값. 정확한 수치는 원본 논문 참조.
kvtc는 세 가지 실용적 시나리오에서 직접적인 가치를 제공한다.
대화형 LLM 서빙: 코드 어시스턴트, 챗봇처럼 긴 대화 히스토리를 반복 재사용하는 시스템. kvtc로 압축된 캐시를 HBM/DRAM에 더 오래 보존하면 캐시 히트율이 높아져 TTFT를 크게 단축할 수 있다.
분산 LLM 서빙: 프리필-디코드 분리 아키텍처(prefill-decode disaggregation)에서 노드 간 KV 캐시 전송 비용이 20×로 줄어든다. 네트워크 대역폭이 병목인 환경에서 특히 효과적이다.
추론 모델 (R1 계열): DeepSeek-R1 같은 긴 사고 체인(thinking chain)을 생성하는 모델은 KV 캐시가 특히 크다. kvtc 8×에서 정확도 손실 없이 Qwen 2.5 R1의 AIME, LiveCodeBench 성능을 유지했다.
논문은 여러 미래 방향을 명시적으로 제시한다: 주성분 공간에서 직접 추론하는 방법 탐색, kvtc를 token eviction 방법(TOVA 등)과 결합, Multi-head Latent Attention(DeepSeek-V2)의 잠재 상태 압축에 적용, 커널 융합과 계층적 PCA로 레이턴시 개선, 200K 토큰 이상의 대규모 보정으로의 확장.
xKV, SVDq 같은 기존 SVD 기반 방법은 각 프롬프트마다 SVD를 새로 계산한다. 이는 프리필 최적화에는 효과적이지만, 디코딩 중 새로 생성된 토큰에 적용하기 위해 SVD를 다시 계산하는 것은 현실적으로 불가능하다 — 매우 느리고 계산 비용이 크다.
"Unlike prior SVD-based methods that calculate a separate decomposition for each prompt, we compute the KV cache projection matrices once using a calibration dataset C, and reuse them across all requests at inference time."기존 SVD 기반 방법들이 각 프롬프트마다 별도 분해를 계산하는 것과 달리, 우리는 보정 데이터셋을 사용해 단 한 번만 투영 행렬을 계산하고, 추론 시 모든 요청에 재사용한다.
핵심 통찰은 헤드 간 공통 잠재 공간의 존재가 입력 데이터에 관계없이 성립한다는 것이다 — 이는 모델 파라미터의 초기화 방식에서 비롯된 구조적 성질이기 때문이다.
RoPE (Rotary Positional Embedding)는 토큰의 위치 정보를 키 벡터에 회전 형태로 인코딩한다. 즉, 위치 100의 키 벡터와 위치 200의 키 벡터는, 같은 콘텐츠라도 서로 다른 방향을 가리킨다. 이 상태에서 PCA를 적용하면 위치 차이에 의한 분산이 실제 의미론적 분산보다 크게 나타나, PCA가 "위치를 구분하는 방향"에 집중하게 되어 실제 저랭크 구조를 놓친다.
RoPE를 먼저 역산하면 모든 위치의 키 벡터가 "콘텐츠에만 의존하는" 공통 공간으로 정렬되어, PCA가 진짜 분산이 큰 방향을 찾아낼 수 있다.
평가 이 아이디어는 ShadowKV (Sun et al., 2025)에서 먼저 제안되었고, kvtc가 이를 채택했다. 논문은 RoPE 제거 없이 PCA를 적용했을 때의 정량적 비교를 명시적으로 제시하지는 않는다.
표를 보면 kvtc 16×, 32× 등 중간 압축 비율에서 GSM8K, MMLU 점수가 바닐라보다 미세하게 높은 경우가 있다 (예: GSM8K에서 바닐라 56.8 vs kvtc 32× 57.8).
평가 논문은 이에 대해 부록 B.6에서 추가 설명을 제공하며, token eviction 연구(Łańcucki et al., 2025)에서도 유사한 현상이 관찰되었다고 언급한다. 가장 유력한 설명은 PCA가 KV 캐시의 고주파(고분산) 노이즈 성분을 잘라내는 암묵적 정규화 효과다 — 일종의 "저역 통과 필터"처럼 작동해 추론 품질을 미세하게 향상시킬 수 있다. 단, 이 효과는 일관적이지 않으며 특정 태스크/모델에서만 나타난다.
가능하다. 논문이 명시적으로 언급한다:
"kvtc does not alter the structure of KV cache and does not change how the attention is calculated. Consequently, it is directly compatible with token eviction methods."kvtc는 KV 캐시의 구조를 바꾸지 않고 어텐션 계산 방식도 변경하지 않는다. 따라서 토큰 제거 방법들과 직접 결합이 가능하다.
kvtc는 "어떤 토큰을 보존할지" 결정하는 것이 아니라, 보존된 토큰의 KV 값을 어떻게 압축할지를 다룬다. 따라서 먼저 token eviction으로 중요한 토큰만 남기고, 그 캐시를 kvtc로 추가 압축하면 더 낮은 메모리 풋프린트를 달성할 수 있다.
증명은 귀납법으로 진행된다. best_error[j, q]가 j<i 또는 j=i이고 q<budget에서 최적이라고 가정한다. 그러면 best_error[i, budget]의 최적성을 보이기 위해, 알고리즘이 "첫 i개 주성분을 budget 비트 내로 양자화하는 모든 가능한 마지막 블록"을 열거함을 관찰한다. 각 경우에 대해 이전 블록들의 최적값(귀납 가정)과 현재 블록의 오차를 합산하므로, 가장 좋은 선택이 반드시 선택된다.
핵심은 PCA의 직교성 덕분에 주성분들이 독립적이어서, 각 블록의 최적 비트 수가 다른 블록과 독립적으로 결정 가능하다는 점이다. 이것이 DP 구조의 근거다.
시간 복잡도: O(num_features × max_bit_budget × batch)
논문 발표 시점(ICLR 2026)에 공개 코드 링크가 명시적으로 제공되지 않았다. 단, 재현성 향상을 위해 평가 설정(프롬프트, 하이퍼파라미터 등)을 Appendix A와 B에 매우 상세히 기술하고 있다. LM Evaluation Harness와 RULER 프레임워크를 사용했으므로 이들 공개 라이브러리를 기반으로 재현 가능하다.
평가 NVIDIA 연구팀의 논문이므로 nvCOMP(DEFLATE GPU 라이브러리)는 NVIDIA의 공개 라이브러리를 사용했다. Transformers 라이브러리 기반 구현이므로 HuggingFace 생태계에서 상대적으로 쉽게 재현할 수 있을 것으로 예상된다.
독자가 원본 논문을 펼쳤을 때 바로 찾을 수 있도록 핵심 Figure들을 원본 그대로 수록한다.