MooncakeConnector 使用指南¶
关于 Mooncake¶
Mooncake 旨在通过在高速互联的 DRAM/SSD 资源上构建多级缓存池,来提升大语言模型 (LLM) 的推理效率,特别是在慢速对象存储环境中。与传统缓存系统相比,Mooncake 利用 (GPUDirect) RDMA 技术实现零拷贝数据传输,同时最大限度地利用单机上的多网卡资源。
有关 Mooncake 的更多详情,请参考 Mooncake 项目 和 Mooncake 文档。
先决条件¶
安装¶
通过 pip 安装 mooncake:uv pip install mooncake-transfer-engine。
请参考 Mooncake 官方仓库 获取更多安装说明。
用法¶
预填充节点 (192.168.0.2)¶
vllm serve Qwen/Qwen2.5-7B-Instruct --port 8010 --kv-transfer-config '{"kv_connector":"MooncakeConnector","kv_role":"kv_producer"}'
解码节点 (192.168.0.3)¶
vllm serve Qwen/Qwen2.5-7B-Instruct --port 8020 --kv-transfer-config '{"kv_connector":"MooncakeConnector","kv_role":"kv_consumer"}'
代理¶
python examples/online_serving/disaggregated_serving/mooncake_connector/mooncake_connector_proxy.py --prefill http://192.168.0.2:8010 --decode http://192.168.0.3:8020
现在您可以通过 8000 端口向代理服务器发送请求。
环境变量¶
-
VLLM_MOONCAKE_BOOTSTRAP_PORT:Mooncake 引导服务器端口- 默认值:8998
- 仅预填充实例需要
- 对于无头 (headless) 实例,必须与主实例相同
- 每个实例在主机上需要一个唯一端口;不同主机使用相同的端口号是可以的
-
VLLM_MOONCAKE_ABORT_REQUEST_TIMEOUT:自动释放特定请求的预填充 KV 缓存的超时时间(以秒为单位)。(可选)- 默认值:480
- 如果请求已中止但解码器尚未通知预填充器,预填充实例将在该超时后释放其 KV 缓存块,以避免无限期占用。
KV 传输配置¶
KV 角色选项¶
- kv_producer:用于生成 KV 缓存的预填充实例
- kv_consumer:用于从预填充器获取 KV 缓存的解码实例
- kv_both:启用对称功能,使连接器既可以作为生产者也可以作为消费者。这为实验设置以及角色区分未预先确定的场景提供了灵活性。
kv_connector_extra_config¶
- num_workers:预填充工作线程使用 mooncake 传输 KV 缓存的线程池大小。(默认 10)
- mooncake_protocol:Mooncake 连接器协议。(默认 "rdma")
示例脚本/代码¶
请参考 vLLM 仓库中的这些示例脚本