핵심 요약: 프롬프트 캐싱(Prompt Caching)은 요청 간 KV 캐시 텐서를 재사용하여 LLM API 입력 비용을 50%~90% 절감하고 첫 토큰 생성 시간(TTFT)을 최대 85% 단축합니다. Anthropic은 명시적 중단점을 통해 90% 읽기 할인(1,024 토큰 이상)을 제공합니다. OpenAI는 쓰기 할증료 없이 자동 50% 할인을 지원합니다. DeepSeek은 64 토큰 초저임계값과 NVMe 영구 저장을 바탕으로 80%~90%의 압도적 비용 절감을 달성합니다.
1. 개요: 상태 비저장(Stateless) LLM API 환경의 '상태 경제학'
현대 대규모 언어 모델(LLM) API는 기본적으로 상태 비저장(Stateless) 아키텍처로 설계되었습니다. /v1/chat/completions 또는 /v1/messages로 전송되는 모든 HTTP POST 요청은 전체 대화 내역, 시스템 지침, 도구 명세 및 참조 문서를 매번 온전히 전달해야 합니다. 이러한 무상태 설계는 GPU 클러스터의 부하 분산과 확장을 단순화하지만, 다중 턴 에이전트 워크플로에서는 막대한 연산 낭비와 비용 급증을 유발합니다.
Claude Code, Roo Code, Aider, Devin 또는 엔터프라이즈 RAG 시스템과 같은 자율형 에이전트 루프에서 에이전트는 반복적으로 동일한 시스템 프롬프트, OpenAPI 스키마, Model Context Protocol(MCP) 정의 및 리포지토리 코드를 재전송합니다. 일반적인 15턴 개발 세션에서 전송되는 전체 토큰의 95%~98%는 이미 처리된 정적 접두사(Static Prefix)입니다.
과거 클라우드 공급업체는 모든 요청마다 기본 입력 단가를 전부 부과하여, 추론 엔진이 변경되지 않는 컨텍스트에 대해 무거운 행렬 연산(Prefill 단계)을 반복 수행하도록 만들었습니다. 프롬프트 캐싱(Prompt Caching)은 이러한 비효율을 완벽히 해결합니다. 정적 접두사의 사전 연산된 Key-Value(KV) 텐서를 GPU 고대역폭 메모리(HBM), 호스트 RAM 또는 초고속 NVMe SSD에 유지함으로써 중복 Prefill 연산을 완전히 건너뜁니다.
체계적인 프롬프트 캐싱을 도입한 엔지니어링 팀은 일반적으로 API 비용을 60%~88% 절감하고, 첫 토큰 생성 시간(TTFT)을 수 초에서 수백 밀리초로 단축합니다.
2. 아키텍처 심층 분석: KV 캐시 메커니즘과 Prefill 연산 병목
프롬프트 캐싱의 경제성을 정확히 파악하려면 최신 AI 가속기(NVIDIA H100/B200, Google TPU v5e/v6e)에서 트랜스포머의 추론 물리 구조를 이해해야 합니다.
기존 무상태 추론 파이프라인:
[정적 시스템 프롬프트 + 도구 스키마 + 대화 기록 (64,000 토큰)]
│
▼
[전체 Prefill 단계 (O(N²) FLOPs)]
밀집 행렬 곱셈으로 모든 Q, K, V 활성화 재계산
│
▼
[첫 토큰 생성 (TTFT: 2.8초)]
[비용: 기본 입력 요율 × 64,000 토큰]
프롬프트 캐싱 활성화 파이프라인:
[정적 접두사 (60,000 토큰)] ──► [접두사 해시 완벽 일치!] ──► [저장된 KV 텐서 직접 로드]
│ (행렬 연산 바이패스)
[동적 쿼리 (4,000 토큰)] ──► [증분 데이터만 Prefill 계산] ──┤
▼
[첫 토큰 생성 (TTFT: 0.35초)]
[비용: 캐시 읽기 요율 × 60k + 기본 요율 × 4k]
어텐션(Self-Attention)의 연산 복잡도
표준 멀티헤드 셀프 어텐션에서 입력 토큰은 차원 $d_k$를 갖는 Query ($Q$), Key ($K$), Value ($V$) 행렬로 프로젝션됩니다:
$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$
프리필(Prefill) 단계에서 GPU는 프롬프트의 모든 토큰을 병렬로 처리합니다. 셀프 어텐션은 모든 토큰 쌍 간의 상호작용을 계산하므로 연산량(FLOPs)은 시퀀스 길이 $N$에 대해 2차(Quadratic)로 증가합니다:
$$\text{FLOPs}_{\text{prefill}} \approx 2 \cdot P \cdot N^2 + 4 \cdot N \cdot d_{\text{model}} \cdot d_{\text{ffn}}$$
70B 모델에서 64,000 토큰의 프롬프트를 처리할 때 첫 토큰을 생성하기 전 Prefill 연산에만 약 $5.8 \times 10^{14}$회의 부동소수점 연산이 요구됩니다.
디코드(Decode) 단계에서는 토큰이 순차적으로 하나씩 생성됩니다. 과거 토큰을 재계산하지 않기 위해 각 레이어의 Key와 Value 벡터를 메모리에 캐싱하는데, 이것이 KV 캐시(KV Cache)입니다. 모델의 레이어 수 $L$, 헤드 수 $H_{kv}$, 헤드 차원 $D$ 기준 1개 토큰당 메모리 크기는 다음과 같습니다:
$$\text{Memory}_{\text{KV}} = 2 \times 2 \times L \times H_{kv} \times D \quad \text{(FP16 / BF16 기준 바이트)}$$
프롬프트 캐싱은 단일 요청 내부의 휘발성 KV 캐시를 요청 간 공유 가능한 영구 캐시 계층으로 확장하여, 일치하는 접두사가 들어오면 Prefill 연산을 완전히 생략합니다.
3. 공급사별 아키텍처 비교: Anthropic vs OpenAI vs DeepSeek
| 아키텍처 차원 | Anthropic Claude | OpenAI (GPT-4o / o1 / o3) | DeepSeek (V3 / V4 / R1) |
|---|---|---|---|
| 활성화 메커니즘 | 명시적 중단점 (cache_control) |
완전 자동 최장 공통 접두사 매칭 | 완전 자동 최장 공통 접두사 매칭 |
| 최소 활성화 임계값 | 1,024 토큰 (Sonnet/Opus) 2,048 토큰 (Haiku) |
1,024 토큰 | 64 토큰 (KV 블록 크기 단위) |
| 블록 단위 | 사용자 정의 중단점 (요청당 최대 4개) | 1,024 초과 시 128 토큰 단위 매칭 | 정확히 64 토큰 하드웨어 블록 정렬 |
| 수명(TTL) | 5분 (기본 임시 캐시) 1시간 (확장 계층) |
5~10분 (LRU 동적 퇴출) | 수 시간~영구 (NVMe 다계층 계층) |
| TTL 갱신 | 캐시 히트 시마다 5분/1시간 갱신 | 후속 호출 시 지속 연장 | 고속 보조 스토리지에 안정적 유지 |
| 쓰기 추가 요금 | +25% (5분 TTL: 1.25x) +100% (1시간 TTL: 2.0x) |
$0.00 (기본 요금의 1.0x) | $0.00 (기본 요금의 1.0x, 추가금 없음) |
| 읽기 할인율 | 90% 할인 (기본 단가의 0.10x) | 50% 할인 (기본 단가의 0.50x) | 75%~90% 할인 (기본 단가의 0.10x~0.25x) |
| 스토리지 비용 | 초기 쓰기 가산금에 포함 | 무료 | 무료 (NVMe 오프로드 지원) |
| TTFT 단축율 | 최대 85% 단축 | 최대 50% 단축 | 최대 80% 단축 |
4. 모델별 프롬프트 캐싱 상세 가격표 (USD / 1M 토큰)
| 모델명 | 기본 입력 ($/1M) | 캐시 쓰기 ($/1M) | 캐시 읽기 ($/1M) | 읽기 할인율 | 기본 출력 ($/1M) | 최소 캐시 임계값 |
|---|---|---|---|---|---|---|
| Claude 3.5 / 3.7 Haiku | $0.80 | $1.00 (5m) / $1.60 (1h) | $0.08 | 90.0% | $4.00 | 2,048 토큰 |
| Claude 3.7 Sonnet | $3.00 | $3.75 (5m) / $6.00 (1h) | $0.30 | 90.0% | $15.00 | 1,024 토큰 |
| Claude 3 Opus / Opus 4.6 | $15.00 | $18.75 (5m) / $30.00 (1h) | $1.50 | 90.0% | $75.00 | 1,024 토큰 |
| OpenAI GPT-4o mini | $0.15 | $0.15 | $0.075 | 50.0% | $0.60 | 1,024 토큰 |
| OpenAI GPT-4o | $2.50 | $2.50 | $1.25 | 50.0% | $10.00 | 1,024 토큰 |
| OpenAI o1 | $15.00 | $15.00 | $7.50 | 50.0% | $60.00 | 1,024 토큰 |
| OpenAI o3-mini | $1.10 | $1.10 | $0.55 | 50.0% | $4.40 | 1,024 토큰 |
| DeepSeek V3 / V4 (오프피크) | $0.14 | $0.14 | $0.014 | 90.0% | $0.28 | 64 토큰 |
| DeepSeek V3 / V4 (피크) | $0.27 | $0.27 | $0.027 | 90.0% | $1.10 | 64 토큰 |
| DeepSeek R1 (추론) | $0.55 | $0.55 | $0.14 | 74.5% | $2.19 | 64 토큰 |
| Google Gemini 2.5 Flash | $0.15 | $0.15 | $0.0375 | 75.0% | $0.60 | 32,768 토큰 |
| Google Gemini 2.5 Pro | $1.25 | $1.25 | $0.3125 | 75.0% | $5.00 | 32,768 토큰 |
5. 비용 절감 수학 공식 및 90% 한계 증명
손익분기 턴 수 ($N^*$) 증명
Anthropic의 5분 TTL 모델처럼 쓰기 시 25% 가산금이 붙는 경우 ($R_{\text{write}} = 1.25 R_{\text{base}}$, $R_{\text{read}} = 0.10 R_{\text{base}}$):
$$1.25 + 0.10(N - 1) \le N \implies 1.15 \le 0.90N \implies N \ge \frac{1.15}{0.90} \approx 1.278$$
정리 1: Anthropic 5분 TTL 환경에서 2번째 호출부터 무조건 순수 이익이 발생합니다.
1시간 확장 TTL 환경 ($R_{\text{write}} = 2.0 R_{\text{base}}$):
$$2.0 + 0.10(N - 1) \le N \implies 1.90 \le 0.90N \implies N \ge 2.11$$
정리 2: Anthropic 1시간 TTL 환경에서는 3번째 호출 시 손익분기점을 돌파합니다.
90% 비용 절감 점근선 증명
긴 세션에서 $N \to \infty$ 일 때의 절감 비율 $S(N)$:
$$\lim_{N \to \infty} S(N) = 1 - \frac{R_{\text{read}}}{R_{\text{base}}}$$
- Anthropic / DeepSeek ($R_{\text{read}} / R_{\text{base}} = 0.10$): 이론적 한계 절감률은 90.0%.
- OpenAI ($R_{\text{read}} / R_{\text{base}} = 0.50$): 이론적 한계 절감률은 50.0%.
6. 프로덕션 코드 구현 예시
Anthropic Claude (Python)
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-3-7-sonnet-20250219",
max_tokens=2048,
system=[
{
"type": "text",
"text": "대규모 시스템 아키텍처 명세서...\n" * 400,
"cache_control": {"type": "ephemeral"} # 중단점 설정
}
],
messages=[{"role": "user", "content": "인증 모듈 리팩토링 방안을 작성하세요."}]
)
print("캐시 읽기 히트 토큰:", getattr(response.usage, "cache_read_input_tokens", 0))
OpenAI (TypeScript)
import OpenAI from "openai";
const openai = new OpenAI();
const response = await openai.chat.completions.create({
model: "gpt-4o",
messages: [
{ role: "system", content: "고정 기업 고객지원 가이드라인...\n".repeat(400) },
{ role: "user", content: "최근 주문 내역 확인 요청" }
]
});
console.log("캐시 적중 토큰:", (response.usage as any)?.prompt_tokens_details?.cached_tokens ?? 0);
7. 실제 엔터프라이즈 도입 성과
- 코딩 에이전트(Claude Code, 25만 줄 모노레포): 20명 엔지니어 팀의 월간 비용이 $29,700에서 $4,334/월로 대폭 감소 (85.4% 순수 절감).
- 금융 규제 RAG(OpenAI GPT-4o): 월 5만 건 쿼리 처리 기준 $5,625에서 $2,975.63/월로 축소 (47.1% 절감).
- 대규모 고객지원 봇(DeepSeek V3/V4): 월 200만 건 대화 기준 $3,360에서 $378.34/월로 절감 (88.7% 절감).
8. 캐시를 무효화하는 5가지 치명적 안티패턴
- 시스템 프롬프트에 동적 타임스탬프 삽입: 초 단위로 해시가 바뀌어 캐시 적중률이 0%가 됩니다.
- 도구(Tools) 배열 직렬화 순서 변동: JSON 키 순서가 바뀌면 해시 불일치가 발생합니다. 도구 배열을 알파벳순으로 정렬하십시오.
- 프롬프트 중간에 동적 변수 삽입: 공통 접두사 원칙에 따라 동적 데이터는 반드시 배열의 가장 마지막에 위치시켜야 합니다.
- 5분 TTL 만료 간과: 인간 대기 시간이 5분을 초과하면 쓰기 가산금이 재부과됩니다. 긴 세션에는 1시간 TTL을 적용하십시오.
- 최소 활성화 임계값 미달: 1,024 토큰 미만은 캐싱이 활성화되지 않습니다.
9. LLMPodium 추천 및 최종 결론
- 자율 코딩 에이전트 최적: Anthropic Claude 3.7 Sonnet의 90% 읽기 할인으로 높은 개발 ROI를 달성합니다.
- 코드 수정 없는 즉시 적용: OpenAI GPT-4o의 자동 캐싱을 통해 인프라 작업 없이 50% 비용을 즉시 감축합니다.
- 초대규모 대량 트래픽 최적: DeepSeek V3/V4의 64 토큰 임계값과 $0.014/1M 요율로 최고의 경제성을 실현합니다.