LMCache 예제

LMCache 예제

KV 캐시를 오프로드하거나 프리필/디코드를 분리할 때, KV 캐시를 어디에 두고 어떻게 공유할지가 중요해요. LMCache는 vLLM v1과 함께 KV 캐시 오프로딩, 분리 프리필링, 그리고 인스턴스 간 KV 캐시 공유를 다루는 라이브러리예요. 이 예제 폴더가 그 사용법을 보여줘요.

출처: 공식문서

이 폴더는 vLLM v1과 함께 LMCache를 사용해 KV 캐시 오프로딩, disaggregated prefilling, KV 캐시 공유를 하는 방법을 보여줘요.

통합 모드 (Integration modes)

LMCache는 vLLM v1과 두 가지 방식으로 통합돼요.

  • 인프로세스 모드(LMCacheConnectorV1): LMCache가 vLLM 프로세스 안에서 실행되고, 환경변수나 YAML 설정 파일(LMCACHE_CONFIG_FILE)로 설정해요. 단일 노드에 CPU/디스크 오프로딩을 추가하는 가장 간단한 방법이에요.
  • 멀티프로세스(MP) 모드(LMCacheMPConnector): LMCache가 독립 서버(lmcache server)로 실행되어 KV 캐시 스토리지를 소유하고, 하나 이상의 vLLM 인스턴스가 여기에 연결돼요. 분산 KV 스토리지와 인스턴스 간 KV 캐시 공유에 권장되는 모드예요. 전체 MP 설정은 LMCache 문서를 참고하세요.

1. CPU 오프로드 (인프로세스)

  • python cpu_offload_lmcache.py - vLLM v1용 LMCacheConnectorV1로 CPU 오프로딩.

2. CPU 오프로드 (멀티프로세스)

  • bash cpu_offload_lmcache_mp.sh - LMCacheMPConnector로 CPU 오프로딩, 독립 lmcache server 사용. vLLM은 이 구성을 위한 내장 단축키를 --kv-offloading-backend lmcache--kv-offloading-size <GiB>로 제공해요.

3. vLLM v1에서의 Disaggregated Prefill

이 예제는 단일 노드에서 NIXL을 사용해 LMCache를 disaggregated prefill과 함께 실행하는 방법을 보여줘요.

사전 준비 (Prerequisites)

  • LMCache 설치. 간단히 pip install lmcache를 실행하면 돼요.
  • NIXL 설치.
  • GPU 최소 2개
  • Llama 3.1 8B Instruct를 위한 유효한 Hugging Face 토큰(HF_TOKEN).

사용법 (Usage)

cd disagg_prefill_lmcache_v1disagg_prefill_lmcache_v1 폴더에 들어간 뒤,

bash disagg_example_nixl.sh

를 실행하면 disaggregated prefill을 실행하고 성능을 벤치마크해요.

구성 요소 (Components)

서버 스크립트

  • disagg_prefill_lmcache_v1/disagg_vllm_launcher.sh - prefill/decode용 개별 vLLM 서버와 프록시 서버를 띄워요.
  • disagg_prefill_lmcache_v1/disagg_proxy_server.py - prefiller와 decoder 사이를 조율하는 FastAPI 프록시 서버.
  • disagg_prefill_lmcache_v1/disagg_example_nixl.sh - 예제를 실행하는 메인 스크립트.

설정 (Configuration)

  • disagg_prefill_lmcache_v1/configs/lmcache-prefiller-config.yaml - prefiller 서버용 설정.
  • disagg_prefill_lmcache_v1/configs/lmcache-decoder-config.yaml - decoder 서버용 설정.

로그 파일 (Log Files)

메인 스크립트는 여러 로그 파일을 생성해요.

  • prefiller.log - prefill 서버 로그
  • decoder.log - decode 서버 로그
  • proxy.log - 프록시 서버 로그

4. KV 캐시 공유

kv_cache_sharing_lmcache_v1.py 예제는 중앙 LMCache 서버를 통해 vLLM v1 인스턴스 간에 KV 캐시를 공유하는 방법을 보여줘요.

더 알아보기 (Learn more)