KV 캐시(Key-Value Cache)는 트랜스포머(Transformer) 아키텍처를 사용하는 대규모 언어 모델(LLM)의 추론 과정에서 연산 효율을 극대화하기 위해 도입된 기술이다. 텍스트 생성 시 각 단계에서 계산되는 어텐션(Attention) 메커니즘의 Key와 Value 행렬을 메모리에 저장해 두었다가, 다음 토큰 생성 시 이를 재계산하지 않고 즉시 활용한다. 이를 통해 중복 연산을 제거하여 생성 속도를 수 배 이상 향상시키지만, 컨텍스트 길이에 비례하여 메모리 점유율이 급격히 증가하는 특성이 있다.

배너 광고

개요

KV 캐시는 대규모 언어 모델(LLM)이 텍스트를 생성할 때 발생하는 중복 연산을 줄이기 위한 핵심적인 최적화 기법이다. 트랜스포머 모델은 이전의 모든 토큰 정보를 참조하여 다음 토큰을 예측하는 자기회귀(Autoregressive) 방식을 사용한다. 이 과정에서 매번 동일한 이전 토큰들에 대해 어텐션 연산을 반복하는 비효율이 발생하는데, KV 캐시는 이러한 중간 계산 결과인 Key와 Value 텐서를 저장함으로써 추론 복잡도를 낮춘다. 실제 운영 환경에서 이 기술은 처리량을 약 2배에서 최대 24배까지 향상시키는 것으로 알려져 있다.

동작 원리

LLM의 추론 과정은 크게 두 단계로 나뉘며, KV 캐시는 각 단계에서 다르게 작용한다.

  1. 프리필(Prefill) 단계: 입력된 프롬프트 전체를 한꺼번에 처리하여 첫 번째 출력 토큰을 생성한다. 이때 입력 토큰들에 대한 모든 Key와 Value 행렬을 계산하여 캐시에 저장한다.
  2. 디코드(Decode) 단계: 이후 토큰을 하나씩 순차적으로 생성한다. tt번째 토큰을 생성할 때 11부터 t1t-1까지의 토큰 정보가 필요하지만, 이미 캐시에 저장된 값을 불러와 사용하므로 현재 토큰에 대한 Key와 Value만 새로 계산하면 된다.

이러한 구조 덕분에 모델은 매 단계마다 전체 문맥을 다시 계산할 필요 없이 새로운 정보만 업데이트하며 빠르게 텍스트를 생성할 수 있다.

수학적 배경

트랜스포머의 스케일드 닷-프로덕트 어텐션(Scaled Dot-Product Attention)은 다음과 같이 계산된다.

Attention(Q,K,V)=softmax(QKdhead)V\text{Attention}(Q, K, V) = \text{softmax}\left( \frac{Q K^\top}{\sqrt{d_{\text{head}}}} \right) V

여기서 QQ는 쿼리(Query), KK는 키(Key), VV는 값(Value)을 의미한다. 새로운 토큰을 생성할 때마다 QQ는 현재 토큰의 정보만을 담고 있지만, KKVV는 이전의 모든 토큰 정보를 포함해야 한다. KV 캐시를 사용하면 이전 단계에서 계산된 KKVV를 메모리에서 즉시 불러올 수 있어 행렬 곱 연산량을 획기적으로 줄일 수 있다.

메모리 사용량과 병목 현상

KV 캐시는 추론 속도를 높이는 대신 상당한 양의 GPU 메모리를 소모한다. 메모리 요구량은 모델의 크기, 배치 크기(Batch Size), 그리고 컨텍스트 길이에 비례하여 선형적으로 증가한다.

  • 메모리 점유: 70B 매개변수 모델이 128K 컨텍스트를 처리할 경우, 캐시 데이터만으로도 약 40GB 이상의 메모리가 필요할 수 있다. 이는 때로 모델 가중치 자체보다 더 많은 공간을 차지한다.
  • 메모리 단편화: 기존의 연속적 메모리 할당 방식은 실제 사용량보다 더 많은 공간을 예약하게 되어 메모리의 상당 부분이 낭비되는 단편화 문제를 야기한다.
  • 성능 저하: 컨텍스트가 길어질수록 캐시가 차지하는 비중이 커지며, 이는 고성능 GPU에서도 메모리 부족(OOM)이나 처리 속도 저하의 원인이 된다.

