프로그래밍 기초 · 해시와 캐시: 공간으로 시간을 사다

캐시: AI 청구서의 보이지 않는 할인

지난 레슨의 해시 테이블이 「어떻게 순식간에 찾을까」를 풀었다면, 이번엔 다른 문제예요: 이미 계산한 건 두 번 계산하지 마세요. 모델 가격표의 「캐시 히트 반값, 심지어 1할」, 청구서에서 아끼는 모든 돈 뒤에는 같은 수납 방식이 있어요—계산한 결과를 저장해 두고 다음에 바로 꺼내기.

일상 장면부터

「37 × 89 = 3293」을 한 번 계산했는데, 다음 날 또 물어요—세로셈을 다시 할까요? 아니요, 답을 바로 말하죠. 캐시는 컴퓨터의 그 「바로 답하기」예요: 계산 결과를 key로 지난 레슨의 해시 테이블에 넣고, 같은 key가 오면 한 번에 꺼냅니다. 해시 테이블은 「어디에, 어떻게 찾을지」, 캐시는 「무엇을 저장할 가치가 있는지」. 두 레슨을 합쳐야 완전한 「공간으로 시간을 사다」예요.

인터랙티브 1 · KV Cache: 같은 앞부분을 두 번 계산하지 마세요

대규모 모델이 글자를 하나 생성할 때마다 앞 token을 전부 「되돌아보고」 각 token의 어텐션 중간 결과를 계산해요. 핵심은: 접두가 똑같으면 중간 결과도 똑같아요—그럼 두 번째 라운드에서 왜 다시 계산할까요? 아래 작은 칸이 각각 token이에요. 「1라운드 재생」을 누른 뒤 「2라운드 재생」을 누르세요. 눈여겨보세요 2라운드에서 초록 칸이 나타나는 속도: 계산된 게 아니라 캐시에서 가져온 거예요.

계산 중(연산 소모) 이번 라운드 계산됨 캐시 히트, 계산 면제 아직
1라운드 대화
시스템 프롬프트 + 질문①—모든 token을 처음부터 계산
2라운드 대화
접두(시스템 프롬프트 + 1라운드 전부) 한 글자도 안 바뀜
먼저 1라운드를 재생해 token이 하나씩 켜지며 계산되는 걸 보세요
2라운드 계산량 비교(칸 수 = 계산할 token 수)
KV Cache 없음
0개 token
KV Cache 있음
0개 token
KV Cache가 저장하는 건 「이미 계산한 어텐션 중간 결과」(각 token의 Key와 Value—이름이 여기서 왔어요), 답 자체가 아니에요. 대화가 한 라운드 늘수록 접두가 길어지고 아끼는 것도 커져요—실제 시스템 프롬프트는 수천 token이 흔하고, 라운드마다 다시 계산하면 라운드마다 정가예요. 모델사 가격표의 「캐시 히트 입력 token 1할」이 바로 이 초록 칸을 말해요.
바로 쓸 수 있는 검수 직감: KV Cache는 「접두가 똑같을」 때만 인정해요. 앱이 라운드마다 시스템 프롬프트를 한 글자만 바꿔도(예: 맨 앞에 현재 시각), 캐시는 라운드마다 깨지고 청구서가 몇 배로 뛰어요. 변하는 내용은 프롬프트 에, 고정은 에—1분이면 큰돈을 아끼는 아키텍처 습관이에요.
인터랙티브 2 · 시맨틱 캐시 청구서

KV Cache가 아끼는 건 「같은 앞부분」이고, 더 센 수도 있어요: 같은 질문은 답 전체를 다시 계산하지 마세요. 고객지원 봇이 매일 「반품 어떻게 해요」를 1만 번 듣는데, 말투는 제각각이어도 뜻은 같아요—「뜻」을 key로(벡터 유사도, 10번째 레슨), 히트면 저장 답을 바로 돌려주고 모델 호출은 0. 히트율 슬라이더를 끌어 눈여겨보세요 월 청구서 변화.

장면: 고객지원 봇이 매일 10,000회 질문받고, 호출당 약 0.02위안, 한 달 30일. 캐시 히트면 저장 답을 바로 반환해 호출비가 안 나와요.
0%
이번 달 납부
¥6,000
매일 10,000회 전부 실제 호출
캐시가 아껴 준 금액
¥0
Harness 핵심 편에서 말한 시맨틱 캐시 전략이 돈을 아끼는 장면이에요

⚠️ 그런데—반품 정책이 바뀌면?

캐시에는 아직 옛 정책으로 만든 표준 답이 누워 있고, 봇은 열흘 보름 진지하게 그걸로 답해요—캐시 없을 때보다 더 안정적으로, 더 당당하게 틀려요. 그래서 엔지니어들은 말해요: 캐시에서 제일 어려운 건 저장이 아니라, 언제 버릴지 아는 것(용어 「캐시 무효화」, CS 양대 난제 중 하나). 흔한 방법: TTL(예: 24시간 만료), 또는 정책이 바뀌는 순간 관련 항목을 지워요. 어떤 캐시든 이 단계를 먼저 설계하세요—안 그러면 아낀 돈을 고객 민원으로 갚아요.

AI 세계에서의 진짜 모습

「이미 계산한 건 다시 계산하지 마세요」는 어디에나 있어요. 아래 네 가지는 매일 누리는 것들이고, 본질은 같은 구조예요.

🧠

KV Cache

대규모 모델 추론의 기본 장비: 접두 token의 어텐션 중간 결과는 한 번만 계산. 없으면 긴 대화는 아예 못 돌아가요.

💬

시맨틱 캐시

「질문의 뜻」을 key로, 비슷한 질문은 답을 재사용. 고빈도 고객지원에서 호출비 절반 이상을 깎을 수 있어요.

🌐

브라우저 캐시

이미지·스타일을 한 번 받아 로컬에 두고, 두 번째 페이지는 순식간—웹이 빠른 이유의 절반은 이것이에요.

🗺

CDN

콘텐츠를 가장 가까운 POP에 미리 두어, 전국 사용자가 로컬 서버처럼 느껴요. 캐시 + 지리—같은 수예요.

이 강의가 전하고 싶은 것