KV 캐시는 어떤 계산을 줄일까
프롬프트를 처리하는 prefill과 새 토큰을 처리하는 decode를 나눠 봅니다. 이전 위치의 K·V를 재사용해 계산을 줄이지만, 새 Q는 과거 K·V를 계속 읽고 저장 공간도 늘어납니다.
01KV 캐시는 어떤 계산을 줄일까
개념 한눈에 보기GPT-2식 구조 · 모델별 구성은 다름
KV 캐시는 각 층에서 이전 토큰의 K·V를 저장합니다. 캐시를 쓰지 않는 계산과 나란히 비교합니다.
먼저 프롬프트 전체를 처리해 K·V를 채웁니다. 처음 계산하는 구간이라 양쪽 모두 같은 토큰을 처리합니다.
새 토큰이 들어오면 캐시가 없는 쪽은 전체 입력을 다시 처리합니다. 캐시 쪽은 새 토큰의 Q·K·V만 계산합니다.
새 Q는 이전 K와 새 K를 모두 참고합니다. V도 모두 읽어 가중합하므로 과거 문맥을 읽는 비용은 남습니다.
새 K·V를 캐시에 붙입니다. 다음 토큰을 처리할 때는 앞에서 저장한 위치를 그대로 재사용합니다.
일반적인 전체 어텐션 캐시는 문맥 길이에 비례해 늘어납니다. 각 층·KV 헤드에 K와 V를 따로 저장합니다.
02 쉽게 이해하기
For Everyonecausal 어텐션에서는 미래 토큰이 이전 위치의 표현을 바꾸지 않습니다. 각 층의 이전 K·V를 저장해 새 토큰 계산에 재사용합니다.
prefill은 프롬프트 전체의 각 층 K·V를 채웁니다.
decode에서는 새 토큰의 Q·K·V를 계산하고, 새 K·V를 기존 캐시에 추가합니다.
새 Q는 저장된 K 전체와 비교하고 V를 가중합하므로 과거 문맥 읽기는 남습니다.
일반적인 전체 어텐션 캐시는 토큰 수에 비례해 늘어납니다.
그림은 한 층·한 헤드의 단순화된 예제이며, 캐시는 모델 가중치나 대화 기록 저장소와 다릅니다.
- –긴 문맥의 메모리 비용과 생성 속도를 설명하거나 prefill·decode 병목을 구분할 때 사용합니다
03 자주 묻는 질문
FAQKV 캐시는 어떤 계산을 줄일까란 무엇인가요?+
프롬프트를 처리하는 prefill과 새 토큰을 처리하는 decode를 나눠 봅니다. 이전 위치의 K·V를 재사용해 계산을 줄이지만, 새 Q는 과거 K·V를 계속 읽고 저장 공간도 늘어납니다.
KV 캐시는 어떤 계산을 줄일까은(는) 어디에 사용하나요?+
긴 문맥의 메모리 비용과 생성 속도를 설명하거나 prefill·decode 병목을 구분할 때 사용합니다.
KV 캐시는 어떤 계산을 줄일까를 쉽게 비유하면?+
causal 어텐션에서는 미래 토큰이 이전 위치의 표현을 바꾸지 않습니다. 각 층의 이전 K·V를 저장해 새 토큰 계산에 재사용합니다.
