MRV2 增加无 pinned memory 平台回退缓冲
值得精读。改动虽小,但展示了如何用最小的接口调整(uva 属性改方法)来包装一个平台相关的回退实现,保持上层调用方无感。建议重点关注 NonUvaBuffer 的同步拷贝开销以及 StagedWriteTensor 在无 UVA 时的显存回退策略,这两处决定了新平台的性能与稳定性。若团队计划支持更多无 pinned memory 平台,可在此基础上补充针对回退路径的基准测试。
标签列表
聚合结果
MRV2 增加无 pinned memory 平台回退缓冲
值得精读。改动虽小,但展示了如何用最小的接口调整(uva 属性改方法)来包装一个平台相关的回退实现,保持上层调用方无感。建议重点关注 NonUvaBuffer 的同步拷贝开销以及 StagedWriteTensor 在无 UVA 时的显存回退策略,这两处决定了新平台的性能与稳定性。若团队计划支持更多无 pinned memory 平台,可在此基础上补充针对回退路径的基准测试。
原始 PR · 作者 taneem-ibrahim · 合并时间 2026-09-15 07:11
PP 非末位 rank 补跑 pooling,修复 MRV2 跨步状态过期
值得精读。2 行修复背后是对 MRV2 执行流与 PP 通信排序的细致理解:如何区分"模型输出"与"阶段中间张量"、如何在保持非阻塞流水的同时完成状态后处理,以及用最小可复现脚本量化正确性误差(余弦相似度 0.26 → 1.0)的验证方法。对理解 v1 worker 的 PP 数据流和 pooling 状态机很有帮助。同时可关注 njhill 关于加注释的建议——这类控制流分支需要文档化其"仅为后处理"的语义,避免后续维护者误改。
原始 PR · 作者 specture724 · 合并时间 2026-09-14 13:42
MRV2 DBO 微批步骤接入 FULL CUDA 图捕获与回放
值得精读,尤其是三类设计决策:(a) `_maybe_ubatch_twin` 用与 DP 握手完全相同的阈值函数生成候选,把“可捕获”与“可分发”强行绑定,这是避免多 rank 不对称执行的关键;(b) `run()` 拆成 `begin_capturable_run()` / `finish()`,把线程创建、device 设置与 cuBLAS 预热留在图外,只让 handoff 与 join 进图,这是 DBO 能捕获成功的前提;(c) `_capture_stream` 强制捕获流与微批线程 compute stream 一致,是移植 V1 `gpu_ubatch_wrapper.py::_capture_ubatches` 时最容易漏掉的一点。阅读时请结合 #50945 一起看(本 PR 的 diff 建立在它之上),并重点关注 dp_utils.py 中 `2 * min(num_tokens_across_dp) < ubatch_desc.num_tokens` 这一守卫——它已被确认存在边界 bug,跟进补丁前不建议在生产 DP 负载高度不均的场景依赖 FULL 微批回放。此外建议跟踪 coderabbitai 提出的“永不被回放的孪生图”是否会形成显存浪费的后续处理。
原始 PR · 作者 chaojun-zhang · 合并时间 2026-09-14 11:40
回滚 XPU 量化 CI 的 V2 runner 禁用,恢复 V2 覆盖。
值得快速浏览,重点不是代码而是 PR body 的根因分析。这是一次教科书式的 "临时 workaround → 根因定位 → 硬件验证 → 基于根因修复回滚 workaround" 闭环,对处理跨后端(CUDA/XPU)行为差异的 bug 有参考价值。关注点:确认 #54809 确实已合入当前 main;后续若 XPU 量化 CI 再次挂起,应优先检查 V2 执行路径而非重新引入环境变量规避。
原始 PR · 作者 taneem-ibrahim · 合并时间 2026-09-13 13:49
MRV2 池化支持 prompt_embeds,token id 断言下沉到任务级
值得精读,但不必花大量时间:diff 极小,重点看两处设计决策——(1) 为什么把 `prompt_token_ids` 放宽为 `list[int] | None` 而不是在 `model_runner` 里为 embeds 请求加特例;(2) 为什么断言放在 `if pooling_params.requires_token_ids:` 分支内而不是 `_get_pooling_metadata` 里。这两点体现了“输入校验跟随能力声明、在真正使用点失败”的模式,可直接迁移到其他 MRV2 迁移修复中。若你在维护池化任务或新增 pooler,请额外关注 `requires_token_ids` 的声明是否与实际实现一致,并建议补一条 MRV2 下 embeds 与 token 输入混合 batch 的回归用例,把本次手工验证固化进 CI。
原始 PR · 作者 LucasWilkinson · 合并时间 2026-09-11 13:07
PCP 下解锁单模块 MTP 与 DSpark 投机解码
值得精读,尤其是负责 MRv2、PCP/DCP 与投机解码的工程师。重点看三处:(1) `PCPManager.prepare_draft_prefill` / `restore_draft_prefill` 定义的“首个 draft forward 复用 rank-local batch、后续 replicated draft 刷新全局 block table”契约,这是本 PR 的核心设计决策;(2) `partition_batch` 中 positions / seq_lens / logits_indices 的重写(positions 必须来自 GPU 全局 batch、本地 logits 不再采样),它解释了为什么必须移除 `req_states` 依赖;(3) `sparse_attn_indexer.py` 与 `check_attention_cp_compatibility` 的口径放宽,判断是否接受这种“隐式形状判定 + 校验只覆盖 target 层”的取舍。若要在生产启用,建议先补一条 PCP + MTP/DSpark 的 e2e 用例,并重跑作者未完成的整模型 acceptance 验证(含 dummy/profile 路径)。
MRv2 接入 KV-sharing fast prefill 并解除 V2 门禁
建议精读,重点看三处:一是 `vllm/v1/worker/gpu/attn_utils.py` 中 `FastPrefillHelper.prepare` 的三条门控(`not has_prefill` / `CUDAGraphMode.FULL` / `num_ubatches > 1`)与 `buf[num_logits:] = logits_indices[-1]` 的填充手法——这是「缩减 batch 复用到已捕获 cudagraph」的通用范式,可迁移到其他需要动态缩小 batch 的优化上;二是 `get_kv_sharing_fast_prefill_eligible_layers` 的「反向扫描取连续后缀 + 跳过但不打断 draft 层」写法,它把「层注册顺序即执行顺序」这一隐式约定显式化为可测试逻辑;三是 `make_kv_sharing_fast_prefill_common_attn_metadata` 从 assert 改为回退,理解 V2 dummy batch(cudagraph 捕获)为什么必须走完整 batch。评审角度建议关注:新增的静默降级分支是否需要日志/告警,`num_logits_indices` 裁剪契约是否需要断言或文档化,以及为 `prepare` 的门控与 PCP 分支补单测。
MRV2 apply_write 对 UVA 目标改用 UVA 暂存,省去 H2D 拷贝提速约 1.3~2×
值得精读。设计上"按目标选择暂存路径"与"直接复用现有池而非引入新抽象"清晰简洁,测试对增长、复用、in-flight 读者生命周期的覆盖扎实,性能数据完整且区分了稳态复用、首次增长与边界增长。可借鉴其基准方法(分段、增长、复用分类对比)用于其他内存/拷贝热点优化。