logo

KV 캐시

트랜스포머 모델에서 계산 결과를 저장·재사용하여 추론 속도를 높이는 메모리 기반 최적화 기술

Key points

  • 이전 토큰의 키(key)와 값(value)을 저장해 중복 계산을 줄입니다.
  • 문장이 길어질수록 생성 속도를 크게 향상시키지만 메모리 사용량은 증가합니다.
  • 실시간 대규모 언어 모델 서비스의 핵심 기술 중 하나입니다.

대규모 언어 모델(LLM)은 문장을 한 토큰씩 생성합니다. 예를 들어 “오늘 날씨는”이라는 문장을 입력받아 다음 토큰을 예측하고, 그 결과를 다시 입력으로 사용해 다음 토큰을 생성하는 방식입니다. 이 과정에서 모델은 매번 이전 문맥을 다시 읽고 계산해야 합니다.

오늘날의 언어 모델들은 대부분 트랜스포머(Transformer) 구조를 사용하는데, 이러한 모델은 문장을 구성하는 각 토큰에 대해 쿼리(query), 키(key), 값(value)을 생성합니다. 쿼리는 “무엇을 찾고 싶은가”에 해당하고, 키는 “어떤 정보인가”, 값은 “실제 전달할 정보”라고 볼 수 있습니다.

이것을 매번 계산하면 비효율적입니다. 그래서 이전 토큰의 키와 값을 저장해 둡니다. 이것이 KV 캐시(cache)입니다. K는 키, V는 값을 의미합니다.

이 방식 덕분에 추론(inference) 속도가 크게 향상됩니다. 특히 긴 문장을 생성할 때 효과가 매우 큽니다. 만약 KV 캐시가 없다면 문장이 길어질수록 계산량이 급격히 증가합니다.

KV 캐시는 속도를 높여 주지만, 대신 메모리를 많이 사용합니다. 왜냐하면 이전 토큰들의 키와 값을 모두 저장해야 하기 때문입니다.

관련 위키