Prhub

#35612 [diffusion] fix: keep Cosmos3 T=1 fusion on Blackwell

原始 PR 作者 mickqian 合并时间 2026-08-20 12:13 文件变更 1 提交数 1 评论 1 代码增减 +13 / -4

执行摘要

修复 Hopper 上 Cosmos3 T=1 融合回归。

Diffusion nightly 数据显示 cosmos3_super_t2v_2gpu 在 2xH100 上的耗时从 8 月 15 日的 115.326s 增加到 #34932 之后的 119.405s(+3.5%),并且一直维持在 119.338-119.372s。原因是 #34932 的 T=1 融合路径只在 1xB300 T2I 上做过基准测试,而 Hopper 上的性能反而下降。

值得精读,因为涉及架构相关性能路径的准入控制,展示了如何在多平台环境下进行特性开关的修复。关注点:平台判断的封装方式、未来是否会对更多架构进行类似控制。

讨论亮点

review 中无讨论。PR 描述中提到 NVIDIA CI 请求验证,但未形成具体讨论。

实现拆解

实现分为以下步骤:

  1. 新增平台判断:在 cosmos3video.py 中导入 current_platform,增加 enable_t1_fused_qk_norm_rope 变量,其值为 T == 1 and current_platform.is_blackwell() and not self._gen_layers_torch_compiled,用于控制 T=1 融合路径的启用。
  2. 替换原有判断:将原代码中所有 T == 1 相关的条件判断替换为 enable_t1_fused_qk_norm_rope,包括:进入融合分支的条件、round_norm_before_rope 的赋值以及 use_fused_qk_norm_rope 的计算。这样在 Hopper 上,T=1 时恢复使用原始的分离 QKNorm/RoPE 路径。
  3. 保持 T>1 路径不变:对于 T>1 的情况,use_fused_qk_norm_rope 仍然为真,融合路径继续使用,不影响原有逻辑。
    测试与配置:未添加单元测试,作者说明这是架构特定的准入修复,不要求新增测试,但请求 NVIDIA CI 进行验证。
文件 模块 状态 重要度
python/sglang/multimodal_gen/runtime/models/dits/cosmos3video.py Diffusion modified 6.75

关键符号

forward

关键源码片段

python/sglang/multimodal_gen/runtime/models/dits/cosmos3video.py core-logic

核心改动文件,通过平台判断控制 T=1 融合路径的启用,修复 Hopper 性能回归。

# python/sglang/multimodal_gen/runtime/models/dits/cosmos3video.py
# 在 forward() 方法内,进入 UND K/V cache 之前新增平台判断:
# T=1 融合路径在 Blackwell 上更快,但在 Hopper 上会使 Cosmos3-Super 双卡任务回退,
# 因此仅对 Blackwell 启用融合,Hopper 保持原有的分离 QKNorm/RoPE 路径。
enable_t1_fused_qk_norm_rope = (
    T == 1
    and current_platform.is_blackwell()
    and not self._gen_layers_torch_compiled
)# 后续使用该变量替代原先的 T == 1 判断,
# 确保 Hopper 上走分离路径、Blackwell 上仍走融合路径。
if enable_t1_fused_qk_norm_rope:
    # 融合 QKNorm+RoPE 分支
    passround_norm_before_rope = enable_t1_fused_qk_norm_rope# T>1 时始终使用融合路径,不受平台限制
use_fused_qk_norm_rope = T > 1 or (
    enable_t1_fused_qk_norm_rope
    and hidden_gen.device.type == "cuda"
    and not torch.compiler.is_compiling()
    and get_sp_world_size() == 1
    and can_use_fused_inplace_qknorm_rope(...)
)

评论区精华

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

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

风险与影响

风险较低。改动集中在平台判断逻辑,未改变边界:Blackwell 上 T=1 融合路径保持原样,Hopper 上恢复为 #34932 之前的行为,T>1 路径不变。但缺少单元测试,且未在本地运行精度测试,依赖 nightly 数据验证,可能仍有微小精度差异。

影响范围受限:仅影响 Cosmos3-Super 模型在 Hopper(H100 等)平台、T=1 时的执行路径,恢复为分离 QKNorm/RoPE,性能回归被修复。对其他模型、平台或 T>1 场景无影响。团队方面,此修复避免了 Hopper 上的性能损失,提升了 Diffusion nightly 数据的稳定性。

缺少测试覆盖 依赖 nightly 数据验证

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论