많은 개발자와 기업이 유사한 프롬프트를 반복해서 사용할 때 대규모 언어 모델의 높은 지연 시간과 토큰 비용으로 어려움을 겪습니다. 매 요청마다 모델이 동일한 지시나 문서를 다시 처리해야 하므로 컴퓨팅 자원과 시간이 낭비됩니다.
이 글에서는 프롬프트 캐싱(Prompt Caching)이 사전 계산된 프롬프트 접두사를 저장하여 요청 간에 재사용함으로써 이 문제를 해결하는 방법을 설명합니다. 프롬프트 캐시와 KV 캐시의 차이점을 명확히 하고, Novita AI와 같은 시스템이 효율적인 캐싱을 구현하는 방식을 보여주며, 프롬프트 구조화, 캐시 성능 모니터링, 오용 및 보안 위험 방지에 대한 실용적인 지침을 제공합니다.
프롬프트 캐싱이란?
프롬프트 캐싱이란 프롬프트의 사전 계산된 부분(예: 시스템 지침, 반복되는 맥락 또는 문서)을 저장하여, 동일하거나 유사한 프롬프트를 재사용할 때 모델이 처음부터 다시 계산하지 않도록 하는 것을 말합니다.
프롬프트 캐시가 성공적으로 적중하려면 다음 토큰 시퀀스가 동일해야 합니다:
System: [system_instructions] # 고정 접두사, 재사용 가능
Document: [retrieved_context] # 변경 시 캐시 재사용 불가
User: [query] # 변경 시 캐시 재사용 불가
| 단계 | 설명 |
|---|---|
| 1. 프롬프트 제출 | 길거나 반복되는 프롬프트가 포함된 요청이 모델로 전송됩니다. |
| 2. 인코딩 및 캐싱 | 시스템이 프롬프트 접두사를 내부 임베딩 또는 hidden state로 인코딩한 후 캐시에 저장합니다. |
| 3. 캐시 적중 확인 | 이후 요청에 동일한 접두사가 포함되면 시스템이 일치를 감지하고 캐시된 표현을 로드합니다. |
| 4. 재사용 및 이어서 생성 | 모델은 해당 접두사를 다시 처리하지 않고 캐시된 상태에서 생성을 이어갑니다. |
| 5. 만료 | 캐시된 항목은 정의된 TTL(예: Amazon Bedrock에서 5분 비활성 시) 후 만료됩니다. TTL은 재사용 시마다 초기화됩니다. |
https://www.youtube.com/watch?v=RDjaUJz-uWo
프롬프트 캐시와 KV 캐시는 어떻게 다른가?
| 항목 | KV 캐시 | 프롬프트 캐시 |
|---|---|---|
| 범위 | 단일 생성 또는 세션 내 | 여러 요청 또는 세션 간 |
| 목적 | 이전 토큰에 대한 어텐션 재연산 방지 | 반복되는 프롬프트 접두사 재처리 방지 |
| 저장 데이터 | Transformer 어텐션 키와 값 | 인코딩된 프롬프트 접두사 또는 모듈 |
| 이점 | 토큰당 지연 시간 감소 | 입력 토큰 비용 및 전체 프롬프트 처리 시간 감소 |
| 일반적 사용처 | 자기회귀 디코딩 (예: LLM 생성) | 애플리케이션 또는 API에서 공통 프롬프트 재사용 |
프롬프트 캐싱이 지연 시간과 컴퓨팅 비용을 어떻게 줄이나?
프롬프트 캐싱은 모델 내부가 아닌 시스템 수준에서 작동합니다. 모델 자체는 모든 토큰을 동등하게 처리하며, "프롬프트"와 "참조 콘텐츠"를 구분하지 않습니다. 반복되는 토큰 접두사가 감지되면 시스템은 해당 계산된 표현(예: 임베딩 및 트랜스포머 상태)을 캐시합니다. 동일한 접두사가 포함된 후속 요청에서 모델은 해당 부분을 다시 계산하지 않고 새 토큰만 처리합니다. 이렇게 하면 중복 계산이 줄어들고 지연 시간이 낮아지며 토큰 관련 비용이 절감됩니다.