최적화 기법

KV 캐시의 효율을 높이기 위해 다음과 같은 기술적 시도가 이루어지고 있다.

기법설명
PagedAttention가상 메모리 관리 기법을 응용하여 KV 캐시를 고정 크기 블록으로 나누어 관리한다. 메모리 낭비를 4% 미만으로 줄인다.
KVzip중요도가 낮은 KV 쌍을 식별하여 제거하거나 압축함으로써 메모리 사용량을 줄인다.
양자화(Quantization)KV 텐서의 정밀도를 FP16에서 INT8 또는 INT4로 낮추어 메모리 점유 공간을 절반 이하로 줄인다.
공유 메모리동일한 프롬프트를 사용하는 여러 요청 간에 캐시된 데이터를 공유하여 중복 저장을 방지한다.

장점과 한계

KV 캐시의 가장 큰 장점은 실시간 서비스에서 사용자에게 응답을 전달하는 지연 시간(Latency)을 획기적으로 줄이고 운영 비용을 절감한다는 점이다. 특히 첫 토큰 이후의 생성 속도를 2~5배가량 향상시킨다.

그러나 구현 복잡도가 높고, 훈련(Training) 단계에서는 사용할 수 없다는 제약이 있다. 또한 긴 문맥을 처리할 때 발생하는 메모리 압박은 여전히 해결해야 할 과제로 남아 있으며, 이를 극복하기 위해 학계와 산업계에서는 효율적인 압축 알고리즘 연구를 지속하고 있다.

참고 자료

5
캐싱 · Hugging Face# 캐싱[[caching]] 누군가와 대화를 나누고 있는데, 상대방이 이전에 했던 말을 기억하지 못하고 당신이 대답할 때마다 처음부터 다시 시작해야 한다고 상상해 보세요. 이는 느리고 비효율적이겠죠? 이 비유를 트랜스포머 모델에도 적용할 수 있습니다. 자기회귀 모델의 생성은 한 번에 하나의 토큰씩 예측하기 때문에 느릴…https://huggingface.co/docs/transformers/main/ko/cache_explanationKV Cache in LLMs: What It Is and Why It Matters — Tuncer BağçabaşıKV Cache in LLMs: What It Is and Why It Matters — Tuncer Bağçabaşı # KV Cache in LLMs: What It Is and Why It Matters 2026-03-28· 6 min read If you've worked with large language mo…https://www.tuncer-byte.com/en/blog/llm-kv-cache-explainedKV caching in LLMs: faster inference, lower cost, and how it worksKV caching in LLMs: faster inference, lower cost, and how it works # KV Caching in LLMs Explained: Faster Inference, Lower Cost, and How It Actually Works Written by in KV caching…https://aivineet.com/kv-caching-in-llms-explained/What Is KV Cache and Why It Affects LLM Speed - ML JourneyWhat Is KV Cache and Why It Affects LLM Speed - ML Journey If you’ve ever wondered why your local LLM slows down during long conversations or why context length has such a dramati…https://mljourney.com/what-is-kv-cache-and-why-it-affects-llm-speed/Understanding and Coding the KV Cache in LLMs from ScratchUnderstanding and Coding the KV Cache in LLMs from Scratch 본문 바로가기 --- Article # Understanding and Coding the KV Cache in LLMs from Scratch Sebastian Raschka, PhD2025년 6월 17일 KV 캐…https://junhan-ai.tistory.com/573

관련 문서