All notes

다국어 캐시 세금

현장 노트 두 편이 알고 보니 같은 부등식이었다. 그래서 논문으로 정리해 데이터까지 공개하고, 우리 주장 중 검증을 못 넘긴 것도 그대로 적었다.

5 분 읽기서울과 나트랑에서 씁니다

이 블로그의 노트 두 편, 영어가 가장 늦게 도달하는 캐시 바닥 이야기와 그 바닥을 넘기려고 프롬프트를 채운 이야기는 알고 보니 하나의 부등식의 양면이었다. 블로그 글로 끝내기엔 아까워서 8월을 들여 제대로 했다. 12개 언어, 4개 토크나이저 계열, 실제 청구 검증, 통제된 품질 실험, 그리고 재현에 필요한 걸 전부 붙인 프리프린트다.

The Multilingual Cache Tax, INTFRAME Research, DOI 10.5281/zenodo.22081426. 논문은 CC BY 4.0, 코드는 MIT, 재현 패키지 포함이다.

한 줄로 줄인 주장

토큰 수로 매긴 캐시 바닥은, 언어별 토큰 인플레이션을 실제 제공한 서비스와는 아무 상관 없는 비용 차이로 바꿔놓는다. 프롬프트가 긴 구간에서는 캐시가 언어별 격차를 그대로 보존한다. 할인이 모든 언어를 같은 배수로 깎기 때문이다. 바닥 근처에서는 부호가 뒤집혀서, 가장 덜 부푸는 언어인 영어가 정가를 내는 쪽이 된다. 어느 쪽 세금을 내는지는 내 프리픽스가 가격표의 어떤 숫자 위아래 어디에 있느냐로만 갈린다.

논문까지 간 이유

언어쌍의 인플레이션을 i, 캐시 요금 배수를 r이라고 쓰자. 바닥 근처의 불이익은 r · i < 1일 때만 생긴다. 그리고 패딩으로 거기서 빠져나오는 게 이득인 조건도 정확히 같다. 함정과 비상구가 같은 부등식이라는 뜻이고, 그래서 탈출 가능성은 운 좋은 숫자 조합이 아니라 구조적 성질이다.

여기엔 역사가 하나 붙는다. 2024년의 캐시 요금 0.5× 시절에는, 태국어처럼 많이 부푸는 언어쌍(옛 토크나이저에서 4.4×)은 r · i = 2.2라서 바닥 근처 불이익이라는 게 아예 없었다. 업계가 0.1×로 내려간 것이 이 아티팩트를 만들었고, 같은 변화가 빠져나갈 길까지 보장했다.

입력값은 실제로 있는 자리에서 잰다

벤치마크 산문은 실제 서비스가 무는 값을 부풀린다. 프로덕션 시스템 프롬프트는 대부분 언어 중립적인 뼈대다. JSON 스키마, 태그, 형식 규칙 같은 것들이고 아무도 그걸 번역하지 않는다. 우리 코퍼스에서 뼈대는 영어 토큰의 32~66%, 중앙값 54%였다. 실제 배포가 그러듯 지시문 알맹이만 현지화하면 실효 인플레이션이 뚝 떨어진다.

언어벤치마크 산문실제 시스템 프롬프트영어 초과분 감소
한국어1.47×1.26×45%
태국어1.97×1.48×50%
중국어1.25×1.12×52%

논문의 금액은 전부 이 보수적인 실제 프롬프트 값으로 계산했다. 벤치마크 값으로 계산하면 격차는 더 벌어진다. 시스템 프롬프트 하나를 월 100만 요청에 재사용하는 서비스를 중간 가격대 모델로 돌린다고 하자. 900 토큰짜리 영어 프롬프트는 바닥 아래라 캐시가 안 걸리고 프롬프트 비용이 월 1,880달러쯤 나온다. 1,134 토큰인 한국어판은 캐시가 걸려서 505달러다. 모르고 돌린 영어 배포가 같은 프리픽스에 3.7배를 무는 셈이다. 그 영어 프롬프트를 바닥까지 채우면 285달러로, 셋 중 제일 싸진다. 프롬프트가 더 길어져 둘 다 캐시되는 구간에서는 연 1,960달러쯤의 격차가 남고, 이건 패딩으로 못 없앤다.

우리가 틀렸던 것

초판에서 우리는 바닥 근처 불이익이 구조적 비용이라고 주장했다. 아니었고, 그 주장을 방어하려고 돌린 패딩 실험이 우리 주장을 뒤집었다. 강한 버전을 철회하고 다시 발행했다. 철회 사실은 조용히 고쳐 넣지 않고 기록에 그대로 적었다.

결과 절 하나는 통째로 잘랐다. 지연 시간 축이 있었는데, 클라이언트 한 대에서 잰 첫 토큰 도착 시간은 우리가 하고 싶던 언어별 주장을 받쳐주기엔 너무 시끄러웠다. 측정 스크립트는 재현 패키지에 남겼고, 탐색용이며 논문에는 안 들어갔다고 라벨을 붙였다. 자기가 제일 아끼는 발견을 지우는 비용은 발행 전이 발행 후보다 싸다.

범위도 제목보다 좁다. 실제 청구 검증은 OpenAI 한 곳이고, 다른 제공사 수치는 공개된 바닥값과 공개 토크나이저로 계산한 모델값이다. 캐시 쓰기 프리미엄과 TTL 만료는 비용 모델 밖에 있고, 패딩 결과는 짧고 기계 채점 가능한 과제 네 묶음에 한정된다. 전부 타당성 위협 절에 적어놨다. 장점만 적힌 논문은 논문이 아니라 홍보물이다.

고치는 건 가격 정책 한 줄이다

바닥에는 이유가 있다. 캐시된 프리픽스 하나하나가 KV 캐시 메모리를 차지하고, 바닥은 그 메모리가 재사용 이득도 별로 없는 작고 잦은 조각들로 차는 걸 막는다. 그 근거가 토큰으로 매겨져 있으니 저장소도 토큰으로 매겨지고, 그래서 처방의 순위도 거기서 나온다. 첫째, 바닥 아래에서도 정렬된 블록은 캐시해준다. 저장소가 이미 갖고 있는 단위를 그대로 쓰는 방법이다. 둘째, 토크나이저별로 바닥값을 조정해서 모든 언어에서 같은 분량을 뜻하게 만든다. 가장 간단해 보이는 글자 수 기준은 셋 중 제일 약하다. 자격 규칙을 실제로 재고 있는 대상에서 떼어놓기 때문이다.

그중 하나가 실제로 시행되기 전까지, 운영자 쪽 버전은 배포 점검표 세 줄이다. 내 바닥값을 알 것, 캐시 적중률을 언어별로 잴 것, 그리고 바닥과 그 10분의 1 사이 구간에 프롬프트를 방치하지 말 것.