AI Infra Daily Radar
导言
这篇文章记录 AI infra、post-training 和 multimodal serving 方向的每日 PR / issue 雷达。每轮只深入少量 P0/P1 项:优先性能、多模态、调度、attention、padding、KV cache、MTP、NPU / Ascend 相关变化。
2026-07-02¶
扫描范围¶
- 窗口:由于本地状态文件为空,首次运行回看 2026-06-29 至 2026-07-02 的 72 小时窗口。
- 仓库:
verl-project/verl、verl-project/verl-omni、vllm-project/vllm、vllm-project/vllm-omni、THUDM/slime、ByteDance-Seed/VeOmni。 - Release:窗口内重点 release 是
vllm-project/vllm的v0.24.0与vllm-project/vllm-omni的v0.24.0rc1;其他种子仓库无 72 小时内新正式 release。 - 深入上限:本轮只深入
verl#6901;其余 P0/P1 项做雷达级机制摘要和后续关注记录,避免一轮扩张过多。
P0 / P1¶
| 优先级 | 项目 | 状态 | NPU 分级 | 结论 |
|---|---|---|---|---|
| P0 | verl#6907 Qwen3.5 NPU Triton GDN kernels | open | L | 新增 verl.models.transformers.ops.gdn Triton kernels、Qwen3.5 / Qwen3.5-MoE NPU patch、示例默认开关和单测;直接相关但属于 kernel 级验证,不自动适配。 |
| P0 | verl#6901 BSHD micro-batch padding | merged, 2026-07-02 | M | 已合入;用 mini-batch global max 统一 BSHD micro-batch 的 s_q,减少 cuDNN / TE fused-attention plan build。代码迁移轻,但 NPU 收益必须实测。 |
| P0 | verl#6886 vLLM 0.19+ Ascend fully_async 适配 | merged, 2026-07-01 | S | 已合入;修 vLLM 0.19+ 下 NPU 场景的 process group、FusedMoE weight loader、RotaryEmbedding flash attention 关闭和 quant auto-detect 环境变量。适合进入本地 Ascend 回归清单。 |
| P1 | vllm#47355 DCP sparse MLA indexer overlap | open draft | L | 把 sparse MLA DCP indexer 切成 custom-op 边界,尝试 side stream overlap,并让 full CUDA graph 保留 stream 结构;当前 smoke 端到端未变快。强 CUDA / graph / custom op 依赖,NPU 只跟踪机制。 |
| P1 | vllm#47352 Model Runner V2 MTP top-k index sharing | open draft | M | 把 DeepSeek-style MTP 多 draft step 复用 top-k index buffer 的优化接入 Model Runner V2;报告 output throughput 1517.50 -> 1625.59 tok/s。NPU 可能复用控制流,但依赖具体 MTP attention/indexer 实现。 |
| P1 | vllm-omni#4802 KV cache efficiency metrics | open RFC | S | 为 omni 多 stage / replica / modality 增加 KV footprint、occupancy、tail waste、fragmentation、prefix hit attribution。对 NPU 主要是监控维度适配,适合后续接入服务观测。 |
| P1 | vllm-omni#4796 OmniSerializer perf refactor | open RFC | M | 拆 OmniSerializer / SHM connector copy 与 allocation 开销,计划 encode_into、registry、msgspec.Struct wire types。NPU 无硬件绑定,但涉及 wire format 与高并发正确性。 |
重点机制¶
verl#6901 的核心是稳定 shape,不是减少 padding。旧 BSHD path 每个 micro-batch 用自己的 seqlens_in_batch.max() padding,32 个 micro-batch 可能产生 20+ 种 s_q;新 path 在 forward_backward_batch 里从 mini-batch nested input_ids.offsets().diff().max() 计算 forced_max_seqlen,再传给 preprocess_bshd_engine、MTP label / loss mask 和 VLM attention mask。作者报告 Qwen3.5-35B-A3B 上 Total Step Time 534.13s -> 397.71s,Old Log Prob 78.38s -> 35.45s,Actor Update 247.58s -> 154.50s。
6901 的 NPU 边界
forced_max_seqlen 传递本身主要是 Python / Megatron shape 逻辑,但收益来源是 CUDA / cuDNN / TransformerEngine 对新 shape 的 fused-attention graph / plan build 成本。Ascend / NPU 上不能默认推导同样收益;额外 padding 还可能增加 [B,1,S,S] attention mask、HBM 和 host 侧处理成本。
verl#6886 是更直接的 Ascend 适配项:verl/utils/distributed.py 增加 vLLM 0.19+ 的 TCPStore 创建路径,verl/utils/vllm/npu_vllm_patch.py 继续处理 NPU 上的 RotaryEmbedding flash attention、FusedMoE weight loader 和 quantization auto-detect。这个 PR 已合入,适合做 S 级回归:启动、权重加载、fully_async rollout、vLLM Ascend 版本组合。
verl#6907 是本轮最直接的 NPU kernel 项:它在 verl/models/transformers/ops/gdn/ 下新增 Qwen3.5 gated delta rule Triton kernels,并通过 qwen3_5_gdn_patch.py 在 NPU 上把 HF Qwen3_5GatedDeltaNet 注入到 verl fused path。PR 自报验证包括 Ascend910 上 Triton sanity、fused forward 与 torch reference 对齐、backward 有限梯度,以及 27B / 35B GRPO FSDP NPU 示例默认开启 use_triton_gdn=True。这类改动应按 L 级处理:先读 kernel 边界、dtype / shape 约束、反向正确性和长跑稳定性,不在本轮自动开适配 PR。
vLLM#47355 和 vLLM#47352 都属于 CUDA serving 热路径探索。前者试图把 sparse MLA DCP indexer work 放到 auxiliary CUDA stream 下 overlap;后者让 Model Runner V2 MTP draft steps 共享 top-k index buffer。两者都不适合直接自动改 NPU,但可以转化为 NPU 适配问题:NPU runtime 是否有等价 stream overlap、图捕获边界、indexer buffer 生命周期和跨 draft step 正确性。
vLLM-Omni#4802/#4796 是多模态 serving 观测与数据面效率。4802 把 KV cache 指标按 stage / replica / modality / source 拆开,解决单一 engine total 无法解释 talker / code2wav 等多 stage 压力的问题;4796 把 serializer 的 copy、allocation、wire format 和 thread-safety 拆成两阶段 RFC。两者对 Ascend/NPU 的价值不是算子迁移,而是后续定位多模态 serving 的 host-bound、KV waste 和跨进程传输瓶颈。
简表¶
| 优先级 | 项目 | 状态 | 备注 |
|---|---|---|---|
| P0 | verl#6908 Qwen3.5 Triton GDN patch | open | 与 verl#6907 同主题,需下一轮判断是否为替代/拆分 PR。 |
| P1 | verl#6913 fused-kernel gradient tracking bug | open | fused kernel 正确性,等待 review。 |
| P1 | verl#6911 GLM5 on NPU docs | open | 文档/支持矩阵,跟踪即可。 |
| P1 | vllm#47363 extensible KV cache memory | open | KV cache 结构变化,后续可能影响 offload / connector。 |
| P1 | vllm#47359 Batch Invariant FLASHINFER_MLA | open feature | attention backend 形状不变性,值得跟踪。 |
| P1 | vllm#47334 CUDA kernels to CuTeDSL | open RFC | Hopper / Blackwell kernel 重写方向,NPU 为 L 级跟踪。 |
| P1 | vllm#47303 MXFP4 MoE OOB reads | open bug | 量化 MoE kernel 正确性问题。 |
| P1 | vllm-omni#4814 Wan2.2 Ulysses + cache-dit on Ascend | open bug | 直接 Ascend 多模态 serving 问题,待更多复现信息。 |
| P1 | verl#6894 FSDP2 GRPO crash on Atlas 800T A3 | open issue | Ascend A3 训练稳定性,需跟踪最小复现。 |
| P1 | verl#6881 vLLM 0.19+ Ascend NPU | open | 与已合入的 #6886 同主题但仍 open,需确认是否是后续补丁还是重复 PR。 |
| P1 | verl#6912 wake KV cache 前 empty cache | open | colocate rollout weight sync 后,PyTorch CUDA allocator 与 vLLM VMM cuMemCreate 不共享 free-list,可能导致 KV cache resume OOM。 |
| P1 | vllm#46838 FlashInfer CUTLASS MoE tuning token bound | open | 修 fused MoE tuning 误用 CUDA graph max capture size,H200x8 上 Mixtral / DeepSeek-V2 throughput 有改善。 |
| P1 | VeOmni#872 Async Activation Offload | open draft | 大模型训练显存/吞吐相关;新增 veomni/distributed/async_offload.py,下一轮应重点跟踪验证证据。 |
| P1 | VeOmni#860 DeepSeek V4 DSA backend | open | 接 cuDNN DSA indexer 与 FlashMLA/cuDNN sparse attention backend;强 CUDA 依赖,NPU 分级 L。 |
| P1 | VeOmni#871 Decoupled-Trigger FSDP2 | open draft | 面向 MoE + EP recomputation,减少冗余 pre/post forward;值得跟踪但未深入。 |
| P1 | vllm-omni#4344 HunyuanImage3 MoE EP+SP on NPU | open | 8 NPU 离线 serving 已验证 TP4+SP2 的 diffusion MoE parallel mapping,直接关联 Ascend 多模态。 |
| P1 | verl-omni#208 Qwen3-Omni Thinker LoRA FSDP | open | Qwen3-Omni Thinker transformers 5.x 下 fused MoE expert LoRA/FSDP 支持,偏多模态训练 recipe。 |
| P1 | slime#2147 shard-level P2P weight sync | open RFC | non-colocate 训练权重同步从 full broadcast 改为 shard-level P2P,报告 Qwen3-8B weight sync 0.76s -> 0.48s。 |
| P2 | vllm#47368 redact structured-output schema | open | 安全/日志,不是性能主线。 |
| P2 | vllm-omni#4826 Qwen2.5-omni video description | open | 多模态准确性 bug,低优先级。 |
验证清单¶
- 6901 NPU 对照:固定 seed、模型、长度分布、并行策略,比较
pad_bshd_to_minibatch_max=True/False的 Total Step、Old Log Prob、Actor Update、tokens/s/NPU、HBM peak、host CPU、attention mask size。 - 6901 正确性:覆盖空 nested tensor、
batch_size == 0、VLM BSHD path、MTP label / loss mask、TP / CP / FP8 alignment 后 shape 一致性。 - 6907 kernel 审核:核对 GDN Triton kernels 的 shape / dtype / block size / backward 约束,补长序列、MoE、异常 shape、不同 torch_npu / Triton 版本的回归矩阵。
- 6886 回归:vLLM 0.19+ Ascend 组合下启动、FusedMoE 权重加载、RotaryEmbedding 路径、fully_async rollout、
VLLM_ASCEND_AUTO_DETECT_QUANTIZATION=0是否按预期生效。 - vLLM serving 跟踪:DCP sparse MLA overlap 和 MTP index sharing 先不迁移;等非 draft PR 出现或有明确 NPU runtime 对应机制后再评估。
- vLLM-Omni 观测:优先把 KV stage / modality attribution 作为多模态 serving 压测指标,而不是先改算子。