已合并
[feature] 支持引擎原生拉起: layerwise CDP调度模式适配 #773
[feature] 支持引擎原生拉起: layerwise CDP调度模式适配 #773
已合并
tobking创建于 4 天前
tobking
tobking成员
4 天前

1. 合入背景

请描述为什么要做这个PR内的改动。
如涉及,请关联前序PR或同特性/需求下的其他PR。
如果是修复之前PR引入的问题,请关联引入问题的PR。
请通过#ISSUE ID关联issue。
注意:Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代.

vLLM layerwise P/D 由 Decode 先接收请求,再通过 metaserver callback 触发 Prefill 和逐层 KV 传输。Coordinator 当前缺少完整的 Trigger 调度链路,无法保证 callback 回到持有原始请求状态的 Worker,也无法将异步 Prefill 纳入原请求的取消、重试和 workload 回收生命周期。

本改动补齐 vLLM concurrent_engine_sync 的端到端调度,并处理 callback 并发幂等、资源回滚以及 IPv4/IPv6 回调地址可达性。
#503

2. 修改内容

描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。
如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

1)增加 vLLM P/D 协同模式选择:
prefill_handoff_decode 继续使用现有 handoff 流程。
concurrent_engine_sync 使用 Trigger 流程,先分配并请求 Decode,再由 Decode callback 触发 Prefill。
对同一拓扑中 handoff/trigger 能力混用返回 HTTP 503。
2)增加 Trigger 协议适配:
Decode 请求注入 do_remote_prefill 和 metaserver URL。
callback 携带的远端 block、host、port 参数转换为 Prefill 请求。
NodeManager 原生 vLLM backend 根据 layerwise 配置上报对应 dispatch capability。
3)增加每 Worker 独立 metaserver:
新增 inference_workers_config.worker_metaserver_base_port,默认 0 表示关闭。
Worker i 使用 base_port + i,独立 uvicorn app 仅暴露 POST /v1/metaserver。
callback 通过 request_id + attempt 找到发起 Decode 的同一 Worker 和当前 attempt。
4)完善 callback 生命周期:
使用 AttemptContext.trigger_lock 串行化并发 callback。
将 callback task 注册为 Prefill task,客户端断开、Decode 失败或 callback 取消时停止整个 attempt。
Prefill 已完成后的重复 callback 返回幂等成功,不重复分配实例。
Scheduler 分配成功但 Worker 本地 workload 登记失败时立即回滚。

3. 资料变更

请确认是否涉及资料变更
如涉及,需要在PR中体现,并简要说明修改内容。
如不涉及,需填写“不涉及”。

更新 P/D 分离设计文档,说明 vLLM layerwise Trigger 调度流程。
更新 Coordinator 开发文档,说明每 Worker metaserver、attempt 校验、callback 生命周期和地址选择。
更新配置参考及示例配置,说明 worker_metaserver_base_port 的用途和端口范围。

4. 接口变更

请确认是否涉及跨代码仓或者客户面可见的接口变更
如涉及,需详细说明接口以及对应的变更内容,同时需要在资料中体现。
如不涉及,需填写“不涉及”。

不涉及

5. 测试结果

需体现测试场景,测试方法以及测试结果
测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

6. CheckList

PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]

[x] 代码注释完备

[x] 正确记录维测日志

[x] 是否有UT用例

[ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题

likedislike
Pull Request已成功合入, 合并人@wangyang
(感谢 tobking 的贡献)
atomgit-bot
atomgit-bot
4 天前 评论:

变更摘要

本 PR 主要实现"引擎原生拉起"场景下 layerwise CDP 调度模式的适配:为 coordinator 增加按 worker 独立的 metaserver 回调解耦机制,新增 CoordinationMode.TRIGGER 调度模式,使 vLLM 原生实例先由 Decode 侧发起请求、在 KV 传输回调中触发 Prefill 的按需调度,并配套新增 worker_metaserver_base_port 配置与校验、vLLM 协议适配及 node_manager 侧 trigger 连接器能力发布等改动。

主要改动

  • 新增 metaserver 端口配置与校验InferenceWorkersConfig 新增 worker_metaserver_base_port(默认 0 表示禁用,worker i 监听 base+i),CoordinatorConfig 新增运行时字段 worker_metaserver_port,并新增 _validate_worker_metaserver_ports 校验端口范围及回调可达性(要求 POD_IP 或具体的 coordinator_api_host);同时新增 net.is_unspecified_host 工具,示例配置同步补充该字段并将 /v1/metaserver 加入限流/鉴权白名单

  • Worker 独立 metaserver 服务run_inference_worker_proc 在 worker 进程内按 worker_metaserver_port 额外启动一个 uvicorn metaserver,InferenceServer.create_metaserver_app() 提供 POST /v1/metaserver 端点,dispatch.handle_metaserver_request 解析回调、校验 request_idattempt 参数后转发给路由器处理

  • UnifiedPDRouter 新增 TRIGGER 调度模式:通过实例 dispatch_capabilitiesCONCURRENT_ENGINE_SYNC vs PREFILL_HANDOFF_DECODE)探测 vLLM 集群是否为 layerwise/trigger 模式(混合部署返回 503),该模式下先调度 D 实例发起 decode(请求携带 metaserver 回调地址),收到回调后经 handle_metaserver_request 再调度 P 实例执行 prefill;AttemptContext 新增 trigger_lock 保证回调重试幂等,prefill 取消与请求停止联动,分配冲突时回滚已分配 workload

  • vLLM 协议适配层扩展pd_protocol.py 新增 CoordinationMode.TRIGGERtrim_vllm_engine_request_id(裁剪 chatcmpl-/cmpl- 前缀以还原原始 req_id)、build_trigger_decode_request(设置 kv_transfer_params.metaserverdo_remote_decode=False)与 build_trigger_prefill_requestmax_tokens=1do_remote_prefill=False、透传 remote block 信息)

  • node_manager 侧能力发布:vLLM 后端允许 trigger 调度配置文件(不再仅限 handoff),NodeManagerConfig._infer_dispatch_capabilitiesMooncakeLayerwiseConnector 等配置发布 CONCURRENT_ENGINE_SYNC 能力,使层间调度模式可被调度器识别

likedislike
atomgit-bot
atomgit-bot
4 天前 评论:

代码审查

✅ 未发现问题

likedislike
Xxiangjie10成员
4 天前 添加了label:pr-audit-failed
xiangjie10成员
4 天前 评论:
🔍 PR 规范审计未通过,以下项目需要修正:
  • PR 未关联里程碑或 Issue
  • PR 新增代码 1152 行超过 1000 行,且标题未标注"反合"

请修正后重新提交,或联系仓库管理员。

likedislike
ascend-robotascend-robot成员
4 天前 添加了label:ascend-cla/yes
此处折叠了181条消息 查看更多
ascend-robotascend-robot成员
3 天前 添加了label:approved
ganglv成员
3 天前 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
3 天前 添加了label:lgtm
wangyangwangyang成员
3 天前 关闭了关联的issue
wangyangwangyang成员
3 天前 合入了pull request