Prhub

#30835 [Tiny] Enable Full Cuda Graph with Page size = 1

原始 PR 作者 Oasis-Git 合并时间 2026-07-14 01:07 文件变更 1 提交数 2 评论 1 代码增减 +3 / -0

执行摘要

修复 FA4 与 full prefill CUDA graph 的 page_size 冲突

FlashAttention4 后端在非 MLA 模型上默认将 page_size 强制设为 128,但 full prefill CUDA graph 路径(#27988)仅支持 page_size=1。当两者同时启用时会导致冲突,本 PR 通过增加跳过条件来兼容。

可合并,变更简单且正确。建议后续增加测试覆盖该组合场景。

讨论亮点

无 review 评论,仅有一名 reviewer (ispobock) 直接批准。

实现拆解

python/sglang/srt/arg_groups/overrides.py_fa4_page_constraint 函数中,现有逻辑对 FA4 后端且非 MLA 且 SM100 支持等条件时,会将 page_size 强制设为 128。现增加一条条件:view.cuda_graph_config.prefill.backend != Backend.FULL,即当 prefill CUDA graph 后端为 FULL 时,跳过 page_size 调整,使得 FA4 可以与 full prefill CG 共存。

文件 模块 状态 重要度
python/sglang/srt/arg_groups/overrides.py 配置重写 modified 4.7

关键符号

_fa4_page_constraint

关键源码片段

python/sglang/srt/arg_groups/overrides.py core-logic

核心修改文件,在 _fa4_page_constraint 中新增条件跳过 page_size 强制调整。

# python/sglang/srt/arg_groups/overrides.py
@register_post_process
def _fa4_page_constraint(view: Any) -> dict:
    if (
        (
            view.attention_backend == "fa4"
            or view.decode_attention_backend == "fa4"
            or view.prefill_attention_backend == "fa4"
        )
        and not view.use_mla_backend()
        and is_sm100_supported()
        # EAGLE topk>1 spec runs the two-pass page-tree cascade, which the FA4
        # CUTLASS kernel aborts on at page_size>1. That path only works at
        # page_size==1, so skip the 128 auto-force for it and keep the default.
        and (view.speculative_eagle_topk or 0) <= 1
        # NEW: The full prefill CUDA graph runs the FA backend at page_size==1 only
        # (#27988), so skip the 128 auto-force for it and keep the default.
        and view.cuda_graph_config.prefill.backend != Backend.FULL
    ):
        logger.warning(
            f"FA4 backend only supports page size 128 for non-MLA model architectures, "
            f"changing page_size from {view.page_size} to 128."
        )
        return {"page_size": 128}
    return {}

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低:新增条件仅在 _fa4_page_constraint 中增加一个短路判断,不影响其他路径。但缺少测试覆盖,建议添加单元测试验证 FA4 + full prefill CG + page_size=1 的组合。

仅影响同时启用 FA4 后端和 full prefill CUDA graph 的用户,这些用户将不再因 page_size 冲突而需要手动调整。对其他用户无影响。

缺少测试覆盖

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论