KV 캐시는 모델이 텍스트를 생성하면서 남기는 중간 계산 결과입니다. 모델은 토큰을 하나 생성할 때마다 관련된 키(Key)와 값(Value)을 저장하고, 다음 단계에서는 이미 계산한 부분을 다시 계산하지 않고 새로 추가된 토큰만 처리합니다. 이름은 저장되는 두 그룹의 숫자에서 왔으며, KV 캐시는 긴 대화와 대규모 모델 추론을 빠르게 만드는 가장 흔한 방법 중 하나입니다.
무엇을 절약하는가
텍스트 생성은 단계별로 진행됩니다. KV 캐시가 없으면 새 토큰을 생성할 때마다 앞의 모든 토큰을 다시 계산해야 하므로 대화가 길어질수록 매 단계가 느려집니다. 캐시가 있으면 이전 계산 결과를 그대로 재사용하고 매번 새 토큰만 처리하므로 응답 시간이 대화 길이에 따라 급격히 늘어나지 않습니다. 절약되는 것은 반복 계산이지 모델이 더 똑똑해지는 것이 아니며, 답변 품질 자체가 높아지는 것도 아닙니다.
담지 못하는 경우도 있다
KV 캐시는 GPU 메모리를 사용하며 대화 길이와 모델 규모에 따라 커집니다. 아주 긴 대화에서는 캐시가 메모리를 가득 채워 시스템이 대화 앞부분을 잘라내거나 일부 캐시를 더 느린 메모리로 옮겨야 할 수 있습니다. 그러면 답변이 느려지거나 대화 초반에 언급된 세부 내용을 잊을 수 있습니다. 많은 제품이 한 번의 대화 길이를 제한하는 이유가 바로 이 비용 때문입니다. 모델이 기억하기 싫어서가 아니라 저장할 수 없고 계산 비용을 감당할 수 없기 때문입니다.
흔한 세 가지 오해
첫째, KV 캐시는 모델의 기억이 아닙니다. 페이지를 닫거나 다른 기기로 바꾸면 캐시는 사라지고, 모델이 당신에 대해 무언가를 "배운" 것이 아닙니다. 둘째, 장기 기억 기능과 같은 것이 아닙니다. 제품에서 말하는 기억은 대개 별도로 저장된 요약이나 메모이며, 추론 시의 KV 캐시와는 다릅니다. 셋째, 캐시 적중률이 높다고 답변이 반드시 맞는 것은 아닙니다. 캐시는 계산 속도만 보장할 뿐, 모델이 틀릴지 여부는 학습과 입력에 달려 있습니다.
KV 캐시를 이해하면 일상적인 현상을 판단하기 쉬워집니다. 대화가 길어지면서 느려지는 것은 대개 캐시와 계산 비용이 올라가기 때문이고, 새 대화에서 바로 빨라지는 것은 캐시가 초기화되어 처음부터 다시 시작하기 때문입니다. 그럴 때는 새 대화를 시작해 핵심 정보를 다시 알려주는 편이 오래된 대화에서 반복해서 묻는 것보다 시간을 아낄 수 있습니다.