跨实例共享 KV Cache#
本教程演示如何在 vLLM 部署中启用 LMCache 的远程 KV Cache 存储。远程 KV Cache 共享将大型 KV Cache 从 GPU 内存移至远程共享存储,从而提高 KV Cache 的命中率,并可能提高部署的容错能力。
vLLM Production Stack 使用 LMCache 进行远程 KV Cache 共享。更多详情,请参阅 LMCache GitHub 仓库。
目录#
先决条件#
完成以下教程
支持 GPU 的 Kubernetes 环境。
步骤 1:配置远程 KV Cache 存储#
找到文件 tutorials/assets/values-06-remote-shared-storage.yaml,其内容如下:
servingEngineSpec:
runtimeClassName: ""
modelSpec:
- name: "mistral"
repository: "lmcache/vllm-openai"
tag: "latest"
modelURL: "mistralai/Mistral-7B-Instruct-v0.2"
replicaCount: 2
requestCPU: 10
requestMemory: "40Gi"
requestGPU: 1
pvcStorage: "50Gi"
vllmConfig:
enableChunkedPrefill: false
enablePrefixCaching: false
maxModelLen: 16384
v1: 1
lmcacheConfig:
enabled: true
cpuOffloadingBufferSize: "20"
hf_token: <YOUR HF TOKEN>
cacheserverSpec:
replicaCount: 1
containerPort: 8080
servicePort: 81
serde: "naive"
repository: "lmcache/vllm-openai"
tag: "latest"
resources:
requests:
cpu: "4"
memory: "8G"
limits:
cpu: "4"
memory: "10G"
labels:
environment: "cacheserver"
release: "cacheserver"
注意
将 `<YOUR HF TOKEN>` 替换为您的实际 Hugging Face 令牌。
另外,目前 v1 必须设置为 1 才能使用带有 latest 标签的 LMCache docker 镜像。
``CacheserverSpec`` 用于启动远程共享 KV Cache 存储。
步骤 2:部署 Helm Chart#
使用自定义值文件部署 Helm Chart
helm install vllm vllm/vllm-stack -f tutorials/assets/values-06-shared-storage.yaml
步骤 3:验证安装#
检查 Pod 日志以验证 LMCache 是否处于活动状态
kubectl get pods
找到 vLLM 部署的 Pod 名称(例如,`
vllm-mistral-deployment-vllm-xxxx-xxxx`)。然后运行:kubectl logs -f <pod-name>
查找日志中指示 LMCache 已启用并正常运行的条目。示例文本(指示 KV Cache 已存储)为:
INFO 01-21 20:16:58 lmcache_connector.py:41] Initializing LMCacheConfig under kv_transfer_config kv_connector='LMCacheConnector' kv_buffer_device='cuda' kv_buffer_size=1000000000.0 kv_role='kv_both' kv_rank=None kv_parallel_size=1 kv_ip='127.0.0.1' kv_port=14579 INFO LMCache: Creating LMCacheEngine instance vllm-instance [2025-01-21 20:16:58,732] -- /usr/local/lib/python3.12/dist-packages/lmcache/experimental/cache_engine.py:237
将路由器的服务端口转发到本地以访问堆栈
kubectl port-forward svc/vllm-router-service 30080:80
向堆栈发送请求并观察日志
curl -X POST https://:30080/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "mistralai/Mistral-7B-Instruct-v0.2", "prompt": "Explain the significance of KV cache in language models.", "max_tokens": 10 }'
预期输出
来自堆栈的响应应包含完成结果,并且日志应显示 LMCache 活动,例如:
DEBUG LMCache: Store skips 0 tokens and then stores 13 tokens [2025-01-21 20:23:45,113] -- /usr/local/lib/python3.12/dist-packages/lmcache/integration/vllm/vllm_adapter.py:490
对远程共享存储的性能提升进行基准测试(正在进行中)#
在本节中,我们将对使用 LMCache 进行远程 KV Cache 共享存储时的性能改进进行基准测试。请关注更新。
结论#
本教程演示了如何在 vLLM 部署中使用 LMCache 为多个 vllm 节点启用跨实例共享的 KV Cache 存储。通过将 KV Cache 存储到远程共享存储,您可以提高 KV Cache 的命中率,并可能提高部署的容错能力。探索进一步的配置,以根据您的工作负载定制 LMCache。