KV池化能力部署
特性介绍
pyMotor KV池化能力基于vllm-ascend本身池化能力,能力介绍和环境依赖可参考vllm-ascend池化文档。
通过修改user_config.json配置文件后即可通过deploy.py脚本完成服务部署。
部署流程
pyMotor开启KV池化能力只需修改user_config.json配置文件后,通过deploy.py脚本即可完成服务部署,具体流程如下。
注意:开启池化能力前请参考pyMotor快速开始,确保环境能正常完成基础的服务部署。
应用补丁
【重要提示】 仅当
vllm-ascend版本早于v0.17.0rc2(不含v0.17.0rc2)时才需要打此补丁。 如果您的vllm-ascend版本为v0.17.0rc2及以上,补丁已合入主干,请直接跳过本节内容,无需进行打补丁操作。
由于vllm代码的layerwise KV-cache传输叠加KV池化存在推理bug,需要应用vllm_multi_connector.patch补丁,具体操作步骤可参考pyMotor应用补丁。
配置user_config.json
同vllm-ascend池化文档中kv-transfer-config配置,在user_config.json配置文件中只需要调整P/D实例 kv_transfer_config 内的配置以及 kv_cache_pool_config 配置。其他配置内容与不开启池化时保持一致即可。以PyMotor快速开始中实例user_config.json为参考基线,适配打开KV池化后的配置文件示例如下(省略了其他无关的配置项):
{
"version": "v2.0",
"motor_deploy_config": {
"..."
},
"motor_controller_config": {
"..."
},
"motor_coordinator_config": {
"..."
},
"motor_nodemanger_config": {
"..."
},
"motor_engine_prefill_config": {
"engine_type": "vllm",
"engine_config": {
"served_model_name": "...",
"model": "...",
"gpu_memory_utilization": 0.9,
"data_parallel_size": 1,
"tensor_parallel_size": 1,
"pipeline_parallel_size": 1,
"enable_expert_parallel": false,
"data_parallel_rpc_port": 9000,
"kv_transfer_config": {
"kv_connector": "MultiConnector",
"kv_role": "kv_producer",
"kv_connector_extra_config": {
"use_layerwise": true,
"connectors": [
{
"kv_connector": "MooncakeLayerwiseConnector",
"kv_role": "kv_producer",
"kv_port": "30001",
"kv_connector_extra_config": {
"send_type": "PUT"
}
},
{
"kv_connector": "AscendStoreConnector",
"kv_role": "kv_producer",
"kv_connector_extra_config": {
"lookup_rpc_port": "0",
"backend": "mooncake"
}
}
]
}
}
}
},
"motor_engine_decode_config": {
"engine_type": "vllm",
"engine_config": {
"served_model_name": "...",
"model": "...",
"gpu_memory_utilization": 0.9,
"data_parallel_size": 1,
"tensor_parallel_size": 1,
"pipeline_parallel_size": 1,
"enable_expert_parallel": false,
"data_parallel_rpc_port": 9000,
"kv_transfer_config": {
"kv_connector": "MultiConnector",
"kv_role": "kv_consumer",
"kv_connector_extra_config": {
"use_layerwise": true,
"connectors": [
{
"kv_connector": "MooncakeLayerwiseConnector",
"kv_role": "kv_consumer",
"kv_port": "30001",
"kv_connector_extra_config": {
"send_type": "PUT"
}
},
{
"kv_connector": "AscendStoreConnector",
"kv_role": "kv_consumer",
"kv_connector_extra_config": {
"lookup_rpc_port": "1",
"backend": "mooncake"
}
}
]
}
}
}
},
"kv_cache_pool_config": {
"metadata_server": "P2PHANDSHAKE",
"protocol": "ascend",
"device_name": "",
"global_segment_size": "1GB",
"eviction_high_watermark_ratio": 0.9,
"eviction_ratio": 0.1
}
}
说明:kv_cache_pool_config 为 KV 池化全局配置项,具体参数说明如下:
metadata_server:元数据服务器模式,默认为P2PHANDSHAKE(点对点握手模式)。protocol:底层传输协议,默认为ascend。device_name:指定绑定的网卡名称,为空则自动选择。global_segment_size:全局共享显存段大小,默认为1GB。eviction_high_watermark_ratio与eviction_ratio:用于mooncake_master进程启动参数,分别代表池化空间高水位驱逐线与单次驱逐比例。port:(可选)用于配置 KV Pool 的服务端口;若未配置,deploy.py会按默认值50088进行补充和适配。default_kv_lease_ttl:(可选)控制 KV 对象的默认租约 TTL(毫秒);配置值需大于env.json中vllm实例的环境变量ASCEND_CONNECT_TIMEOUT和ASCEND_TRANSFER_TIMEOUT。默认值11000。
关于 Connector:本例
kv_connector使用MultiConnector,其中connectors[0](MooncakeLayerwiseConnector,传输层)决定 P/D 协同 capability,connectors[1](AscendStoreConnector,KV 池后端)不参与判定、无需在识别白名单中。识别白名单与dispatch_profile逃生口见 PD 分离特性说明。
部署服务
在 examples/deployer 目录下通过 deploy.py 脚本部署服务。支持指定配置目录或单独指定配置文件:
cd examples/deployer
# 方式一:指定配置目录(推荐)
python deploy.py --config_dir ../infer_engines/vllm
# 方式二:单独指定配置文件
python deploy.py --user_config_path ../infer_engines/vllm/user_config.json --env_config_path ../infer_engines/vllm/env.json