AI Briefing

KV 캐시 지역성: LLM 서빙 비용의 숨은 변수

·2026.05.01 09:00

GPU별 KV 캐시 지역성이 LLM 서빙 비용과 TTFT를 좌우했다.

KV 캐시 지역성은 LLM 서빙 비용을 가르는 핵심 변수다. vLLM 같은 서빙 엔진은 prefill 결과를 GPU 메모리에 캐시하고, 같은 prefix가 다시 오면 prefill을 건너뛰고 바로 decode로 들어간다. 문제는 이 캐시가 GPU별이라서 요청이 다른 카드로 가면 같은 작업을 다시 계산해야 한다는 점이다. round-robin이나 least-connections 같은 일반적인 로드밸런싱은 이런 토큰 지역성을 보지 못한다.

기본 메트릭도 차이가 컸다. CodeLlama 13B에서 cache hit은 18ms P50, miss는 약 500ms였다. 8x A100, 4,000토큰 시스템 프롬프트, 30명 동시 사용자, 90% prefix sharing ratio의 stress workload에서는 round-robin이 캐시 히트율 12.5%, P99 TTFT 6,800ms, 처리량 36.3 req/s에 머물렀다. 같은 조건에서 prefix-aware routing은 히트율 97.5%, P99 TTFT 1,000ms, 처리량 44.4 req/s를 기록해 **85.3%**의 tail-latency 개선과 **22.3%**의 처리량 개선을 냈다.

시간당 약 $10짜리 GPU 노드라면, 단일 8-GPU 노드에서 중복 prefill만으로 한 달 $1,200~$1,800가 낭비될 수 있다. 같은 하드웨어와 같은 모델이라도 요청을 어느 GPU에 보내느냐에 따라 사실상 성능과 비용이 달라진다.

효과는 모델 크기와 prefix 길이, 공유 비율에 따라 달라진다.

  • 8B급은 전체 inference가 약 420ms라 라우팅 오버헤드 ~10ms가 이득을 잠식할 수 있다.
  • 500토큰 미만의 짧은 prefix는 prefill 절감보다 라우팅 오버헤드 ~3ms가 더 클 수 있다.
  • 13B~70B 모델은 prefill 비용이 커서 지역성 효과가 뚜렷하다.
  • 70B에서는 GPU가 이미 compute-saturated라 전체 처리량은 거의 같아도 cache hit P50이 1,498ms, miss P50이 2,665ms로 개별 요청 체감이 크게 달라진다.
  • prefix가 16K로 길어지면 cache miss가 약 400ms의 GPU 연산을 낭비한다.
  • 공유 비율이 높을수록 prefix-aware routing의 히트율이 크게 오른다.

다만 prefix affinity를 너무 강하게 고정하면 특정 GPU로 트래픽이 몰릴 수 있다. 그래서 backend의 in-flight 수가 중앙값의 2배를 넘으면 다른 경로로 넘기는 load-aware fallback을 함께 써서, P95를 36%, P99를 45% 낮추는 대신 캐시 히트율은 약 5포인트 희생한다. 학습된 라우트가 없을 때는 consistent hash fallback으로 같은 prefix를 같은 GPU에 붙여둔다.

운영에서는 vllm:gpu_prefix_cache_hit_rate 같은 Prometheus 메트릭으로 현재 지역성을 먼저 측정해야 한다. 히트율이 80% 이상이면 이미 효율적인 편이고, 30% 이하라면 load balancing 방식이 redundant prefill을 크게 만들고 있다는 신호다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.