ovg-project/kvcached

Virtualized Elastic KV Cache for Dynamic GPU Sharing and Beyond

kvcached – 공유 GPU에서 LLM을 위한 탄력적 KV-Cache

기능 – kvcached는 LLM 서빙 엔진(예: SGLang 또는 vLLM)과 GPU 사이에 위치하는 라이브러리(및 데몬)입니다. 엔진에 KV 캐시의 가상 메모리 스타일 보기를 제공하여 캐시를 지연 예약하고 실제 GPU 메모리가 필요할 때만 백업합니다. 이를 통해 GPU 메모리 사용량이 탄력적으로 변하여 여러 모델이 동일한 GPU를 공유하고, 유휴 모델은 '절전'할 수 있으며, 동일한 GPU에서 훈련이나 비전 모델과 같은 다른 워크로드도 실행할 수 있습니다.

중요성 – 현재 서빙 스택은 시작 시 각 모델의 KV 캐시에 고정된 GPU 메모리 청크를 할당합니다. 트래픽이 급증하면 GPU를 과도하게 프로비저닝해야 하고, 트래픽이 낮으면 대부분의 메모리가 유휴 상태로 남습니다. kvcached의 온디맨드 할당은 다중 모델 시나리오에서 첫 토큰까지의 시간(TTFT)을 2~28배 줄이고 필요한 GPU 수를 줄여 비용 절감으로 이어집니다.

주요 기능

  • 탄력적 KV 캐시 – 부하 변화에 따라 캐시 블록을 할당하고 회수합니다.
  • GPU 가상 메모리 추상화 – 논리적 KV 주소가 런타임에 물리적 GPU 페이지에 매핑됩니다.
  • 메모리 제한 및 제어 – CLI 및 개정된 API로 모델별 상한을 적용할 수 있습니다.
  • 프론트엔드 라우터 및 절전 모드 – 요청을 자동으로 라우팅하고 유휴 모델을 절전 상태로 전환합니다.
  • 접두사 캐싱(APC / RadixCache) – 탄력성을 유지하면서 요청 간에 공통 프롬프트 접두사를 재사용합니다.
  • 주요 엔진 지원 – SGLang(≥ v0.5.11) 및 vLLM(≥ v0.17)과 다양한 어텐션 유형(MHA, GQA, MLA, 슬라이딩 윈도우, 하이브리드)에서 작동합니다.
  • AMD / ROCm 인식 – ROCm에서 자동으로 비연속 레이아웃으로 전환합니다.

일반적인 사용 사례

시나리오 이점
멀티 LLM 서빙 여러 모델이 하나의 GPU를 공유하여 정적 파티셔닝을 제거합니다.
서버리스 LLM 요청이 도착할 때만 모델이 시작되고 캐시는 온디맨드로 할당됩니다.
복합 AI 파이프라인 검색 → 추론 → 요약 단계가 메모리를 공유하여 단일 GPU에서 복잡한 파이프라인을 구현할 수 있습니다.
GPU 공동 배치 LLM 추론이 동일한 하드웨어에서 훈련, 미세 조정, 비전 작업과 공존할 수 있습니다.

시작 방법

  1. 패키지(또는 Docker 이미지) 설치 – pip install kvcached --no-build-isolation 또는 적절한 ghcr.io/ovg-project/kvcached‑sglang / …‑vllm 이미지를 가져옵니다.
  2. 환경 변수로 활성화:
    export ENABLE_KVCACHED=true
    export KVCACHED_AUTOPATCH=1
    
  3. 평소처럼 SGLang 또는 vLLM 서버를 시작하면 kvcached가 엔진을 패치하고 KV 캐시를 자동으로 관리합니다.
  4. kvctl을 사용하여 제어 파일을 나열, 모니터링, 삭제하고 제공된 CLI로 제한을 조정합니다.

성능 스냅샷 – A100-80GB에서 세 개의 Llama-3.1-8B 모델을 사용한 벤치마크에서 kvcached는 기준 정적 할당 엔진과 비교하여 TTFT를 최대 28배 줄였습니다.

문서 및 커뮤니티 – 전체 아키텍처, API 참조, 배포 가이드는 프로젝트의 DeepWiki 페이지와 공식 홈페이지 kvcached.org에 있습니다. Slack 채널, GitHub 이슈, 그리고 성장 중인 채택자 목록(Google, Red Hat, AMD 등)이 지원을 제공합니다.

라이선스 – Apache 2.0.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • Dispatch