MooncakeConnector 使用指南¶
关于 Mooncake¶
Mooncake 旨在提高大型语言模型 (LLM) 的推理效率,特别是在慢速对象存储环境中,通过在高带宽互联的 DRAM/SSD 资源上构建多级缓存池。与传统缓存系统相比,Mooncake 利用 (GPUDirect) RDMA 技术实现零拷贝数据传输,同时最大化利用单机上的多网卡资源。
有关 Mooncake 的更多详细信息,请参阅 Mooncake 项目 和 Mooncake 文档。
先决条件¶
安装¶
通过 pip 安装 mooncake: uv pip install mooncake-transfer-engine。
有关更多安装说明,请参阅 Mooncake 官方仓库
用法¶
Prefiller 节点 (192.168.0.2)¶
vllm serve Qwen/Qwen2.5-7B-Instruct --port 8010 --kv-transfer-config '{"kv_connector":"MooncakeConnector","kv_role":"kv_producer"}'
Decoder 节点 (192.168.0.3)¶
vllm serve Qwen/Qwen2.5-7B-Instruct --port 8020 --kv-transfer-config '{"kv_connector":"MooncakeConnector","kv_role":"kv_consumer"}'
代理¶
python tests/v1/kv_connector/nixl_integration/toy_proxy_server.py --prefiller-host 192.168.0.2 --prefiller-port 8010 --decoder-host 192.168.0.3 --decoder-port 8020
注意:Mooncake Connector 目前使用 nixl_integration 的代理。未来将替换为自研代理。
现在可以通过 8000 端口向代理服务器发送请求。
环境变量¶
-
VLLM_MOONCAKE_BOOTSTRAP_PORT: Mooncake 引导服务器的端口- 默认值: 8998
- 仅 Prefiller 实例需要
- 每个 vLLM worker 在其主机上需要一个唯一的端口;不同主机之间使用相同的端口号是可以的
- 对于 TP/DP 部署,节点上每个 worker 的端口计算方式为:base_port + dp_rank * tp_size + tp_rank
- 用于 Decoder 通知 Prefiller
-
VLLM_MOONCAKE_ABORT_REQUEST_TIMEOUT: 自动释放某个请求的 Prefiller KV 缓存的超时时间(秒)。(可选)- 默认值: 480
- 如果请求被中止,并且 Decoder 尚未通知 Prefiller,Prefill 实例将在该超时后释放其 KV 缓存块,以避免无限期占用。
KV 角色选项¶
- kv_producer: 用于生成 KV 缓存的 Prefiller 实例
- kv_consumer: 用于从 Prefiller 消耗 KV 缓存的 Decoder 实例
- kv_both: 启用对称功能,允许连接器同时作为生产者和消费者。这为实验设置和角色区分不确定的场景提供了灵活性。