执行摘要
- 一句话:修复 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 上的性能反而下降。
实现拆解
实现分为以下步骤:
- 新增平台判断:在
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 融合路径的启用。
- 替换原有判断:将原代码中所有
T == 1 相关的条件判断替换为 enable_t1_fused_qk_norm_rope,包括:进入融合分支的条件、round_norm_before_rope 的赋值以及 use_fused_qk_norm_rope 的计算。这样在 Hopper 上,T=1 时恢复使用原始的分离 QKNorm/RoPE 路径。
- 保持 T>1 路径不变:对于 T>1 的情况,
use_fused_qk_norm_rope 仍然为真,融合路径继续使用,不影响原有逻辑。
测试与配置:未添加单元测试,作者说明这是架构特定的准入修复,不要求新增测试,但请求 NVIDIA CI 进行验证。
关键文件:
python/sglang/multimodal_gen/runtime/models/dits/cosmos3video.py(模块 Diffusion;类别 source;类型 core-logic;符号 cosmos3video, forward): 核心改动文件,通过平台判断控制 T=1 融合路径的启用,修复 Hopper 性能回归。
关键符号:forward
关键源码片段
python/sglang/multimodal_gen/runtime/models/dits/cosmos3video.py
核心改动文件,通过平台判断控制 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 分支
pass
round_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(...)
)
评论区精华
review 中无讨论。PR 描述中提到 NVIDIA CI 请求验证,但未形成具体讨论。
风险与影响
- 风险:风险较低。改动集中在平台判断逻辑,未改变边界:Blackwell 上 T=1 融合路径保持原样,Hopper 上恢复为 #34932 之前的行为,T>1 路径不变。但缺少单元测试,且未在本地运行精度测试,依赖 nightly 数据验证,可能仍有微小精度差异。
- 影响:影响范围受限:仅影响 Cosmos3-Super 模型在 Hopper(H100 等)平台、T=1 时的执行路径,恢复为分离 QKNorm/RoPE,性能回归被修复。对其他模型、平台或 T>1 场景无影响。团队方面,此修复避免了 Hopper 上的性能损失,提升了 Diffusion nightly 数据的稳定性。
- 风险标记:缺少测试覆盖, 依赖 nightly 数据验证
关联脉络
- PR #34932 Introduce fused QKNorm+RoPE path for T=1 diffusion workloads: 本 PR 修复由 #34932 引入的 Hopper 性能回归,通过平台判断限制融合路径。
参与讨论