KV 캐시 (key-value cache)
한 줄 정의: 트랜스포머가 문장을 생성할 때 이전 토큰의 키·값 벡터를 저장해 두고 다시 계산하지 않도록 하는 추론 최적화 기법이에요.
쉽게 풀면
언어 모델은 단어를 하나씩 이어서 만들어요. 새 단어를 만들 때마다 앞의 모든 단어를 처음부터 다시 계산하면 매우 느려져요. KV 캐시는 앞 단어들을 계산한 중간 결과(키와 값)를 저장해 두고 재사용해서 생성 속도를 크게 높여요.
왜 중요한가
대규모 언어 모델 서비스의 속도와 비용을 좌우하는 핵심 요소라 추론 효율화 연구에서 가장 많이 다뤄지는 주제 중 하나예요. 긴 문맥에서는 KV 캐시가 차지하는 메모리가 병목이 돼요.
논문에서는 이렇게 쓰입니다
"KV 캐시를 8비트로 양자화하여 동일 GPU에서 처리 가능한 문맥 길이를 두 배로 늘렸다."
KV 캐시의 메모리 문제를 양자화로 줄인 연구 문장이에요.
조금 더 깊게 보면
어텐션에서 새 토큰의 쿼리는 이전 모든 토큰의 키·값과 계산되는데, 이전 토큰의 키·값은 바뀌지 않으므로 저장해 두면 돼요. 그러면 한 토큰 생성 비용이 전체 길이를 다시 처리하는 것보다 크게 줄어요. 대신 메모리 사용량은 층 수, 헤드 수, 문맥 길이, 배치 크기에 비례해 커져요. 그래서 여러 헤드가 키·값을 공유하는 GQA, 캐시를 페이지 단위로 관리하는 PagedAttention, 캐시 양자화 같은 기법이 연구되었어요.
주의할 점
캐시 메모리는 CPU와 주기억장치 사이의 하드웨어 저장 장치이고, KV 캐시는 트랜스포머 추론에서 소프트웨어적으로 보관하는 중간 계산 결과예요. 학습할 때는 전체 문장을 한 번에 처리하므로 KV 캐시가 주로 추론(생성) 단계에서 쓰인다는 점도 구분해야 해요.