背景
Ascend Model Runner V2(MRV2)已经继承了 core vLLM 的 device-resident request state、增量 block table 和设备侧 input preparation;但当前 Ascend 路径仍在每轮结束后把整张 num_computed_tokens 从 NPU 拷回 Host,并在下一轮 prepare_inputs 中无条件执行 event synchronize(),只是为了重建 attention backend 仍需要的 seq_lens_cpu。
当前热路径是:
postprocess[_sampled]() → _copy_num_computed_tokens_to_cpu()
- 下一轮
prepare_inputs() → _update_seq_lens_cpu()
num_computed_tokens_event.synchronize()
- attention builder 又对已有 device
query_start_loc 做一次 H2D,并把部分 metadata .tolist()
对非 speculative 的普通自回归 decode,scheduler 交给 runner 的 CPU num_computed_tokens mirror 没有 rejection correction,因而可作为精确值。这条无条件 D2H + Host barrier 会抵消 MRV2 把 metadata 留在设备侧的主要工程收益。
这是一项 engineering/performance hardening,不是新的调度研究,也不改变“请求晚到就进入下一轮”的调度语义。
目标
把 Ascend MRV2 的普通 dense decode 做成真正无每轮 metadata D2H barrier 的路径,并用真实 NPU workload 证明正确性和收益边界;speculative decode、CP、dynamic EPLB 分阶段处理,不混在第一刀里。
当前状态(2026-07-31)
状态:工程实现和证据整理已完成;等待 tutor/maintainer review,不在 review 前扩大适用范围或提出 default-on。
- verified-core 兼容性前置项已按上游补丁做带归因的窄适配,见 draft PR #190;CI 已通过。
- metadata 实现位于
jingyuan/mrv2-device-metadata-188-20260731:ordinary single-token 路径绕过 num_computed_tokens D2H/event barrier,multi-token/spec/diffusion 保留 device-authoritative correction。
- exact core
1f486d96 下 combined worker suite 39 passed;Ruff、markdownlint、JSON 与 diff 检查通过。
- 一张卡 MRV2 graph smoke 已覆盖模型加载、KV cache、graph capture、prefill 和 decode;full-weight Qwen2.5-7B A/B 输出完全一致。
- 八步 profiler 证明目标
acl_memcpy_device_to_host 和 wait_event 各减少 8 次,即每个 decode step 各去掉一次。
- full-weight in-process 平均耗时下降 1.61%(batch 1)和 1.92%(batch 8)。
- 服务级三次独立启动/变体、共 576 个请求、0 失败:吞吐提升 1.51%–1.75%,Mean TPOT 下降 1.49%–1.68%;但 P99 ITL 上升 2.16%–2.32%,不声称 tail latency 改善。
- reviewer 入口和全部原始证据:evidence packet。
第一实现切片(本 issue 立即落地)
后续里程碑
M1:去掉重复 metadata 搬运
- 复用 model runner 已有的 device
query_start_loc,取消 attention builder 的重复 H2D
- 在 FIA/MLA operator ABI 能直接消费 tensor 的位置,减少
.tolist() / scalar materialization
- 不在 Host 侧重新发明一套与 device state 并行漂移的状态机
M2:真实负载评测
按 #146 的测量契约固定 core/plugin/model/CANN/torch_npu 和 workload:
- MRV1 vs MRV2,同机 same-spec
- batch 1/8/32,短/长 context,graph/eager 分开
- 至少 3 次独立服务启动并交替运行
- 报告 TTFT、TPOT/TBT、throughput、P95/P99、错误率、峰值显存
- profiler/counter 单独报告 Host prepare time、D2H/H2D 次数和 device sync 次数
只有机制证据与端到端结果一致,才讨论默认启用 MRV2;smoke 或单次 probe 不算性能结论。
M3:能力边界
- speculative decode 与其他 multi-token generation 分别设计 accepted-token correction,不偷用普通 decode 的假设
- CP / dynamic EPLB / pooling 等能力分别补齐后,再扩大默认适用范围
- eager 基础用例恢复后才把 eager 纳入正式支持声明
验收标准
- scoped ordinary single-token decode 每轮不再发生
num_computed_tokens D2H copy 或对应 event synchronize。
- scheduler request churn(new / cached / finished / preempted)下
seq_lens_cpu 与 device seq_lens 保持一致。
- speculative decode 与 diffusion-style multi-token 行为不变,rejection 后长度无漂移。
- 至少一个真实一张卡 dense workload 给出可复现的正确性与性能 artifact;若端到端无收益,也如实记录并停止扩大投入。
- unsupported feature fail closed,不静默切到错误 metadata 语义。
与现有工作的关系
负责人
- GitHub assignee:@CubeLander
- Fletcher × Lumi 共同推进;实现将标注 AI assistance,并由 Fletcher 做最终 human review。
背景
Ascend Model Runner V2(MRV2)已经继承了 core vLLM 的 device-resident request state、增量 block table 和设备侧 input preparation;但当前 Ascend 路径仍在每轮结束后把整张
num_computed_tokens从 NPU 拷回 Host,并在下一轮prepare_inputs中无条件执行 eventsynchronize(),只是为了重建 attention backend 仍需要的seq_lens_cpu。当前热路径是:
postprocess[_sampled]()→_copy_num_computed_tokens_to_cpu()prepare_inputs()→_update_seq_lens_cpu()num_computed_tokens_event.synchronize()query_start_loc做一次 H2D,并把部分 metadata.tolist()对非 speculative 的普通自回归 decode,scheduler 交给 runner 的 CPU
num_computed_tokensmirror 没有 rejection correction,因而可作为精确值。这条无条件 D2H + Host barrier 会抵消 MRV2 把 metadata 留在设备侧的主要工程收益。这是一项 engineering/performance hardening,不是新的调度研究,也不改变“请求晚到就进入下一轮”的调度语义。
目标
把 Ascend MRV2 的普通 dense decode 做成真正无每轮 metadata D2H barrier 的路径,并用真实 NPU workload 证明正确性和收益边界;speculative decode、CP、dynamic EPLB 分阶段处理,不混在第一刀里。
当前状态(2026-07-31)
状态:工程实现和证据整理已完成;等待 tutor/maintainer review,不在 review 前扩大适用范围或提出 default-on。
jingyuan/mrv2-device-metadata-188-20260731:ordinary single-token 路径绕过num_computed_tokensD2H/event barrier,multi-token/spec/diffusion 保留 device-authoritative correction。1f486d96下 combined worker suite 39 passed;Ruff、markdownlint、JSON 与 diff 检查通过。acl_memcpy_device_to_host和wait_event各减少 8 次,即每个 decode step 各去掉一次。第一实现切片(本 issue 立即落地)
seq_lens_cpunum_computed_tokensD2H copy 与下一轮 event synchronize后续里程碑
M1:去掉重复 metadata 搬运
query_start_loc,取消 attention builder 的重复 H2D.tolist()/ scalar materializationM2:真实负载评测
按 #146 的测量契约固定 core/plugin/model/CANN/torch_npu 和 workload:
只有机制证据与端到端结果一致,才讨论默认启用 MRV2;smoke 或单次 probe 不算性能结论。
M3:能力边界
验收标准
num_computed_tokensD2H copy 或对应 event synchronize。seq_lens_cpu与 deviceseq_lens保持一致。与现有工作的关系
负责人