캐시: AI 청구서의 보이지 않는 할인
지난 레슨의 해시 테이블이 「어떻게 순식간에 찾을까」를 풀었다면, 이번엔 다른 문제예요: 이미 계산한 건 두 번 계산하지 마세요. 모델 가격표의 「캐시 히트 반값, 심지어 1할」, 청구서에서 아끼는 모든 돈 뒤에는 같은 수납 방식이 있어요—계산한 결과를 저장해 두고 다음에 바로 꺼내기.
「37 × 89 = 3293」을 한 번 계산했는데, 다음 날 또 물어요—세로셈을 다시 할까요? 아니요, 답을 바로 말하죠. 캐시는 컴퓨터의 그 「바로 답하기」예요: 계산 결과를 key로 지난 레슨의 해시 테이블에 넣고, 같은 key가 오면 한 번에 꺼냅니다. 해시 테이블은 「어디에, 어떻게 찾을지」, 캐시는 「무엇을 저장할 가치가 있는지」. 두 레슨을 합쳐야 완전한 「공간으로 시간을 사다」예요.
대규모 모델이 글자를 하나 생성할 때마다 앞 token을 전부 「되돌아보고」 각 token의 어텐션 중간 결과를 계산해요. 핵심은: 접두가 똑같으면 중간 결과도 똑같아요—그럼 두 번째 라운드에서 왜 다시 계산할까요? 아래 작은 칸이 각각 token이에요. 「1라운드 재생」을 누른 뒤 「2라운드 재생」을 누르세요. 눈여겨보세요 2라운드에서 초록 칸이 나타나는 속도: 계산된 게 아니라 캐시에서 가져온 거예요.
1라운드 대화
시스템 프롬프트 + 질문①—모든 token을 처음부터 계산2라운드 대화
접두(시스템 프롬프트 + 1라운드 전부) 한 글자도 안 바뀜2라운드 계산량 비교(칸 수 = 계산할 token 수)
KV Cache가 아끼는 건 「같은 앞부분」이고, 더 센 수도 있어요: 같은 질문은 답 전체를 다시 계산하지 마세요. 고객지원 봇이 매일 「반품 어떻게 해요」를 1만 번 듣는데, 말투는 제각각이어도 뜻은 같아요—「뜻」을 key로(벡터 유사도, 10번째 레슨), 히트면 저장 답을 바로 돌려주고 모델 호출은 0. 히트율 슬라이더를 끌어 눈여겨보세요 월 청구서 변화.
⚠️ 그런데—반품 정책이 바뀌면?
캐시에는 아직 옛 정책으로 만든 표준 답이 누워 있고, 봇은 열흘 보름 진지하게 그걸로 답해요—캐시 없을 때보다 더 안정적으로, 더 당당하게 틀려요. 그래서 엔지니어들은 말해요: 캐시에서 제일 어려운 건 저장이 아니라, 언제 버릴지 아는 것(용어 「캐시 무효화」, CS 양대 난제 중 하나). 흔한 방법: TTL(예: 24시간 만료), 또는 정책이 바뀌는 순간 관련 항목을 지워요. 어떤 캐시든 이 단계를 먼저 설계하세요—안 그러면 아낀 돈을 고객 민원으로 갚아요.
「이미 계산한 건 다시 계산하지 마세요」는 어디에나 있어요. 아래 네 가지는 매일 누리는 것들이고, 본질은 같은 구조예요.
KV Cache
대규모 모델 추론의 기본 장비: 접두 token의 어텐션 중간 결과는 한 번만 계산. 없으면 긴 대화는 아예 못 돌아가요.
시맨틱 캐시
「질문의 뜻」을 key로, 비슷한 질문은 답을 재사용. 고빈도 고객지원에서 호출비 절반 이상을 깎을 수 있어요.
브라우저 캐시
이미지·스타일을 한 번 받아 로컬에 두고, 두 번째 페이지는 순식간—웹이 빠른 이유의 절반은 이것이에요.
CDN
콘텐츠를 가장 가까운 POP에 미리 두어, 전국 사용자가 로컬 서버처럼 느껴요. 캐시 + 지리—같은 수예요.
이 강의가 전하고 싶은 것
- 캐시 = 이미 계산한 건 다시 계산하지 마세요: 결과를 key로 해시 테이블에 두고 다음에 바로 꺼냄—지난 레슨의 구조가 이번 레슨에서 돈을 벌기 시작해요
- KV Cache는 접두를 봐요: 고정은 프롬프트 앞, 변하는 건 끝—캐시 히트율이 청구서를 결정해요
- 시맨틱 캐시는 더 세요: 뜻이 같은 질문은 모델도 안 부르고, 고빈도에서 절감 효과가 히트율에 비례해 커져요
- 캐시 세 질문: 무엇을(재사용할 가치 있는 결과), 어디에(메모리 / 디스크 / 사용자 근처), 언제 버릴지(제일 어려운 질문)
- 검수 관점: 「요청마다 모델을 다시 부르거나 다시 계산」하는 설계를 보면 「왜 캐시가 없지?」라고 물어야 해요