Open
[RFC]: msprobe KV Guard 设计与 vLLM Model Runner V2 接入 #680
MenbaAdd on 4 days ago
4 days ago Added label: triage-reviewrfc
捡到宝。
4 days ago Comments:
4 days ago Comments:
👋 您好,欢迎向 MindStudio Probe 提交 Issue!
我们已收到您的反馈,感谢你对开源社区的支持。🎉
📅处理时效: 维护团队将在24小时内 查看并回复您的问题(工作日)。
🔍自助查询: 在等待期间,建议您先查阅以下资料,可能已有解决方案:
📖 MindStudio Probe官方文档
📝 贡献者指南
请确保 Issue 描述清晰,包含复现步骤和日志,这将帮助我们更快定位问题。谢谢!


4 days ago Modify description of issue
16 event messages are collapsed here。 See more
1 day ago Modify description of issue
Menba
1 day ago Comments:
1 day ago Comments:
/label add resolved


1 day ago Added label: resolved
状态: Draft
作者: @Tjh-UKN
更新日期: 2026-11-12
目标与实现
KV Trace 记录 vLLM Scheduler、Worker 与 Ascend Model Runner V2 之间的 KV 出入口信息,检查调度声明与执行地址计划是否一致。包装全部位于 msprobe,通过 vLLM general plugin entry point 在对应进程加载,不修改 vLLM/vllm-ascend 源文件,也不依赖在 ModelRunner 初始化的 PrecisionDebugger 去修改 Scheduler 进程。
69737a6d20282d5f950d9d6be80b0e66ec6f2ac5原完整实现 !1145 保持不动;当前交付按上述三个 PR 拆分。
Scheduler.schedule()返回kv.bind:记录本轮请求、token 预算、block 增量绑定及原生 finished/preempted/zero/copy 等字段,生成跨进程关联的trace_idWorker.execute_model()输入prepare_attn()输入kv.write/kv.read:冻结 slot、block table、位置和长度等执行计划,按请求/rank/group 与调度声明比较;PCP/DCP 使用原生坐标_dummy_run()、推测后处理和 connector 边界Scheduler.update_from_output()输入log/raiseKV 操作记录只有
kv.bind/write/read;普通boundary表示调用边界,不是新增 KV 状态。kv.violation表示边界约束违规并驱动log/raise;不再输出kv.coverage_gap。缺必要原生坐标时跳过依赖该信息的检查,不算错误;原生异常记录为kv.error并继续传播。不重建 allocator、epoch、owners 或 valid_end,不安装逐层 Attention hook。
kv.write/read是边界可见的执行计划,不能单独证明设备实际访存或 KV 数值正确。当前设计 HTML
下载当前设计说明(HTML,ZIP 附件)
解压打开
msprobe_kv_trace_design_20261112.html。沿用原design(2).html的六大章、17 节顺序、CSS、左侧目录与交互脚本;原始验收日志及其他设计章节保持原样。本次补充 5.4.2 各类日志的完整字段字典:逐项说明
kv.enabled、kv.bind、真实请求和 dummy 的kv.write、kv.read、各类boundary、kv.violation、kv.error的字段含义、类型/单位、出现条件、数组索引对应关系与null/缺省语义;包含调度增量、推测计数、PCP/DCP 坐标、connector 计划及完成/失败结果的嵌套字段。5.4.3 同步列出当前 38 种reason的判定含义和实际附加定位字段,避免把所有异常都理解成具有同一组字段。字段依据为 msprobe master
4729e4e9b31a6f997e6f24e64dddd3fd9ec248ab,各表附源码位置;附件包含字段字典 JSON、本次源码及哈希清单。配置仍为additional_config.kv_trace,日志标签及模块/插件名沿用KV_GUARD/kv_guard。本节设计附件为日志字段文档更新;下方 master 服务验证仅替换验证报告,不改动该设计附件。
设计 ZIP SHA256:
131b662a10486816c2062077fd7a133524e7d29bca556bea7e91402bccfa54ff。使能
在启动 vLLM 的 Python 环境正常安装 msprobe,使 entry point
msprobe_kv_guard = msprobe.vllm_kv_guard:register可发现。当前验收版本的配置字段为kv_trace,模块和插件名仍为kv_guard。action支持log和raise;省略配置或设置enabled:false关闭。不需要dump_config或 PrecisionDebugger。若显式设置VLLM_PLUGINS白名单,需包含msprobe_kv_guard。raise会阻断结果并可能终止 EngineCore,不保证单请求隔离或恢复。最终验收报告
下载本次 master 包服务验证报告、原始日志与复跑材料(ZIP)
解压后打开
msprobe_kv_trace_master_service_20261112.html。报告沿用原验证报告的 CSS、交互与证据栏目;同目录证据 ZIP 含本轮完整server.log、7 份原始请求/响应、实际启动参数、master wheel、安装及构建记录、源码哈希和复跑说明。当前报告以本次完成的 master 服务验证为准。本次结果:179 真实 NPU 服务验证 4/4 场景、11/11 检查通过;7/7 个 HTTP 请求正常返回,共生成 112 个 token。
action=raise在 Worker 与 Scheduler 实际启用;完整日志中kv.bind=74、kv.write=66、kv.read=66、kv.violation=0、kv.error=0。每个响应请求均能对应同一 trace 下的 bind/write/read。mindstudio-probe 26.0.0;唯一 KV Trace entry point 来自该安装包;HTTP 模型列表可访问包与版本: 本次固定 msprobe master
4729e4e9b31a6f997e6f24e64dddd3fd9ec248ab,使用该源码的标准pip wheel产物,未用 msprobe 源码目录覆盖安装包。wheel SHA256:854bedc2d0181f9921280d9b01f3f199e19ee5d274365ca69f97028fb8e29572。8个已安装产品源文件与该 wheel/master 清单一致,7个选定原生源文件运行前后哈希一致。环境与范围: 179 / Ascend 910B4,Qwen3-0.6B BF16,MRV2、Eager、TP1/PP1/DP1,prefix caching与chunked prefill启用;配置
additional_config.kv_trace={"enabled":true,"action":"raise"}。沿用 vLLM24420b7a和 vllm-ascend28e9e97加既有PCP修复的原生环境,实际路径、版本和哈希见附件。依赖下载准备超时后复用既有依赖离线安装,准备日志单列;不将其计入功能场景。验证服务已正常退出0并释放本次资源。本次没有故障注入,也未重跑 FULL、推测解码、DP/PCP/DCP/connector、关闭基线或性能矩阵。
kv.write/read仍是边界计划,不能单凭它证明实际KV内容或模型数值正确。此前e28d647a组合的25/25用例、71项检查属于历史验收,不计作本次 master 复测。按附件
README_REPRODUCE.md选择空闲卡、端口和全新目录复跑;原始模型权重及原生依赖不包含在附件中。日志保留服务器UTC原值。ZIP SHA256:
e905df37ffa832469b382d1beef3e8e17a981daa9a702198e107cf72058938d8。验收边界与未解决项
kv.alloc/kv.release;finished/preempted只记录原生通知,不证明请求解绑或物理 block 已归还。生命周期闭环仍是明确缺口。write_target_mismatch,没有覆盖 Scheduler binding 同时被改坏、仍自洽时的write_outside_cache/null_block_write专用分支。设计来源