AI Infra Daily Radar
导言
这篇文章记录 AI infra、post-training 和 multimodal serving 方向的每日 PR / issue 雷达。每轮只深入少量 P0/P1 项:优先性能、多模态、调度、attention、padding、KV cache、MTP、NPU / Ascend 相关变化。
2026-07-03¶
扫描范围¶
- 窗口:2026-07-02T02:12:20Z 至 2026-07-03T02:13Z,约等于上轮之后的 24 小时。
- 仓库:
verl-project/verl、verl-project/verl-omni、vllm-project/vllm、vllm-project/vllm-omni、THUDM/slime、ByteDance-Seed/VeOmni。 - Release:本窗口内种子仓库没有新的正式 release;最近 release 仍是
vllm v0.24.0、vllm-omni v0.24.0rc1、verl v0.8.0。 - 深入上限:本轮深入 5 个 P0/P1 项;
verl#6901只做状态复核,因为昨日文档已经记录完整机制和 NPU 边界。
P0 / P1¶
| 优先级 | 项目 | 状态 | NPU 分级 | 结论 |
|---|---|---|---|---|
| P0 | vllm-omni#4344 HunyuanImage3 MoE EP+SP NPU mapping | merged, 2026-07-02 | M | 已合入;把 diffusion TP/SP/CFG/DP 映射到 vLLM MoE TP/PCP/DP/EP,修复 HunyuanImage3 DiT NPU fused MoE 在 EP+SP 下的 token dispatch / expert placement 不一致。 |
| P0 | vllm-omni#4841 Qwen3-TTS 310P optimization | open | M | 310P 专用 patch,覆盖 Talker / CodePredictor / Code2Wav:CPU Mimi encoder、FRACTAL layout 预打包、fused RMSNorm / RoPE / attention mask、vLLM-Ascend sampling helper。 |
| P0 | VeOmni#879 Qwen3.5 GDN NPU backend | open draft | L | 为 Qwen3.5 gated delta-rule 的 causal_conv1d 和 chunk_gated_delta_rule 增加 NPU backend,vendor MindSpeed-MM / FLA Ascend Triton kernels;直接相关但属于 kernel 级引入。 |
| P1 | VeOmni#880 Qwen3 residual-add + RMSNorm fusion | open | M | 在 Qwen3 decoder layer 内把 post-attention residual add 和 RMSNorm 合成 OpSlot("rms_norm", "residual_add"),GPU 用 Liger,NPU 用 npu_rms_norm wrapper。H100 侧自报 compute kernel time 约 3.5% 改善。 |
| P1 | verl#6923 Qwen3 MoE FSDP weight sync for vLLM rollout | merged, 2026-07-03 | S | 已合入 release/v0.8.0 backport;把 Transformers 5 packed 3D MoE expert weights 展开成 vLLM reload 需要的 per-expert gate_proj/up_proj/down_proj keys,修 live FSDP-to-vLLM rollout weight sync。 |
| P1 | vllm#47451 shared JIT warmup infra | open | L | 为 Triton / CuTeDSL / TileLang 等 JIT kernel 定义 compile-key warmup contract,目标是让 kernel owner 暴露真实 specialization key,而不是用 dummy inputs 猜测 warmup 覆盖。 |
| P1 | vllm#47458 shape transition stall | open issue | L | Qwen3.6 NVFP4 + flashinfer_b12x + GDN CuteDSL prefill 在大上下文切小请求时出现约 17.5s engine-wide stall;与 JIT / shape cache / worker 顺序重编译高度相关。 |
重点机制¶
vllm-omni#4344 是本轮最明确的已合入 NPU 多模态修复。HunyuanImage3 是 diffusion MoE,vLLM-Omni 自己有 TP/SP/CFG/DP,而 vLLM FusedMoE 期望用 TP/PCP/DP 表达 expert placement。旧路径没有稳定地把 diffusion SP/CFG 映射进 vLLM MoE 语义,导致本地 expert placement 与 token dispatch 不一致,出现 shape '[8, 16]' is invalid for input of size 64 一类 runtime failure。新逻辑只在 is_moe && enable_expert_parallel 下启用映射:
diffusion TP -> vLLM TP
diffusion SP -> vLLM PCP
diffusion CFG * DP -> vLLM DP
EP = TP * SP * CFG * DP
PR 自报在 8 NPU、HunyuanImage3 DiT-only offline serving 上验证了 TP4 + SP2:EP enabled 时 denoise_step_latency_ms=239.397,EP disabled 时 188.118。这不是单纯性能 PR;它先把 NPU diffusion MoE 的并行语义接到 vLLM FusedMoE 的 EP 公式,后续才有稳定优化空间。
vllm-omni#4841 是 310P 上 Qwen3-TTS 的平台专用优化。它没有改通用模型实现,而是在 vllm_omni/platforms/npu/_310p/patch/qwen3_tts.py 下把 Talker / CodePredictor / Code2Wav 的热点换成 310P 友好路径:Linear / Conv 权重预转 FRACTAL layout,RMSNorm、RoPE、attention mask、attention path 走 fused 或 layout-aware NPU op,CodePredictor codec embedding 预投影,并把 sampling 对齐到 vLLM-Ascend helper。风险是它依赖 CANN 9.1.0 beta、vLLM 0.24.0 和 vLLM-Ascend PR 11227;适配时应优先复现作者的 20 request 平均延迟和 seed-tts-eval zh 精度,而不是直接推广到 A2/A3 或其他 TTS 模型。
VeOmni#879 和昨日的 verl#6907/#6908 属于同一类 Qwen3.5 Gated Delta Net NPU kernel 化方向。VeOmni#879 更像框架内正式 backend:通过 OpSlot / KERNEL_REGISTRY 注册 name="npu",给 causal_conv1d 和 chunk_gated_delta_rule 补齐 NPU backend;rms_norm_gated 之前已经有 NPU backend。它声明 NPU e2e Qwen3.5-MoE VL SFT loss / accuracy 对齐 reference,并加了可在无硬件机器跑的 hardware-gate unit tests。NPU 分级仍是 L,原因不是接入点复杂,而是 vendor Triton kernel 需要覆盖 dtype、varlen、反向、长序列、torch_npu / triton-ascend 版本矩阵。
VeOmni#880 是更适合拆成 M 级小验证的 fused op。它把 Qwen3 post_attention_layernorm(residual + hidden_states) 折成 fused residual-add + RMSNorm。GPU 侧用 LigerFusedAddRMSNormFunction,NPU 侧用 lazy torch_npu wrapper;选择仍复用 model.ops_implementation.rms_norm_implementation。作者报告 H100 FSDP2 侧 fused 与 eager loss / grad_norm 约 1e-5 对齐,compute kernel time 1310.7ms vs 1357.6ms,kernel launches 少约 2760。NPU 需要补真实数值 parity 和 profiler;如果 npu_rms_norm wrapper 已稳定,工作量主要是 shape / dtype / in-place 语义验证。
verl#6923 处理的是训练与 rollout serving 的权重格式边界。Transformers 5 会把 Qwen-style MoE expert weights 存成 packed 3D mlp.experts.gate_up_proj / down_proj,但 vLLM 的 Qwen3 MoE reload path 仍期待 per-expert checkpoint keys。PR 在 FSDP parameter streaming 时展开为 mlp.experts.{expert_id}.gate_proj/up_proj/down_proj。这类改动对 Ascend/NPU 本身没有 kernel 依赖,但对 fully_async / colocated rollout / Qwen3 MoE 训练稳定性很关键,适合纳入 S 级回归。
vLLM#47451 / #47458 是同一类 shape / JIT 风险的两面。47451 新增 vllm/model_executor/warmup/jit_warmup.py、jit_warmup_triton_helper.py,并重构 sparse MLA / FA4 CuTeDSL warmup,让每个 warmable kernel 声明 frozen CompileKey、dispatch(...)、get_warmup_keys(...) 和 compile(key)。47458 则给出用户侧症状:nvidia/Qwen3.6-35B-A3B-NVFP4 在若干 20K-150K token prefill 后切到 60-120 token 小请求 burst,会让 EngineCore 全局停顿约 17.5s;perf 采样显示 EngineCore idle,而 PP worker 进程顺序 CPU churn。对 NPU serving 的直接启发是:压测不能只测 steady-state tokens/s,还要测 cold shape、warmup 覆盖、cache eviction 和跨 worker shape transition。
6901 状态复核¶
verl#6901 当前仍为 merged,merge commit 561a4b03a11b34446e44267c2e84c4bbf63585f5,changed files 仍是 model_forward.py、util.py、Megatron engine/config 等 6 个文件。最终合入版本把 pad_bshd_to_minibatch_max 默认设为 True,但只在 use_remove_padding=False 的 BSHD path 生效。PR body 中的机制和性能证据未变: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 空 batch 仍需补测
本轮复核确认合入版本仍保留 input_ids.offsets().diff().max()、seqlens_in_batch.max() 这类空 tensor 风险点。动态 batching、DP rank 空输入、VLM BSHD 和 MTP label / loss_mask 路径都需要覆盖;没有 NPU 编译缓存收益证据前,不应因为上游默认 True 就在 Ascend 实验配置中无条件继承。
简表¶
| 优先级 | 项目 | 状态 | 备注 |
|---|---|---|---|
| P0 | vllm-omni#4849 HunyuanImage3 bridge request batching | open | 修 #4079 后 request-level batching 与 HunyuanImage3 AR->diffusion bridge 的契约冲突;作者已在 vLLM / vllm-ascend 0.23.0 NPU 栈和 #4344 backport 上验证 MoE EP+SP inference,通过下一轮优先深入。 |
| P0 | vllm#47181 DCP + FlashInfer MLA follow-ups | open, needs-rebase | Decode Context Parallel 核心 attention/parallel serving 路径,覆盖 Spec Decode/MTP、SWA hybrid、TRTLLM GQA decode、routed experts replay、NaN guard 和 GPU seq_lens;强 NVIDIA/FlashInfer 依赖,NPU 先跟踪机制。 |
| P0 | verl#6907 Qwen3.5 NPU Triton GDN kernels | closed, unmerged | 有完整 NPU forward/backward 验证记录,但无 merge commit;可能被 #6908 或后续 PR 替代,继续跟踪。 |
| P0 | verl#6908 Qwen3.5 Triton GDN patch | closed, unmerged draft | 同属 GDN 方向,但 PR 明确写 Needs NPU validation;不当作已合入特性。 |
| P1 | vllm-omni#4714 HunyuanImage3 MXFP8/MXFP4 online quant on Ascend | open | 为 HunyuanImage3 AR inference 增加 Ascend NPU W8A8 MXFP8 / MXFP4 在线量化;1K input、BS=32 自报 TTFT BF16 1440ms -> MXFP8 1380ms / MXFP4 1359ms。 |
| P1 | vllm-omni#4848 NPU upgrade to v0.24.0 | open | 更新 vllm-ascend CI image、NPU quickstart 和 runner interface;Qwen3-TTS、Qwen3-Omni、Wan2.2 I2V 三组 NPU 测试通过。 |
| P1 | vllm#47463 fused_topk_bias for DSv4 | open | 小改动,去掉 hash_indices_table is None 时冗余 dtype cast;属于 DeepSeek V4 perf tracker 子项。 |
| P1 | vllm#47474 cache token_to_req_indices for DSv4 |
open | 减少 Sparse MLA / SWA / Compressor 重复构建 mapping 和 CPU->GPU copy,微基准报 5x-6x kernel performance improvement。 |
| P1 | vllm#47443 HPC Attention split-K by shape | open | Decode path 按 (max_decode_seq_len, num_decode_tokens, num_heads, num_kv_heads) 选择 split-K;强 H20 / SM90 / HPC backend 绑定。 |
| P1 | vllm#47391 padded EAGLE input prep | open | Spec Decode perf;优化 padded EAGLE input prep 和 EAGLE3 layer0 RMSNorm concat,偏 serving 热路径。 |
| P1 | VeOmni#881 FSDP2 torch compile | open | 训练框架性能/编译方向,需等机制和验证证据更完整。 |
| P1 | verl-omni#231 MMK12 Qwen3-Omni GSPO on NPU | open draft | 多模态 NPU recipe,偏训练验证入口。 |
| P1 | verl-omni#225 Ascend NPU Dockerfiles | open | 环境/安装文档,对可复现验证有价值但非算法性能项。 |
| P1 | THUDM/slime#2146 shard-level weight update | open | 与昨日 slime#2147 RFC 同线,关注 non-colocate weight sync 的 shard-level P2P 与 fallback。 |
| P2 | vllm#47450 structured output crash fix | open | 稳定性修复,低于性能/多模态主线。 |
验证清单¶
- HunyuanImage3 EP+SP:用 8 NPU 复现 TP4+SP2+EP enabled / disabled,核对 vLLM TP/PCP/DP/EP group、MC2 state、token dispatch shape、生成图像正确性和 denoise latency。
- Qwen3-TTS 310P:锁定 CANN 9.1.0 beta、vLLM 0.24.0、vLLM-Ascend PR 11227,复现 20 request 平均延迟和 seed-tts-eval zh 精度;再尝试 A2/A3 前必须先拆平台差异。
- Qwen3.5 GDN NPU kernel:覆盖 varlen dyn_bsz、Dense/MoE、forward/backward parity、长序列、异常 shape、bf16/fp16、torch_npu / triton-ascend 版本矩阵。
- Qwen3 fused RMSNorm:在 NPU 上比较 eager vs fused 的 loss、grad_norm、activation dtype、in-place residual 语义、kernel launch 数和 step time。
- Qwen3 MoE weight sync:在 FSDP-to-vLLM rollout live sync 中验证 packed 3D expert weights 展开后的 key、shape、dtype 与 vLLM reload path 一致,覆盖 dense model no-op。
- vLLM JIT / shape transition:构造大 prefill -> 小 decode burst、cold shape -> hot shape、cache eviction 三类负载,采集 TTFT、ITL、worker CPU、compile latency、engine-wide stall 和 warmup key 覆盖率。
参考链接¶
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 压测指标,而不是先改算子。