Ascend Dispatch Profiling

导言

任务是用 msprof 测量 elastic_dispatch.cpp 的通信性能,再用 MindStudio Insight 分析 icache miss 等问题。实际环境是 昇腾 950、最新 CANN、多机多卡。第一次接触这套工具,最容易卡住的不是参数,而是分不清“整个分布式调用慢”“某个核慢”和“某类指令停顿”分别需要什么证据。

本文按 确认 V2 调用入口 → 建立延迟基线 → 采集系统时间线 → 检查 ICache 与 SIMT 停顿 → 对照实验展开。内容来自截至 2026-09-16 的公开官方文档和固定版本源码,没有在目标 950 集群实测;涉及通信重放的命令是能力探测模板,不承诺该自定义算子已被工具支持。

Read more

Ascend 950 RM Target Selection

导言

已经知道组 WQE、敲 doorbell,接下来要弄清:如果同一个本地发送端点要向不同 rank 发送,每条 WQE 的远端目标在哪里设置? 本文沿 SHMEM 的 pe → remote_mem_info → WQE 追踪源码,再对照 elastic_dispatch.cpp。关键是分清本地队列、远端寻址元数据,以及 put/write 中容易被误读成 Jetty ID 的内存 tokenId。

Read more

Inference MegaKernel

导言

小 batch LLM 推理并不总是被矩阵乘法本身限制。数十到数百个 kernel 的启动边界、kernel 尾部气泡、中间张量写回 HBM,以及 MoE 的 Dispatch/Combine 通信,都可能让计算单元等数据、让内存等指令、让互联等计算。MegaKernel 的核心不是“把代码写得更大”,而是把 host 侧的算子调度下沉为 GPU 内部的任务系统。

本文沿三条路线展开:Hazy Research 的手写整模型 MegaKernel、MPK 的编译器与常驻运行时、DeepSeek MegaMoE 的 expert-wave 通信计算流水。结论是:这类优化用更强的静态专用化和片上资源约束,换取更少的启动边界与更细的就绪事件;收益必须与寄存器、共享内存、HBM、互联、功耗和动态路由一起核算。

Read more

vLLM Inference Profiling

导言

训练 profiling 通常围绕 forward、backward、optimizer 和通信几类稳定阶段展开;推理 profiling 则更像一条被压扁的多层时间带:prefill、decode、spec decode、采样、图模式、host 同步、调度空隙和特殊融合算子会叠在同一个 step 里。

这篇文章用一次 vLLM-Ascend trace 作为样本,先把 Free、vllm::gdn_attention_core、FusedInferAttentionScore、GemmaRmsNorm、fused_sigmoid_gating_delta_rule_update_kernel_0、aclnnInplaceUniform_DSARandomUniform_DSARandomUniform 这些名字拆开,再总结一套以后跟踪新模型融合算子的 checklist。

Read more

BSND TND Operator Layout

导言

讨论 BSND/TND 时,最容易误判的是把 推理 prefill 支持 当成 训练全链路支持。对 Qwen3.5 这类含 Gated Delta Net 的模型,TND 不只是把 [B, S, N, D] reshape 成 [T, N, D]:训练还要覆盖 backward、recurrent state、cu_seqlens、label / loss mask、old logprob、ref logprob、actor update 和框架并行契约。

本文的结论是:推理 TND 是中等工程量,训练 TND 是大工程量;verl 已经支持 Qwen3.5 RL,但具体 layout 支持取决于 FSDP/Megatron/MindSpeed/vLLM 路径,不能一概而论。

Read more

NPU Training Operators - GDN

导言

这篇笔记记录一次很窄的接入设计:在 verl release/v0.8.0 的 Qwen3.5 GRPO + FSDP 路径里,NPU 已经有 RMSNorm、RoPE、MoE GMM 等 patch,但 Gated Delta Net / GDN 仍然落在原始 eager 路径。目标不是改 GRPO 算法,而是给模型 forward 里的 chunk_gated_delta_rule 加一个可配置的 Triton 优先路径。

参考对象是 MindSpeed-MM 提交 5aaf0791d00abcbf5dd16af10091f4391030ad00:它把 Qwen3.5 的 GDN 计算模式显式化为 gdn_compute_mode,并区分 triton、ascendc、eager。本文给出的 verl 方案先接入 Triton,保留 eager 回退;AscendC 自定义算子作为后续扩展。

Read more

NPU Training Operators - RoPE MRoPE

导言

MindSpeed core_r0.16.0 的 --use-fused-rotary-pos-emb 是普通 RoPE 路径:freqs -> cos/sin -> npu_rotary_position_embedding(x, cos, sin, mode)。torch_npu 另有 npu_rotary_mul、npu_interleave_rope、npu_mrope,其中 npu_mrope 可以覆盖推理侧多模态 MRoPE;这和 Megatron Bridge 的 config.apply_rope_fusion 不是同一个开关。

客户报错 Qwen3VLMultimodalRotaryEmbedding has no attribute get_rotary_seq_len 的直接含义是:Qwen3-VL 的 MRoPE 对象被送进了 Megatron Core 的普通 rope 分支。先修正分支:position_embedding_type="mrope",apply_rope_fusion=False。如果要用 NPU MRoPE fused,应在 q/k rotary apply 处显式接 torch_npu.npu_mrope,不是打开普通 apply_rope_fusion。

Read more

NPU Training Operators - GMM

导言

GMM 在 Qwen3.5 MoE 里的接入点是 routed experts 的两次矩阵乘:hidden -> gate/up 和 intermediate -> hidden。shared_expert 仍是普通 Qwen3_5MoeMLP,attention 不动,Dense 版 Qwen3.5 的普通 MLP 也不是替换对象。

PR #2664 的公开 diff 主要是给 mindspeed_mm.fsdp.ops.moe_ops.gemm.grouped_matmul 增加 fused/eager 一致性 UT,并放宽 unpermute UT 容差;它可以作为 GMM wrapper 接口被测试覆盖的证据,不能写成完整功能接入 PR。[^gmm-pr-api][^gmm-pr-files]

Read more

NPU Training Operators - MC2

导言

MC2 的核心不是异步通信,而是 fused operator 内部的计算/通信切分与流水。MindSpeed-LLM 文档里的典型场景是 TP/SP 下的 matmul + all_reduce/all_gather/reduce_scatter;MindSpeed-MM PR #2480 接入的是 MoE expert parallel 下的 AllToAllv + GroupedMatmul 和 GroupedMatmul + AllToAllv。

本文只记录可迁移信息:PR 改了哪些文件、ep_mc2_forward 怎么跑、迁移前检查什么、怎么验证、哪些结论不能从公开资料直接外推。

Read more