
SGLang 内核融合与流重叠模式目录Profiler 性能分析的 Triage 参考手册【免费下载链接】sglangSGLang is a high-performance serving framework for large language models and multimodal models.项目地址: https://gitcode.com/GitHub_Trending/sg/sglang本文介绍 SGLang 仓库中内置的融合fuse与重叠overlap模式目录fuse-overlap-catalog.md它是.claude/skills/llm-torch-profiler-analysis分析技能在判定某个 kernel 融合机会是否为新发现之前必须查阅的源码级查找表。读完本文你将掌握该目录的收录范围规则、五步 triage 判定协议、按优化家族组织的 19 个章节结构以及如何结合 SGLang 源码中的开关server args 与环境变量验证某条融合路径究竟是缺失、被禁用还是尚未合入。1. 这个目录是什么内核级融合的查重表该目录位于 .claude/skills/llm-torch-profiler-analysis/references/fuse-overlap-catalog.md配套的主文档是同一技能目录下的 SKILL.md。后者定义了统一的torch.profilertrace 分析工作流对sglang、vLLM、TensorRT-LLM、TokenSpeed四套推理框架通过统一入口 scripts/analyze_llm_torch_profile.py 产出一张三表报告——kernel 表、overlap-opportunity 表、fuse-pattern 表默认只渲染累计 GPU 时间占比 ≥1.0% 的行。在报告中出现若干分散的小 kernel 或许可以融合这类线索时技能规范要求先对照本目录做查重而不是直接把结论说成新的优化机会。目录开头的定位声明明确了这一点This catalog is the source-backed lookup table that the profiler skill should consult before labeling a fuse or overlap opportunity as novel.若分析只涉及 overlap 机会还需同时加载 overlap-catalog.md纯重叠视角的查找表。1.1 收录范围严格限定在 kernel 层面本版本目录刻意采用 kernel 级kernel-scoped收录标准原文规则如下只保留能映射到一个融合后的 GPU/NPU kernel 家族、一个集合通信 kernel融合家族、或一个 profiler 可见的 GPU kernel 间流重叠的行明确排除纯 host 侧的调度器scheduler、事件循环event-loop、executor、offload 与 load-path 模式。同时目录按可复用的优化家族分组而不是按某个具体模型分组其中 vLLM-origin 等章节属于对比参考comparative references这些代码不一定存在于当前 checkout 的 sglang 树中但在判定是否 novel之前仍应被视为上游或同族 kernel 家族。文档还带有一次刷新记录2026-06-26核对了 SGLang、vLLM、TensorRT-LLM、TokenSpeed 的官方 main 提交并把 vLLM 的 torch.compile pass 清单拆分到独立的 vllm-torch-compile-fusions.md 中维护。2. 五步 Triage 判定协议目录给出的使用方法即分析一条 trace 发现时的判定流程从 triage 三张表出发锁定 top 行将 top 行与目录各表的Trace keywords和Primary code两列做匹配若命中已有行结论应二选一这是一条已存在但缺失 / 被禁用 / 回退 / 当前后端不支持的优化路径这是一个已知家族应当把同样的融合重新应用到当前模型形状上同时检查 mainline 对比章节与PR-backed / in-flight章节。若在那里命中不得称之为 novel应称为上游upstream或在途in-flight模式只有当发现不符合本目录任何 mainline 或 PR-backed 行时才能标记为 new。SKILL.md 中对两 trace 工作流的要求与之一致读表顺序为 kernel 表 → overlap 表 → fuse-pattern 表且在宣布新优化想法之前必须先对照本目录与 overlap-catalog 的 mainline 行、再看 in-flight 行。若没有精确匹配但整体形状接近某个已知家族只允许在表后追加一条high/medium/low相似度注释且要基于完整模式形状producer-consumer 链、源码位置、CPU op 名、TP 上下文、模型结构而非单个 kernel 名判断。3. 目录的 19 章结构按框架来源与融合类型分组目录共 19 个章节可归为五类章节内容§1 LLM / SRT fused-kernel familiesSGLang 主干中约 40 个融合 kernel 家族addRMSNorm、SwiGLU、QK normRoPE、MoE router/top-k、KV cache 写融合等§2 LLM / SRT kernel-overlap families主干中约 10 个双流/多流重叠家族SBO、Q/K norm 分流、shared-expert 与 routed-expert 重叠、MoriEP 通信流等§3 VLM-specific kernel families视觉侧 QK norm aux 流、ViT CUDA graph 下 aux 流被禁用、多模态 RoPE 融合§4–5 Diffusion fused-kernel / overlap 家族DiT 调制融合residualnormscaleshift、Z-Image/LTX2 专用融合、Ulysses/USP all-to-all、green-context 等§6–7 SGLang PR-backed / in-flight 家族追踪尚未稳定合入的 PR如#21877grouped down-GEMM combine、#22005addRMSNormper-token FP8 quant、#20667Qwen3.5 QK normRoPEKV 写§8–12 FlashInfer / TensorRT-LLM mainline 对比行FlashInfer 主干的 epilogue 融合、PDL 启动重叠、TensorRT-LLM 的 AutoDeploy 重写家族§14–17 vLLM / TokenSpeed 来源家族vLLM 的 compile-time fusion pass、DSV3/DSV4 专用 router GEMM、TokenSpeed 的 CuTe DSL MLA 等§18 重要开关与注意事项解释哪些 server args / 环境变量会改变 trace 中可见的 kernel 形状§19 刷新命令维护者用rg/git log重扫本地源码树以刷新目录的命令清单每一行统一采用五列格式Pattern模式、Trace keywordstrace 中的特征 kernel 名、Primary code主要代码位置、Existing path已存在路径描述、Skill should conclude技能应给出的结论。下面挑几个代表性家族展开并结合 SGLang 当前源码给出验证。3.1 主干融合家族从 trace 关键词到源码§1 是体量最大的章节。选取几行说明其形态与当前代码对应关系Fused residual add RMSNormtrace 关键词如fused_add_rmsnorm*、npu_add_rms_norm、gemma_fused_add_rmsnorm。现有路径是 CUDA / ROCm / CPU / NPU 共享的 add-RMSNorm 实现。结论把拆开的 residual add RMSNorm 视为已有跨后端融合缺失而不是新想法。FlashInfer 统一allreduce_fusion关键词cross_device_reduce_1stage*、FusedAddRMSNormKernel、rmsnorm*。代码入口为 layernorm.py 中的forward_with_allreduce_fusion当前源码 L893、L1244 两处定义配合 flashinfer_comm_fusion.py 的 workspace 创建和allreduce_fusion(..., patternAllReduceFusionPattern.kARResidualRMSNorm, ...)调用以及 communicator.py 的apply_flashinfer_allreduce_fusion。结论TP 场景下 all-reduce 与 RMSNorm 仍分开时第一个怀疑对象是 FlashInfer allreduce fusion 缺失/被禁用/不支持而不是新的 TP 融合创意。Fused activation-and-mulSwiGLU/GeGLU关键词silu_and_mul、gelu_and_mul对应 activation.py单 kernel 覆盖激活 逐元素乘。Fused QK RMSNorm RoPE关键词qknorm*rope*rotary*分步出现时对应 fused_qknorm_rope.py一个 JIT kernel 对 packed QKV 原地做 QK RMSNorm 和 RoPE。Fused MoE dispatch / permute / combine当 trace 出现 token permutation、dispatch/combine、大量小 MoE 支持 kernel 时先查是否缺少FusedMoE风格路径或后端专属 dispatcherDeepEP / FlashInfer / FuseEP 等。Fused sampling temperature softmax与Fused logit softcapdecode 批大小下分离的 temp 除法 softmax、cast softcap 阶梯分别对应 Triton 单趟/多趟 kernel 与通用 softcap kernel 家族。目录中部分行的Primary code路径例如某些 router / sampling / elementwise 文件在当前 checkout 中可能已移动或改组织这正体现了以刷新记录与 PR 状态为准的维护约定引用具体行时应当以 §19 刷新命令 重扫确认。3.2 主干重叠家族双流模式与 SBO§2 收集了 SGLang 主干中的 kernel 重叠先例每一行都给出了技能应如何定论Single-batch overlapSBOMoE combine 与 down-gemm、shared-expert 工作的邻近双流窗口由 single_batch_overlap.py 实现含显式 SM 分区与事件同步。结论暴露的 MoE combine 若贴近邻近计算先按 SBO 分类再谈新重叠。Q 与 K norm 分流Q 留在当前流、K 可走alt_streamcapture 模式下入口在 models/utils.py 的apply_qk_norm。DeepSeek shared-expert / routed-expert 重叠shared experts 放alt_stream与 dispatch/combine 及 down-gemm 重叠Blackwell 上有专门的环境变量门控。Llama4 / ExaoneMoE / Grok 分支级重叠shared expert 分支与 routed 分支、dense MLP 与 block-sparse MoE 分支并行是分支级双流重叠的先例集合。MoriEP 异步 dispatch/combinedispatch 与 combine 提交到专用通信流仅通过 event 同步。Heterogeneous-TP staging scatter 重叠decode 侧 staging scatter 可在专用scatter_stream上跑见 staging_buffer.py 与 staging_handler.py。3.3 VLM 与 Diffusion 章节跨模态也受同一规则约束§3 只有三行但很关键vision 侧 QK norm 可以走共享的apply_qk_norm(...)并让 K 侧工作在aux_stream上layers/attention/vision.py但当SGLANG_VIT_ENABLE_CUDA_GRAPH打开时visionaux_stream是有意禁用的——因此 ViT CUDA graph 下看不到视觉重叠可能是设计如此而不是回退。§4–5 覆盖 diffusion 侧fused_scale_residual_norm_scale_shift/fused_norm_scale_shift等 DiT 调制融合、Z-Image 的norm(x) * tanh(scale) shift与 residual-gate 融合、LTX2 的 Ada values 物化融合PR#29390与residual update * gatePR#29361、Nunchaku 的 fused GELU MLP重叠侧则包括 Ulysses 序列并行 all-to-all、USPall-to-all ring attention、Turbo-layer 的 pipelined A2Aasync_opTrue 通信流分阶段后处理、TorchInductor 的reorder_for_compute_comm_overlap编译期重排以及 dual-stream DiT 模型。3.4 PR-backed / in-flight 行上游在途工作的状态快照§6、§7 是状态敏感的章节目录明确规定stable 条目应折叠回 mainline 行。例如PR#21877grouped down-GEMM DeepEP combine 融合。该路径一旦打开会有意禁用 SBO因为 combine 窗口已被折叠进 down-GEMM所以讨论combine 重叠时应先按这个上游 fused-overlap 家族分类PR#22005add RMSNorm per-token FP8 quant 的 CUDA JIT kernelnormed 值留在寄存器内同时输出 BF16 FP8 与 per-token scalePR#20667Qwen3.5 ROCm/AITER 路径的 QK norm RoPE KV cache 写融合PR#24150把 torch.compile 覆盖扩展到 local decode 区域Inductor 生成的融合可能取代手写小 kernel——因此 decode trace 中出现编译器生成 kernel 时应先检查这条在途 compile 路径再下该形状不支持的结论。§14–17 的 vLLM / TokenSpeed 来源行则回答了跨框架的问题当 trace 形状像某个上游家族但当前 sglang 树里没有同样实现时例如 vLLM 的fused_qk_norm_ropecompile pass、DSV3 专用 router GEMM、TokenSpeed 的 CuTe DSL MLA prefill/decode 与 MLA KV pack FP8 quantize结论应是上游已存在该家族而不是本地新想法。4. 开关与注意事项为什么 trace 里的 kernel 形状会不一样§18 是整份目录中实操价值最高的部分同一个模型仅因开关不同trace 中的 kernel 形状会显著变化。阅读 trace 前必须先核对这些开关否则会把配置差异误判为融合缺失。以下是与当前 SGLang 源码核对后的要点完整列表以目录原文为准开关 / 环境变量位置对 trace 解读的影响enable_flashinfer_allreduce_fusionarg_groups/fields/exec_.py开启 FlashInfer TP allreduce fusion 家族当前默认False且no_cliTrue需由配置解析设置flashinfer_allreduce_fusion_backend同上auto/trtllm/mnnvl选择后端要求 SM90 或 SM10Xauto 时 Blackwell 走 mnnvl、SM90 单机走 trtllmenable_aiter_allreduce_fusion同上开启 ROCm AITER TP allreduce fusionAMD 上先排除该已有融合再提新通信融合enable_deterministic_inferenceserver_args 相关会有意禁用或改变部分快融合路径尤其 AITER allreduce fusion 与部分 sampling/router 选择因此 trace 中出现拆分 kernel 可能是预期行为enable_single_batch_overlaparg_groups/fields/exec_.py开启 SBO 家族enable_fused_moe_sum_all_reduce同上开启 down 路径的融合 MoE sum-reduce未开时新 MoE 归约融合提案应先查这个开关SGLANG_BLACKWELL_OVERLAP_SHARED_EXPERTS_OUTSIDE_SBOenviron.pyL1145改变 Blackwell 上 DeepSeek 风格 shared-expert 重叠的行为SGLANG_NSA_FUSE_TOPK已更名为SGLANG_DSA_FUSE_TOPK保留旧名别名environ.pyL166门控 NSA/DSA fused top-k transform / page-table 构建当前默认TrueSGLANG_DISAGG_STAGING_BUFFERenviron.pyL749默认False开启异构 TP staging-buffer 家族及其重叠窗口SGLANG_STAGING_USE_TORCHstaging_buffer.py强制 staging gather/scatter 走 torch 回退Triton staging kernel 会按设计消失SGLANG_VIT_ENABLE_CUDA_GRAPHenviron.pyL1287开启时有意禁用 visionaux_stream重叠enable_torch_compileserver_args 及 diffusion server_args编译器生成的融合/重排会隐藏手写 kernel 名缺少自定义 kernel 名不等于缺少融合enable_fused_grouped_gemm_combinePR#21877在途路径会因 combine 被折叠进 down-GEMM 而有意禁用 SBO此外目录还列出了 FlashInfer 侧enable_pdl/launch_with_pdl、trigger_completion_at_end、use_cuda_graph、split_device_green_ctx*、TensorRT-LLM 侧rmsnorm_backend、insert_cached_attention.backend、TRTLLM_GEN_FUSED_MOE_USE_FLASHINFER、multi_stream_moe/multi_stream_mla_attn/multi_stream_gemm、mlir_elementwise_fusion以及 vLLM 侧PassConfig.fuse_allreduce_rms、fuse_norm_quant、fuse_act_quant、fuse_attn_quant、enable_qk_norm_rope_fusion、enable_sp、fuse_gemm_comms等的对应开关。其中两条尤其值得记住trigger_completion_at_endFalse时FlashInfer allreduce fusion 之后的下游 PDL-aware kernel 才能在同流上提前重叠设为True会把 completion 推迟到 kernel 末尾直接抹掉这个重叠窗口PDLProgrammatic Dependent Launch开启后启动分组与同流重叠的 trace 形状会显著变化因此跨 PDL 开关对比 trace 时必须先归一化。5. 刷新与维护目录不是静态的§19 给出了维护者重扫本地源码树以刷新目录的命令清单triage 脚本运行时不使用核心模式是# 对 SGLang 主干按 trace 关键词重扫 rg -n fused_add_rmsnorm|gemma_fused_add_rmsnorm|silu_and_mul|gelu_and_mul|fused_qk_rope_reshape_and_cache|fused_set_kv_buffer|fused_metadata_copy|normal_decode_set_metadata python/sglang rg -n FusedMoeRouter|fused_topk_deepseek|moe_fused_gate|fused_rms_fp8_group_quant|fast_topk_transform_fused|fused_temperature_softmax|fused_softcap python/sglang # 对兄弟仓库做对比扫描FlashInfer / TensorRT-LLM / vLLM rg -n AllReduceFusionPattern|allreduce_fusion|trigger_completion_at_end|rope_quantize_fp8|cutlass_fused_moe|trtllm_.*_moe $FLASHINFER_REPO/flashinfer rg -n multi_stream_moe|multi_stream_mla_attn|multi_stream_gemm|record_event_passthrough $TRTLLM_REPO/tensorrt_llm/_torch rg -n fuse_allreduce_rms|fuse_norm_quant|fuse_act_quant|fuse_attn_quant|enable_qk_norm_rope_fusion|fuse_rope_kvcache $VLLM_REPO/vllm # 提交历史与 PR 扫描 git log --all --format%h %s | rg -i fused|fusion|overlap|cutedsl|triton|cuda|rope|topk|quant|combine|allreduce配合目录开头的刷新记录记录各框架的 main 提交哈希与新增条目例如 2026-06-26 刷新新增了 TokenSpeed-origin 的 CuTe DSL MLA、MLA KV packFP8 quantize、sampling、lm_head GEMM、NVFP4 GEMMSwiGLUquant 行以及 LTX2 Ada-value diffusion 融合可以推断出该目录的维护节奏每次上游 main 前进后重扫、把已稳定的 in-flight 行折叠进 mainline 行、并更新刷新记录。对使用者而言这意味着引用 in-flight 行前必须先重查 PR 状态不能把在途工作当作已合入事实。6. 小结把它当作先例库而非待办清单这份目录的设计意图可以概括为一句话在宣称任何融合或重叠机会之前先证明它不在本目录的任何 mainline 或 PR-backed 行里。它的价值来自三点可验证的匹配依据——每行给出 trace 关键词与源码位置可以直接用rg在当前树中复核本文核对过forward_with_allreduce_fusion位于 layernorm.pySGLANG_DSA_FUSE_TOPK旧名SGLANG_NSA_FUSE_TOPK定义于 environ.py 等开关感知的 trace 解读——§18 保证看不到融合 kernel这一观察在被下结论前先排除配置、确定性模式与后端选择因素跨框架的 prior 覆盖——通过 FlashInfer / TensorRT-LLM / vLLM / TokenSpeed 对比行避免在本地重新发明上游已有的 kernel 家族。配合 SKILL.md 的单/双 trace 工作流与 overlap-catalog.mdoverlap 专属表、vllm-torch-compile-fusions.mdvLLM compile pass 清单这份目录构成了对 SGLang 及其周边生态做 kernel 级性能 triage 时的完整先例库。【免费下载链接】sglangSGLang is a high-performance serving framework for large language models and multimodal models.项目地址: https://gitcode.com/GitHub_Trending/sg/sglang创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考