요약
긴 컨텍스트 LLM 추론에서 KV 캐시는 메모리 병목의 핵심이다. 기존 접근법은 두 극단에서 공략했다. 퇴거(eviction) 방식은 토큰을 영구히 버려 나중에 그 토큰이 필요해질 때 성능이 떨어진다. 양자화(quantization) 방식은 모든 토큰을 저정밀도로 보존하지만 압축률에 한계가 있다.
AnchorKV(arXiv:2608.02901, 2026년 8월)는 제3의 경로를 택한다. 소수의 앵커(anchor) 토큰은 원본 정밀도 그대로 저장하고, 나머지 모든 토큰은 가장 가까운 앵커로부터의 잔차(residual)로 표현한다. 어떤 토큰도 버리지 않으면서 캐시를 20배 줄이고, 70B 규모 모델에서 전체 캐시 점수의 99%를 유지한다.
압축은 프리필이 끝난 시점에 한 번 실행되며, 이후 어텐션 연산은 변경되지 않는다.
- arXiv:2608.02901 · 2026년 8월 3일 제출
- 저자: Malik Khalaf, Yara Shamshoum, Nitzan Hodos, Yuval Sieradzki, Assaf Schuster
KV 캐시가 왜 병목인가
트랜스포머는 각 토큰의 Key와 Value 벡터를 캐시에 보관해 이후 어텐션 계산 시 재사용한다. 시퀀스 길이가 늘어날수록 캐시 크기는 선형으로 증가한다.
캐시 크기 = L(레이어 수) × H(헤드 수) × T(토큰 수) × D(헤드 차원) × 2(K+V) × dtype 바이트예를 들어 Llama-3-70B에서 컨텍스트 길이 128K를 처리하면 BF16 기준 약 320GB의 KV 캐시가 필요하다. 이는 H100 80GB GPU 4장의 전체 용량을 초과한다.
세 가지 대응 전략이 있었다.
| 전략 | 핵심 아이디어 | 문제 |
|---|---|---|
| 토큰 퇴거 | 중요도 낮은 토큰 삭제 | 버린 토큰이 나중에 필요하면 복구 불가 |
| 양자화 | INT4/INT8로 저장 | 압축률이 4~8×에서 한계 |
| 희소 어텐션 | 일부 위치만 어텐션 계산 | 모델 구조 변경 필요, 재학습 비용 |
AnchorKV는 모델 수정 없이, 토큰을 버리지 않고, 20× 압축을 달성한다.
AnchorKV의 구조
3단계 알고리즘
1단계: 앵커 선택
프리필이 끝난 직후, 전체 T개 토큰 중 k개 앵커를 선택한다. 선택 기준은 어텐션 점수다. 많은 토큰으로부터 높은 어텐션을 받는 토큰이 "중심(anchor)"으로 선택될 가능성이 높다. 이 앵커들은 원본 BF16/FP16 정밀도 그대로 보존한다.
k는 하이퍼파라미터다. k를 줄이면 압축률이 높아지지만 잔차 근사 오류가 커진다. 논문에서는 시퀀스 길이의 5~10% 수준에서 최적 트레이드오프를 확인했다.
2단계: 잔차 인코딩
비앵커 토큰 각각에 대해 다음을 수행한다.
- 유클리디안 거리가 가장 가까운 앵커를 찾는다
- 해당 토큰의 KV 벡터를 앵커 KV 벡터로부터의 잔차로 표현한다
- 잔차를 저비트 형식(INT4 또는 INT8)으로 저장한다
수학적으로는 아래와 같다.
KV_i ≈ KV_anchor(i) + Δ_i (압축된 잔차)앵커를 중심으로 삼기 때문에 잔차의 분포가 0에 집중된다. 같은 비트 수를 사용해도 퇴화한 잔차를 직접 양자화하는 것보다 복원 품질이 높다.
3단계: 정밀 보정
잔차 근사가 가장 큰 오류를 낼 가능성이 있는 토큰, 즉 모델 출력에 가장 큰 영향을 미치는 토큰을 추가로 식별한다. 이 토큰들은 더 높은 정밀도로 다시 저장해 전체 캐시에서 근사 오류가 집중되는 지점을 선별적으로 보완한다.
이 3단계는 모두 프리필이 끝난 직후 한 번만 실행된다. 디코드 단계에서 AnchorKV는 표준 어텐션 커널 앞에 경량 압축 해제 단계를 삽입할 뿐이며, 어텐션 행렬 연산 자체는 변경하지 않는다.
성능 결과
논문에서 보고한 주요 결과:
| 지표 | 값 |
|---|---|
| 메모리 압축률 | 20× |
| 70B 모델 정확도 유지율 | 99% (전체 캐시 점수 대비) |
| 모델 수정 여부 | 없음 |
| 재학습 여부 | 없음 |
| 적용 시점 | 프리필 완료 후 단 한 번 |
99% 정확도 유지라는 결과는 Llama-3-70B를 포함한 여러 모델과 GSM8K, LongBench 등 다양한 벤치마크에서 일관되게 나타났다.
기존 방법과의 구체적 비교
퇴거 방법 (H2O, StreamLLM)과의 차이
퇴거 방법은 중요도 낮다고 판단한 토큰을 캐시에서 삭제한다. 문제는 "어떤 토큰이 나중에 필요해질지"를 프리필 시점에 완벽히 예측할 수 없다는 것이다. 문서 후반부 참조, 다중 홉 추론, 긴 인용 등의 경우 삭제된 토큰이 핵심이 되는 상황이 발생한다. AnchorKV는 토큰을 삭제하지 않으므로 이 문제에서 자유롭다.
KVQuant, KIVI 등 양자화 방법과의 차이
INT4 양자화는 KV 벡터를 4비트로 저장해 4× 압축을 달성한다. 추가 조합이나 구조를 사용해도 8× 정도가 현실적인 한계로 여겨져 왔다. AnchorKV는 잔차가 앵커로부터의 편차이기 때문에 잔차 분포가 훨씬 좁다. 같은 INT4 비트로 잔차를 양자화하면 원본 벡터 전체를 양자화하는 것보다 훨씬 정밀하게 표현할 수 있고, 이로 인해 20× 압축이 가능해진다.
운영 시사점
어떤 상황에서 유용한가
AnchorKV는 긴 컨텍스트 LLM 추론에서 GPU 메모리가 부족한 상황에 가장 유용하다.
- 128K~1M 토큰 컨텍스트를 처리하는 서비스
- 다수 요청을 동시에 처리해야 하는 배치 추론
- 단일 GPU에서 70B 이상 모델을 구동해야 하는 환경
적용 위치
vLLM, SGLang 같은 추론 서버에서 적용하려면 KV 캐시 관리 레이어에 AnchorKV 압축/해제를 추가하면 된다. PagedAttention이나 MRv2 같은 메모리 관리 방식과 독립적으로 동작한다. 어텐션 커널은 압축 해제된 벡터를 받으므로 FlashAttention, FlashInfer 등 기존 커널을 그대로 쓸 수 있다.
고려할 트레이드오프
- 프리필 오버헤드: 프리필 완료 후 k-means 유사 앵커 선택과 잔차 인코딩을 실행하는 시간이 추가된다. 긴 컨텍스트일수록 프리필 시간이 길어지기 때문에 이 오버헤드의 비율은 상대적으로 작아진다.
- 앵커 품질: 앵커 선택 알고리즘이 대표성이 낮은 토큰을 앵커로 고르면 잔차 분포가 넓어져 압축 효율이 떨어진다. 어텐션 점수 기반 선택이 실용적이지만 최적은 아닐 수 있다.
- 디코드 지연: 압축 해제가 매 어텐션 단계에 추가되므로 디코드 토큰당 지연이 소폭 증가한다. 20× 메모리 절감 덕분에 훨씬 큰 배치를 사용할 수 있어 전체 처리량은 개선된다.
다른 압축 기법과의 조합
AnchorKV는 양자화와 배타적이지 않다. 앵커를 FP16으로, 잔차를 INT4로 저장하는 방식 자체가 이미 혼합 정밀도다. 향후 연구에서는 앵커에도 경량 양자화를 적용해 추가 압축 가능성을 탐색할 것으로 보인다.
요점 정리
AnchorKV가 흥미로운 이유는 세 가지다.
첫째, 토큰을 버리지 않으면서 20× 압축을 달성한다. 퇴거와 양자화 사이의 공백을 채우는 접근법이다.
둘째, 프리필 완료 후 한 번만 실행된다. 어텐션 구조를 바꾸지 않아 기존 추론 서버에 통합하기 쉽다.
셋째, 99% 정확도 유지율이 70B 규모에서 입증됐다. 압축률 대비 품질 트레이드오프가 실용적인 수준에 있다.
한계도 분명하다. 앵커 선택의 최적화 여부, 디코드 오버헤드의 실서비스 영향, 100B 이상 초대형 모델에서의 동작은 추가 검증이 필요하다.
References
- arXiv:2608.02901 — "AnchorKV: Anchor-Residual KV Cache Compression" (2026년 8월)
https://arxiv.org/abs/2608.02901
- arXiv:2606.17872 — "AnchorKV: Safety-Aware KV Cache Compression via Soft Penalty with a Refusal Anchor" (다른 논문, 동명 주의)
https://arxiv.org/abs/2606.17872
- arXiv:2602.08005 — DeltaKV: Residual-Based KV Cache Compression via Long-Range Similarity
https://arxiv.org/abs/2602.08005
- ACL 2026 Survey — "Towards Efficient Large Language Model Serving: A Survey on System-Aware KV Cache Optimization"
https://github.com/jjiantong/Awesome-KV-Cache-Optimization
- SmallKV (arXiv:2508.02751) — Small Model Assisted KV Cache Compression
https://arxiv.org/abs/2508.02751