
압축 KV 캐시를 초안으로 사용하여 출력을 바꾸지 않고 최대 4배로 만드는 VeriCache
요약
VeriCache는 압축된 KV 캐시를 초안(draft)으로 사용하고 비압축 캐시로 검증하는 방식을 통해, 출력 품질 저하 없이 추론 속도를 최대 4배 향상시키는 기술입니다. 투기적 디코딩 원리를 KV 캐시 정밀도 차이에 적용하여, 압축 시 발생하는 오차 누적 문제를 해결하고 비압축 모델과 동일한 출력을 보장합니다.
핵심 포인트
- 압축 KV 캐시를 초안으로, 비압축 캐시를 검증용으로 사용하는 투기적 디코딩 방식 적용
- 압축으로 인한 오차 누적 문제를 해결하여 비압축 디코딩과 비트 단위로 동일한 출력 보장
- 별도의 모델 학습 없이 기존의 토큰 드롭핑이나 양자화 기술을 그대로 활용 가능
- 압축 캐시는 메모리 대역폭을, 비압축 캐시는 인터커넥트 병목을 활용해 효율적 처리
KV 캐시를 압축하면 짧은 응답의 경우 거의 눈치채지 못한다. 하지만 긴 코드 생성이나 에이전트의 도구 호출(tool calling)에서는 중간부터 출력이 서서히 무너지며, 결국에는 전혀 다른 결과물이 된다. 이 '단거리에서는 무해하지만 장거리에서는 치명적'이라는 성질이 KV 압축을 실무에 도입할 때 가장 큰 고민거리였다.
VeriCache
라는 논문(arXiv:2605.17613, 2026년 5월)은 이 문제를 정면으로 돌파하려 하기보다, 발상을 뒤집어 해결한다. 압축된 캐시를 '정답'으로 사용하는 것을 그만두고, 어디까지나 초안(draft)으로 취급하며, 정답은 비압축(uncompressed) 캐시로 확인(verification)한다. 결과적으로 압축의 속도를 유지하면서도 출력은 비압축과 비트 단위로 동일하게 만든다고 주장한다.
전제를 하나 두자. Transformer의 추론에서는 과거의 토큰으로부터 계산한 Key/Value를 'KV 캐시(KV cache)'로 저장해 두었다가, 다음 토큰을 내보낼 때마다 다시 읽는다. 이 덕분에 매번 처음부터 계산할 필요는 없지만, 문맥이 길어질수록 캐시는 GPU 메모리를 점유하고 대역폭(bandwidth)을 압박한다. 그래서 토큰을 건너뛰거나(token dropping), 저비트(low-bit)로 양자화(quantization)하여 크기를 줄인다. 이것이 KV 압축이다.
문제는 압축이 만들어내는 미세한 오차가 자기회귀(autoregressive) 과정에서 누적된다는 점이다. 어떤 단계에서 조금 어긋난 주의 분포(attention distribution)가 다음 단계의 입력이 되고, 그 출력이 다시 다음 입력이 된다. 디코딩이 진행될수록 비압축 출력과의 괴리가 넓어지며, 코드 생성이나 도구 호출처럼 '1토큰의 오류가 전체를 망가뜨리는' 태스크에서 파탄이 난다. 이는 VeriCache뿐만 아니라, KVarN 등 여러 양자화 연구에서도 '오차는 시퀀스 길이에 따라 심각해진다'고 독립적으로 지적하고 있는 기지의 약점이다.
VeriCache의 핵심은 투기적 디코딩(speculative decoding)을 KV 캐시의 정밀도 차이에 적용했다는 점에 있다. 절차는 3단계다.
개념적인 의사 코드 (논문의 기술에 기반)
Draft : 압축 캐시 KVcomp를 사용하여, 자기회귀 방식으로 x개의 후보 t1..tx를 생성
Verify: 비압축 캐시 KVfull을 조건으로, x개의 위치를 1회의 forward pass로 한꺼번에 검증
...
일반적인 투기적 디코딩은 '작은 드래프트 모델(draft model) + 큰 검증 모델(verification model)'이라는 서로 다른 2개의 모델을 사용한다. VeriCache가 흥미로운 점은 같은 모델을 두 번 사용한다는 것이다. 한쪽은 저렴하고 거친 압축 캐시를 읽고(빠르지만 근사치), 다른 한쪽은 정확한 비압축 캐시를 읽는다(정확하지만 읽기가 무거움). 압축 캐시의 출력이 충분히 가깝기 때문에 대부분의 초안은 채택되며, 가끔 틀린 부분만 비압축 측이 수정한다. 검증은 항상 비압축 캐시로 수행하기 때문에, 최종 출력은 비압축 디코딩과 반드시 일치한다. 압축은 이제 정밀도가 아니라 속도에만 기여한다는 분리가 효과를 발휘하고 있다.
학습이 필요 없다는 점도 실무적으로 유용하다. EAGLE-3처럼 드래프트용 헤드를 훈련할 필요가 없으며, 기존의 token-dropping/양자화 컴프레서를 공통 인터페이스로 그대로 끼워 넣을 수 있다. 게다가 기존 방식의 드래프트 모델과도 병용할 수 있다.
이 부분이 이 논문의 진정한 핵심이라고 생각한다. 초안과 검증은 병목(bottleneck)이 서로 다른 자원에 걸려 있다.
| 공정 | 사용하는 캐시 | 속도 제한 요인 (Rate-limiting factor) |
|---|---|---|
| Draft (초안) | 압축 KV (GPU HBM 상) | GPU의 메모리 대역폭 |
| Verify (검증) | 비압축 KV (CPU/원격에서 읽음) | 인터커넥트(interconnect) 대역폭과 GPU FLOPs |
순차적인 벡터×행렬 연산인 드래프트는 GPU 연산을 거의 사용하지 않고 대역폭 대기 상태가 된다. 반면 검증은 비압축 캐시를 GPU로 운반하는 부분이 무겁다. 그렇다면 두 과정을 락스텝(lock-step)으로 교대로 실행하는 것이 아니라, 시차를 두고 겹쳐서 실행하면 자원이 놀지 않는다. 비압축 캐시를 백그라운드에서 운반하는 동안, GPU는 압축 캐시로 다음 초안을 진행할 수 있다. 이 중첩(overlapping)이 offload에서 흔히 발생하는 '비압축 캐시를 다 읽을 때까지 GPU가 멈추는' 정체를 숨겨준다.
상정 시나리오는 두 가지다. 장문 디코딩에서는 비압축 KV를 CPU 메모리에 두고, 압축 KV를 GPU에 남겨둔다. 다른 하나는 원격의 prefix 캐시 재사용으로, 빠른 로컬 링크로부터 비압축 KV를, 느린 원격 링크로부터 압축 KV를 흘려보낸다. 둘 다 GPU 메모리에 전부를 올리지 않는다는 전제하에, 이 기반 구축은 동일한 저자진이 관여하는 KV 관리층인 LMCache와 vLLM 위에 약 8천 줄의 코드로 구현되어 있다.
Mistral-24B / Qwen-32B / Llama-70B에서 평가하였다. 출력은 비압축과 동일한 상태를 유지하면서, 처리량(throughput)은 다음과 같다.
- 장문 디코딩 (Long-context decoding): 비압축 KV 대비
1.92~2.73배 (Llama-70B에서 102→256 tok/s인 예시) - 원격 프리픽스 캐시 (Remote prefix cache): 비압축 KV 대비
1.33~2.11배 - 기존 드래프트 모델 (Draft model)과 병용: Qwen-32B에서
4.26배
채택률(Acceptance rate)도 높아서, 4배 압축 시 초안 길이(Draft length)를 30까지 늘려도 채택률은 약 0.8을 유지한다. 채택 길이(Acceptance length, 1회의 검증으로 통과하는 토큰 수)는 Qwen-32B에서 약 19, Llama-70B에서 약 23에 달하며, 이는 Eagle의 11~22나 소형 드래프트 모델의 약 3을 상회한다. 요컨대 "1회의 무거운 검증으로 더 길게 초안을 통과시킬 수 있기" 때문에, 비압축 캐시의 읽기 비용을 긴 거리로 희석할 수 있다.
엔지니어 관점에서의 시사점은 단순하다. 지금까지 KV 양자화 (KV quantization)는 "품질이 떨어질 수도 있다"는 리스크와의 트레이드오프(Trade-off)였으나, VeriCache의 프레임워크에서는 압축의 역할이 순수하게 속도로 이동한다. 긴 문맥을 다루는 에이전트(Agent)나, GPU 메모리에 모든 캐시를 다 올릴 수 없는 장문 추론 상황에서 정확도를 도박하지 않고도 처리량(Throughput)을 확보할 수 있다. 기존 컴프레서(Compressor)를 그대로 사용할 수 있으므로 전환 비용도 작다.
반면 공짜는 아니다. 비압축 KV를 CPU나 원격지에 통째로 유지해야 하므로, GPU 외부의 스토리지 소비는 늘어난다. 초안 길이는 워크로드(Workload)마다 고정되어 있어, 동적인 최적화는 향후 과제로 남는다. 그리고 저자 스스로 인정하듯, 기존 컴프레서는 "직접 출력의 정확도"를 최대화하도록 만들어져 있지, "채택 길이"를 최대화하도록 설계되어 있지 않다. 채택 길이를 겨냥해 설계된 컴프레서가 나온다면, 이 기법의 발전 가능성은 여전히 크다.
개인적으로 유효하다고 느낀 점은 압축을 "믿느냐/믿지 않느냐"의 이분법에서 벗어났다는 점이다. 빠른 근사치(Approximation)는 초안에, 느린 엄밀함은 정답 확인에 돌린다. 투기적 디코딩 (Speculative decoding)이 소형 모델로 해왔던 일을, 동일한 모델의 캐시 정확도로 수행한다. 오프로드 (Offload)의 정체를 없애기 위한 자원의 중첩을 포함하여, 범용성이 높은 설계 패턴이라고 생각한다. 참고로 현재 시점에서 공개 리포지토리(Repository) URL은 논문 내에서 찾을 수 없었으므로, 구현을 시도하려면 기반이 되는 LMCache/vLLM 측을 추적하는 것이 현실적이다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기