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_v1로 disagg_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 캐시를 공유하는 방법을 보여줘요.