跳到内容

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 仓库中的这些示例脚本