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: 啟用對稱功能,允許聯結器同時作為生產者和消費者。這為實驗設定和角色區分不確定的場景提供了靈活性。