LLM 서빙 KV 캐시 최적화 체계화: 실행·배치·표현의 3차원 분류체계 (ACL 2026)
KV 캐시가 왜 시스템 문제인가
트랜스포머 기반 언어 모델의 자기회귀(autoregressive) 디코딩은 각 토큰을 생성할 때 이전 모든 토큰의 어텐션 키(Key)와 값(Value) 텐서를 다시 계산하지 않기 위해 캐시에 저장한다. 이 KV 캐시는 디코딩 속도를 유지하는 핵심 수단이지만, 동시에 LLM 서빙 시스템에서 가장 큰 메모리 소비원이 됐다.
문제는 단순히 메모리 크기만이 아니다.
- 배치 크기가 늘어날수록 KV 캐시는 GPU HBM을 빠르게 채운다.
- 컨텍스트 길이가 길어질수록 단일 요청의 KV 캐시가 수백 MB를 차지한다.
- 여러 요청이 같은 프리픽스를 공유하면, 중복 저장과 연산이 발생한다.
- KV 캐시가 HBM을 벗어나 CPU DRAM이나 NVMe로 옮겨지면, 대역폭 병목이 생긴다.
그 결과, LLM 추론 시스템의 처리량(throughput)과 지연(latency)은 GPU 연산 성능만큼이나 KV 캐시를 어떻게 관리하느냐에 달려 있다.
2026년 7월, 멜버른 대학교와 화중과기대학교 연구팀은 이 분야의 연구를 체계화한 서베이 논문을 발표했다. 논문 제목은 "Towards Efficient Large Language Model Serving: A Survey on System-Aware KV Cache Optimization"(arXiv:2607.08057, ACL 2026 Findings)이다. 저자들은 기존 KV 캐시 최적화 연구가 개별 기법에 집중돼 있고, 시스템 전체 관점의 분류체계가 없었다는 점을 지적한다. 이 논문은 KV 캐시 최적화를 세 가지 행동 차원(behavioral dimension)으로 분류하는 _sKis(system-aware KV infrastructure)_ 프레임워크를 제안한다.
3차원 분류체계: 언제·어디서·어떻게
sKis 프레임워크는 KV 캐시 최적화를 세 축으로 나눈다.
| 차원 | 질문 | 핵심 관심사 |
|---|---|---|
| 시간(Temporal) | 언제 KV 데이터를 접근·계산하는가 | 실행 순서, 스케줄링, 파이프라이닝 |
| 공간(Spatial) | KV 데이터를 어디에 저장하고 이동하는가 | 메모리 계층, 디바이스 배치 |
| 구조(Structural) | KV 데이터를 어떻게 표현하고 유지하는가 | 압축, 양자화, 보존 정책 |
이 세 차원은 독립적이지 않다. 논문은 "교차 행동 공동 설계 친화성(cross-behavior co-design affinity)"을 강조한다. 예를 들어, 양자화(구조)는 KV 캐시가 더 많은 HBM에 상주할 수 있게 해 이동량을 줄이고(공간), 이는 다시 스케줄링 결정에 영향을 준다(시간).
시간 차원: 언제 KV를 처리할 것인가
시간 차원은 KV 캐시와 관련된 연산·접근의 순서와 타이밍을 다룬다. 세 가지 범주로 나눈다.
KV 중심 스케줄링
전통적인 LLM 스케줄러는 요청 단위로 동작한다. KV 중심 스케줄러는 KV 캐시 상태를 스케줄링의 1급 시민으로 다룬다.
- 프리픽스 인식 스케줄링: 같은 프리픽스를 가진 요청들을 같은 인스턴스로 라우팅해 KV 재사용률을 높인다. vLLM의
prefix_caching, SGLang의RadixAttention이 대표 사례다. - KV 핫스팟 스케줄링: 자주 재사용되는 KV 블록을 빠른 메모리에 우선 배치한다.
- 토큰 수준 어텐션 스케줄링: 희소 어텐션(sparse attention) 패턴을 활용해 중요하지 않은 KV 계산을 건너뛴다.
파이프라이닝과 오버랩
KV 계산·통신·I/O 사이의 지연을 숨기는 기법이다.
- 비동기 KV 복사: GPU→CPU, CPU→GPU 전송을 연산과 병행한다.
- 파이프라인 디코딩: KV 생성과 다음 요청의 프리필을 겹친다.
- 목표는 KV 이동 비용을 연산 시간으로 가리는 것이다.
하드웨어 인식 실행
PD(Prefill-Decode) 분리 아키텍처가 이 범주의 핵심이다. 프리필(KV 생성)과 디코드(KV 읽기)는 특성이 다르다.
| 단계 | 계산 특성 | 메모리 특성 | 적합한 하드웨어 |
|---|---|---|---|
| 프리필 | 컴퓨트 바운드 (병렬 행렬 곱) | KV 생성 | H100, B200 |
| 디코드 | 메모리 바운드 (순차 KV 읽기) | KV 읽기 | 메모리 대역폭 높은 가속기 |
두 단계를 분리된 하드웨어에서 실행하면 각각의 특성에 최적화할 수 있다. vLLM의 V2 전송 계층, NVIDIA Dynamo의 NIXL이 이 방식을 구현한다.
공간 차원: KV를 어디에 둘 것인가
공간 차원은 KV 캐시가 위치하는 메모리 계층과 계산 디바이스를 다룬다.
메모리 계층 오케스트레이션
GPU HBM은 빠르지만 용량이 제한적이다. 현실적인 운영에서는 KV를 여러 계층에 분산한다.
GPU HBM (수십 GB, ~3 TB/s)
↓ 축출 시
CPU DRAM (수백 GB, ~100 GB/s)
↓ 축출 시
NVMe SSD (수 TB, ~10 GB/s)
↓ 축출 시
오브젝트 스토리지 (무제한, ~10 GB/s 이하)각 계층은 속도·용량·비용의 3중 트레이드오프를 가진다. KV를 어느 계층에 둘지 결정하는 정책이 서빙 성능을 결정한다.
비용 기반 결정(cost-driven decision): 요청의 남은 생성 토큰 수, 재사용 가능성, 현재 계층별 부하를 고려해 KV를 배치한다. 단순히 "오래된 것부터 축출"하는 LRU보다 성능이 높다.
중요도 인식 검색(importance-aware retrieval): 어텐션 스코어가 높은 KV 블록을 우선 빠른 계층에 유지한다. 희소 어텐션 패턴을 활용해 "중요하지 않은 KV는 느린 계층에 내려도 정확도 손실이 작다"는 원리를 응용한다.
계산 디바이스 오케스트레이션
단일 GPU가 아닌 여러 GPU에 KV를 분산하는 방식이다.
- 텐서 병렬: KV 헤드를 여러 GPU에 분산한다.
- 파이프라인 병렬: 계층별로 다른 GPU에 KV를 배치한다.
- 전문가 병렬(EP): MoE 모델에서 전문가별 KV를 각 GPU에 배치한다.
여러 GPU를 사용할 때는 KV 이동 비용(NVLink/PCIe/네트워크 대역폭)이 새로운 병목이 된다. 논문은 이를 "KV 이동의 네트워킹 문제"라 부른다.
구조 차원: KV를 어떻게 표현하고 유지할 것인가
구조 차원은 KV 텐서의 데이터 표현과 생명주기 관리를 다룬다.
KV 캐시 압축
같은 정보를 더 작게 표현해 메모리 효율을 높이는 방법이다. 네 가지 접근이 있다.
양자화(Quantization): KV 텐서를 FP16/BF16에서 INT8, INT4, FP8 등 저정밀 형식으로 변환한다. KIVI(INT2 그룹 양자화), KVQuant(채널별 비선형 양자화) 등이 대표 사례다. 메모리를 2×~4× 줄이지만, 정확도 손실이 발생할 수 있다.
저랭크 근사(Low-rank Approximation): KV 행렬이 낮은 내재 차원(intrinsic dimensionality)을 가진다는 관찰에 기반한다. SVD나 학습된 프로젝션으로 KV를 압축한다. MLA(Multi-head Latent Attention, DeepSeek)가 이 원리를 아키텍처 수준에서 구현한다.
구조적 압축(Structural Compression): 토큰 단위의 희소성을 활용한다. 어텐션에서 기여가 작은 토큰의 KV를 제거하거나 합친다(토큰 병합, token merging). H₂O(Heavy-Hitter Oracle), SnapKV 등이 이 범주다.
코덱 기반 압축: 전통 데이터 압축(gzip, zstd)을 KV에 적용한다. GPU에서 직접 압축·해제가 가능한 전용 코덱이 연구되고 있다.
보존 관리(Retention Management)
KV 캐시의 할당(allocation), 재사용(reuse), 축출(eviction)을 관리하는 정책이다.
- 페이지 어텐션(PagedAttention): GPU 메모리를 고정 크기 블록(page)으로 분할해 단편화를 줄이고 KV를 유연하게 관리한다. vLLM이 도입해 현재 대부분의 서빙 시스템이 채택했다.
- 프리픽스 풀링(prefix pooling): 동일한 시스템 프롬프트나 문서를 가진 요청들이 KV를 공유한다. SGLang의 RadixAttention이 대표적이다.
- 축출 정책: LRU, FIFO, 중요도 기반, 예측 기반 등. 어떤 KV를 언제 내보낼지가 캐시 히트율을 결정한다.
차원 간 상호작용과 공동 설계
논문이 강조하는 핵심은 세 차원이 단독으로 작동하지 않는다는 점이다.
양자화(구조) → 메모리 계층(공간): KV를 양자화하면 더 많은 KV가 HBM에 상주할 수 있다. HBM 상주 KV가 많아지면 CPU DRAM이나 NVMe로의 이동이 줄어, 시간 차원의 스케줄링 선택지가 넓어진다.
PD 분리(시간) → KV 이동(공간): 프리필과 디코드를 분리하면 프리필 노드에서 생성된 KV를 디코드 노드로 전송해야 한다. 이 전송이 공간 차원의 대역폭 병목을 만든다.
프리픽스 캐싱(시간) → KV 보존(구조): 프리픽스 재사용은 공유 KV를 메모리에 오래 유지해야 한다. 이는 보존 관리 정책(언제 어떤 KV를 축출할지)과 직접 상충한다.
논문은 이 상호작용들을 "behavior-objective links"로 정리하고, 단일 차원 최적화가 다른 차원에서 역효과를 낼 수 있음을 경고한다. 실제 시스템 설계에서 세 차원을 함께 고려해야 한다는 의미다.
실제 시스템에서의 구현 사례
논문이 다루는 주요 오픈소스 시스템들을 3차원으로 분류하면 다음과 같다.
| 시스템 | 시간 | 공간 | 구조 |
|---|---|---|---|
| vLLM | 프리픽스 캐싱, PD 분리 | GPU HBM, CPU 오프로드 | PagedAttention, FP8 KV |
| SGLang | RadixAttention 스케줄링 | 계층적 KV 공유 | 압축 미지원(선택적) |
| NVIDIA Dynamo | SLO 기반 스케줄링 | NIXL 다중 계층 | KV 블록 관리 |
| FlashInfer | 블록 희소 KV | GPU 내 배치 최적화 | MLA 행렬 흡수 |
| ObjectCache | I/O 파이프라이닝 | 오브젝트 스토리지 | 계층별 분리 |
이 분류는 "내 시스템에 어떤 최적화가 적용됐고, 어떤 부분이 아직 최적화되지 않았는가"를 진단하는 데 유용하다.
운영자를 위한 시사점
KV 캐시 성능 진단 프레임
서빙 시스템의 KV 캐시 병목을 진단할 때 3차원 체크리스트가 도움이 된다.
시간 차원 진단:
- KV 캐시 히트율이 충분한가? (RadixAttention / 프리픽스 캐싱 활성화 여부)
- 프리필과 디코드가 CPU·GPU 자원을 서로 방해하는가? (PD 분리 고려)
- KV I/O와 연산이 파이프라인으로 겹치는가?
공간 차원 진단:
- HBM 사용률이 지속적으로 90%를 넘는가? (CPU 오프로드 또는 압축 고려)
- KV 이동(GPU→CPU)이 대역폭을 포화시키는가? (NVLink/PCIe 대역폭 모니터링)
- 여러 GPU를 사용할 때 KV 불균형이 있는가?
구조 차원 진단:
- KV 양자화가 활성화돼 있는가? (FP8 지원 여부)
- 보존 정책이 히트율 목표와 일치하는가? (LRU vs. 중요도 기반)
- 토큰 프루닝이 정확도에 영향을 주는가?
ACL 2026 논문의 실용적 가치
이 서베이의 실용적 의의는 연구 흐름을 체계화한 데 있다. 2024~2026년 사이 수십 편의 KV 캐시 관련 논문이 쏟아졌다. 각 논문은 특정 기법을 제안했지만, 그 기법이 시스템의 어느 부분을 겨냥하는지, 다른 기법과 어떻게 결합될 수 있는지가 불명확했다.
sKis 프레임워크는 이 지형도를 정리한다. 신규 기법을 평가할 때 "이 논문은 시간·공간·구조 중 어느 차원을 다루고, 다른 차원에 어떤 부작용이 있는가?"라는 질문이 가능해진다.
요약
| 항목 | 내용 |
|---|---|
| 논문 | arXiv:2607.08057, ACL 2026 Findings |
| 프레임워크 | sKis (system-aware KV infrastructure) |
| 시간 차원 | KV 중심 스케줄링, 파이프라이닝, PD 분리 |
| 공간 차원 | 메모리 계층 오케스트레이션, 디바이스 배치 |
| 구조 차원 | 양자화, 저랭크 근사, 구조적 압축, 보존 관리 |
| 핵심 통찰 | 세 차원은 상호 작용하며, 단일 차원 최적화는 다른 차원에 역효과를 줄 수 있다 |
KV 캐시 최적화는 단일 기술이 아니라 시스템 설계 문제다. 실행 순서(시간), 메모리 배치(공간), 데이터 표현(구조)을 함께 설계할 때 최선의 결과가 나온다.
References
- Towards Efficient Large Language Model Serving: A Survey on System-Aware KV Cache Optimization (arXiv:2607.08057)
- ACL Anthology — Awesome-KV-Cache-Optimization (GitHub)
- From Tensor Buffer to Distributed Memory Hierarchy: A Survey of KV Cache Management (arXiv:2607.02574)
- PagedAttention — Efficient Memory Management for LLM Serving with PagedAttention (Kwon et al., SOSP 2023)
- SGLang RadixAttention (arXiv:2312.07104)
- ObjectCache: KV Cache in Object Storage (arXiv:2605.22850)
- NVIDIA Dynamo 1.0 blog post