메모리와 모델

프롬프트 캐시·Prefix Cache가 줄이는 시간

앞부분이 완전히 같을 때 이미 계산한 프리필을 다시 쓰는 기술입니다.

쉽게 말하면

매번 같은 긴 지침이나 문서를 보내는 경우, 처음 한 번 읽어 둔 결과를 다시 사용하는 기능입니다. 답변을 쓰는 속도보다 첫 답이 나오기까지의 시간을 줄여줍니다.

장비를 고를 때

개인 채팅보다 긴 공통 지침을 반복하는 업무용 도구에서 효과가 큽니다. 이 기능 하나보다 런타임의 안정성과 메모리 용량을 먼저 보세요.

이 글에서 확인할 내용

  • 공통 접두 토큰의 KV 상태를 재사용합니다.
  • 프롬프트 앞부분이 달라지면 재사용 구간이 짧아집니다.
  • 디코드 tok/s보다 프리필과 TTFT를 줄이는 기능입니다.

KV 캐시를 요청 사이에 재사용

일반 KV 캐시는 한 요청의 생성 과정에서 과거 상태를 보관합니다. 프롬프트 캐시나 prefix cache는 자주 반복되는 접두 구간의 상태를 다음 요청에서도 찾아 다시 씁니다.

긴 시스템 지침, 고정된 문서와 공통 대화 앞부분을 매번 프리필하지 않아도 되므로 캐시 적중 시 첫 토큰까지의 시간을 크게 줄일 수 있습니다.

토큰 단위로 같아야 합니다

화면상 문장이 같아 보여도 채팅 템플릿, 역할 토큰, 공백이나 도구 정의가 달라지면 토큰 접두사가 달라질 수 있습니다. 런타임은 보통 처음부터 연속으로 일치하는 구간까지만 재사용합니다.

변하기 쉬운 날짜, 사용자 ID와 요청별 지침을 시스템 프롬프트 앞부분에 넣으면 캐시 적중률이 낮아집니다. 고정 내용을 앞에, 가변 내용을 뒤에 배치하는 것이 유리합니다.

긴 입력에서 계산한 내용을 서랍에 저장하고 다음 토큰 생성 때 필요한 값을 다시 꺼내 쓰는 KV 캐시 개념 그림
KV 캐시는 앞선 입력에서 계산한 값을 보관해 다시 계산하는 일을 줄입니다. 입력이 길수록 이 보관 공간도 커집니다.

무엇이 빨라지고 무엇은 그대로인가

캐시된 토큰은 프리필 계산을 건너뛰므로 TTFT가 줄어듭니다. 첫 토큰 뒤 새 답변을 생성하는 디코드 자체는 여전히 모델이 수행하므로 지속 tok/s가 같은 비율로 빨라지는 것은 아닙니다.

짧은 프롬프트에서는 캐시 조회와 관리 비용이 절감 시간보다 클 수 있습니다. 긴 공통 접두사가 반복되는 에이전트, RAG와 다중 사용자 서비스에서 가치가 커집니다.

캐시를 많이 보관하면 메모리를 씁니다

여러 종류의 공통 지침을 저장해 두면 그만큼 메모리 사용량이 늘어납니다. 실행 프로그램은 보통 오래 쓰지 않은 항목부터 지워 공간을 확보합니다.

여러 사람이 같은 서버를 쓸 때는 사용자별 캐시가 섞이지 않도록 실행 프로그램이 정확히 구분해야 합니다. 잘못된 상태를 재사용하면 답변이 틀어지거나 다른 요청의 정보가 섞일 수 있습니다.

측정할 때 캐시 상태를 표기

완전한 캐시 미스, 일부 접두사 적중과 전체 공통 프롬프트 적중은 서로 다른 결과입니다. 벤치마크에는 재사용된 토큰 수와 새로 처리한 토큰 수를 함께 남겨야 합니다.

장비의 순수 프리필 성능을 비교하려면 캐시를 비운 첫 요청을 사용하고, 실제 반복 서비스의 체감을 알고 싶다면 예상 적중률을 반영한 별도 결과를 측정하세요.