Skip to main content
PromptQuorumPromptQuorum

로컬 LLM을 위한 프롬프트 캐싱이란 무엇입니까?

빠른 답변

프롬프트 캐싱은 프롬프트 접두부에 대해 계산된 key-value(KV) 캐시를 저장하여, 이후 요청이 동일한 접두부를 공유할 때—고정된 system prompt, 재사용되는 문서, 또는 이전 대화 턴 등—다시 계산할 필요가 없도록 합니다. 접두부가 반복되는 워크로드에서는 프롬프트 처리 시간을 크게 줄여주지만, 모든 요청이 서로 무관하다면 아무런 이점이 없습니다.

  • 모델의 출력이 아니라 프롬프트 접두부의 KV 캐시를 저장함
  • 가장 큰 이점: 길고 고정된 system prompt, 재사용되는 문서, 다중 턴 대화
  • 호출 간에 공유되는 접두부가 없는 단발성 요청에는 이점 없음

업데이트: 2026년 7월 15일

Technique & Concept Explainers기초 이해

핵심 요점

  • 프롬프트 캐싱은 프롬프트 접두부에 대해 계산된 KV 캐시를 저장하여, 이후 요청이 동일한 토큰을 다시 처리하는 대신 이를 재사용할 수 있게 합니다
  • 공유되는 접두부가 크고 자주 반복될수록 속도 향상 폭이 커집니다 — 수천 건의 요청에서 재사용되는 길고 변하지 않는 system prompt는 매우 큰 이점을 얻습니다
  • 대부분의 로컬 서빙 환경에서는 다중 턴 대화가 자동으로 이점을 얻습니다. 새로운 턴마다 이전 대화 전체를 접두부로 공유하기 때문입니다
  • 캐싱은 프롬프트 처리(입력) 측면에서만 도움이 되며, 토큰 생성(출력)에는 도움이 되지 않습니다 — 첫 토큰까지의 시간을 줄여줄 뿐, 생성이 시작된 이후의 초당 토큰 수에는 영향을 주지 않습니다

캐싱이 실제로 속도를 높이는 방식

프롬프트를 처리한다는 것은, 모델이 응답 생성을 시작하기 전에 모든 입력 토큰에 대해 key-value(KV) 표현을 계산한다는 의미입니다. 이 프롬프트 처리 단계는 생성이 시작되기 전에 이루어지며, 그 비용은 프롬프트 길이에 비례합니다. 캐싱이 없다면 2,000토큰 규모의 system prompt는 매번 바이트 단위로 동일하더라도 모든 요청마다 처음부터 다시 처리됩니다.

캐싱은 특정 접두부에 대해 계산된 이 KV 표현을 정확한 토큰 시퀀스에 연결하여 저장합니다. 새 요청이 동일한 토큰으로 시작하면, 캐시된 KV 값이 그대로 재사용되고 프롬프트 중 새롭고 캐시되지 않은 부분만 처리하면 됩니다. 실제 효과로는, 입력 대부분을 다시 계산할 필요가 없어지므로 캐시 히트가 발생할 때 첫 토큰까지의 시간이 크게 줄어듭니다.

이것이 다중 턴 대화가 거의 자동으로 이점을 얻는 이유입니다. 대화의 3번째 턴은 1번째와 2번째 턴을 접두부로 포함하므로, 캐싱을 인식하는 서빙 환경은 전체 대화 기록을 다시 처리하지 않고 가장 최근 턴만 처리합니다.

실제로 이점을 얻기 위한 프롬프트 구성 방법

  • **공유되고 변하지 않는 내용을 앞에 배치합니다.** 요청 간에 동일하게 유지되는 system prompt, 지침, 참고 문서는 요청마다 달라지는 가변 콘텐츠보다 앞에 와야 합니다 — 캐싱은 정확히 일치하는 접두부에서만 작동하므로, 첫 번째 차이점 이전의 모든 내용이 재사용되는 부분입니다.
  • **요청 간에 공유 접두부를 바이트 단위로 동일하게 유지합니다.** system prompt에서 한 글자만 달라져도(타임스탬프, 무작위 ID 등) 접두부 일치가 깨져 전체 재처리가 강제됩니다 — 요청별로 달라지는 부분은 재사용 가능한 내용 뒤, 즉 프롬프트 끝부분으로 옮기십시오.
  • **서로 무관한 단발성 요청에는 캐싱이 도움이 될 것이라 기대하지 마십시오.** 워크로드가 공유되는 설정 없이 대부분 일회성 질문으로 구성되어 있다면, 캐싱이 재사용할 것이 없습니다 — 이 기법의 가치는 실제로 공통 접두부를 공유하는 트래픽의 비율에 비례합니다.
  • **장시간 이어지는 대화는 캐시 보존 설정에서 가장 큰 이점을 얻습니다.** 사용 중인 서빙 환경이 캐시된 접두부를 제거하기 전까지 얼마나 오래 유지하는지 확인하십시오 — 너무 공격적으로 제거되는 캐시는 턴 사이에 간격이 있는 대화에는 도움이 되지 않습니다.

자주 묻는 질문

프롬프트 캐싱이 모델의 출력을 변경합니까?
아닙니다. 캐싱은 공유 접두부가 내부적으로 처리되는 방식에만 영향을 미치며, 전체 재처리와 수학적으로 동일한 결과를 더 빠르게 생성합니다. 이는 성능 최적화이며 모델의 동작이나 품질을 바꾸지 않습니다.
프롬프트 캐싱이 토큰 생성 속도에도 도움이 됩니까, 아니면 초기 응답 시간에만 도움이 됩니까?
초기 응답 시간(첫 토큰까지의 시간)에만 도움이 됩니다. 생성이 시작되면 캐싱 여부와 관계없이 토큰은 동일한 생성 속도로 하나씩 생성됩니다 — 캐싱은 중복된 프롬프트 처리 작업을 제거할 뿐, 생성 단계 자체를 없애지는 않습니다.
캐싱은 VRAM을 얼마나 사용합니까?
캐시된 KV 데이터는 모델 자체와 함께 VRAM에 존재하며, 그 크기는 캐시되는 컨텍스트의 양과 동시에 진행되는 대화 수에 비례합니다. 여러 개의 긴 대화를 동시에 캐싱하면 VRAM 사용량이 눈에 띄게 늘어날 수 있습니다 — 이는 VRAM이 제한된 하드웨어에서 캐싱 깊이와 실질적으로 절충해야 하는 부분입니다.
모든 로컬 서빙 도구가 프롬프트 캐싱을 지원합니까?
지원 여부와 기본 동작은 도구마다 다릅니다 — 일부는 세션 내 다중 턴 사용에 대해 자동으로 캐싱하고, 일부는 명시적인 설정이 필요하며, 캐시 보존 기간(접두부가 제거되기 전까지 캐시로 유지되는 시간) 또한 도구마다 다릅니다. 사용 중인 서빙 도구의 문서를 확인하여 캐싱 동작 방식과 이를 제어하는 설정을 확인하십시오.