Novita AI의 프롬프트 캐싱
Novita AI는 여러 고컨텍스트 모델에서 프롬프트 캐시 지원을 포함하도록 모델 라인업을 확장하여, 개발자가 길거나 반복되는 작업에 대해 비용을 크게 절감하고 지연 시간을 개선할 수 있도록 했습니다. 프롬프트 캐싱은 이전에 사용된 프롬프트나 임베딩을 저장하여, 동일한 콘텐츠를 참조하는 후속 API 호출이 훨씬 낮은 Cache Read 요금으로 처리되도록 합니다.
이 기능은 다중 턴 대화, 검색 증강 생성(RAG) 시스템, 또는 대규모 시스템 프롬프트를 재사용하는 워크플로 파이프라인에 이상적입니다. 캐시 읽기를 활용하면 팀은 모델 정확도와 컨텍스트 무결성을 유지하면서 더 빠른 응답과 더 낮은 비용을 달성할 수 있습니다.
지원 모델 및 가격
| 모델 | 컨텍스트 윈도우 | 입력 가격 (1M 토큰당) | Cache Read (1M 토큰당) | 출력 가격 (1M 토큰당) |
|---|---|---|---|---|
| deepseek/deepseek-v3-0324 | 163,840 | $0.27 / Mt | $0.135 / Mt | $1.12 / Mt |
| deepseek/deepseek-r1-0528 | 163,840 | $0.70 / Mt | $0.35 / Mt | $2.50 / Mt |
| zai-org/glm-4.6 | 204,800 | $0.60 / Mt | $0.11 / Mt | $2.20 / Mt |
| zai-org/glm-4.5 | 131,072 | $0.60 / Mt | $0.11 / Mt | $2.20 / Mt |
| zai-org/glm-4.5v | 65,536 | $0.60 / Mt | $0.11 / Mt | $1.80 / Mt |
💡 왜 중요한가
최대 204k 토큰의 컨텍스트 길이로, 이 모델들은 전체 문서, 대본, 코드베이스 등 매우 긴 입력을 처리할 수 있습니다. 프롬프트 캐싱이 추가되면 사용자는 매번 전체 입력 비용을 지불하지 않고도 무거운 프롬프트를 재사용할 수 있어, 반복 쿼리에서 총 지출을 줄이고 응답 시간을 개선할 수 있습니다.
개발자는 이제 Novita AI 인프라에서 확장 가능하고 비용 효율적이며 컨텍스트가 풍부한 AI 애플리케이션을 바로 구축할 수 있습니다.
프롬프트 캐싱을 더 효과적으로 사용하는 방법
적중률을 높이려면 프롬프트 구조를 어떻게 작성해야 하나?
정적 접두사(지침, 문서, 템플릿)와 가변 쿼리를 분리하세요.
요청 간에 접두사 텍스트가 동일하도록 유지하세요.
캐시 체크포인트 경계를 명확히 정의하세요.
"System: [역할]… Document: [컨텍스트]… User: [쿼리]"와 같은 모듈식 템플릿을 사용하세요.
캐시는 얼마나 지속되나?
구현 및 만료 시간은 제공자, 워크로드, 구성에 따라 다릅니다. 일부 시스템은 몇 분 또는 몇 시간 후에 캐시를 만료시키고, 다른 시스템은 메모리 한계에 도달할 때까지 유지합니다.
프롬프트를 약간 변경해도 캐시가 적중되나?
보장되지 않습니다. 캐시 적중은 정확한 접두사 일치 또는 구조적 재사용에 의존합니다. 작은 텍스트나 형식 차이도 캐시 미스를 유발할 수 있습니다.
동적 콘텐츠를 캐시할 수 있나?
프롬프트의 정적 부분만 효과적으로 캐시할 수 있습니다. 사용자 데이터, 타임스탬프, 실시간 값과 같은 동적 요소는 캐시된 접두사 외부에 유지해야 합니다.
다른 모델 버전이 동일한 캐시를 재사용할 수 있나?
일반적으로 불가능합니다. 캐시는 특정 모델 아키텍처, 토크나이저, 임베딩 공간에 연결됩니다. 모델을 업그레이드하거나 변경하면 기존 캐시가 무효화됩니다.
긴 텍스트나 RAG(검색 증강 생성) 시나리오는 어떻게 되나?
프롬프트 캐싱은 문서 기반 Q&A와 같이 큰 정적 문서나 접두사가 반복될 때 가장 효과적입니다. RAG에서는 검색된 컨텍스트가 쿼리마다 달라지므로 접두사의 일부만 재사용할 수 있어 캐시 적중률이 낮습니다.
프롬프트 캐싱에서 주의해야 할 위험
오래되었거나 잘못된 적중
문서가 업데이트되는 등 컨텍스트가 변경되면 캐시된 접두사가 오래될 수 있습니다.
경계 오류나 일치하지 않는 동적 콘텐츠는 의미적 드리프트를 유발할 수 있습니다.
개인정보 및 보안 위험
멀티 테넌트 시스템에서 공유된 KV 또는 프롬프트 캐시는 사용자 간 데이터 유출을 초래할 수 있습니다.
“PROMPTPEEK” 공격은 공유 캐시 사이드 채널을 통해 프롬프트 재구성이 가능함을 보여주었습니다.
공유 캐시된 접두사에 동적 또는 사용자별 데이터를 포함하지 마십시오.
효과 모니터링
적중률과 미스율, 캐시에서 읽은 토큰 대 총 토큰, 지연 시간 감소, 비용 절감을 추적하세요.
오용 방지
정적 콘텐츠만 캐시하세요.
소스 데이터가 변경되면 캐시를 무효화하세요.
개인정보를 유지하기 위해 사용자 또는 테넌트별로 캐시를 격리하세요.
향후 방향
캐시 식별 개선 및 의미적 접두사 일치 지원.
모델 및 세션 전반에 걸친 통합되고 안전한 캐시 시스템 구축.
GPU, CPU, 디스크 간 압축 및 오프로딩 사용.
프롬프트 캐싱은 동일한 접두사 임베딩을 요청 간에 재사용하여 중복 계산을 줄이고 지연 시간을 낮추며 토큰 비용을 절감합니다. 그 효과는 안정적인 프롬프트 구조, 정적/동적 콘텐츠의 신중한 분리, 책임 있는 캐시 관리에 달려 있습니다. Novita AI와 같은 제공자는 저렴하고 안정적인 캐싱이 보안과 정확성을 유지하면서 전체 효율성을 어떻게 향상시킬 수 있는지 보여줍니다.
Novita AI는 개발자가 간단한 API를 통해 AI 모델을 쉽게 배포할 수 있도록 하고, 구축 및 확장을 위한 저렴하고 안정적인 GPU 클라우드를 제공하는 AI 클라우드 플랫폼입니다.
