Prhub

#27781 [CI] Move misplaced mhc kernel test into test/registered/kernels

原始 PR 作者 DarkSharpness 合并时间 2026-06-10 16:49 文件变更 1 提交数 2 评论 4 代码增减 +9 / -0

执行摘要

搬迁 mHC 内核测试到标准注册目录

mHC kernel 测试文件是仓库中唯一位于顶层 tests/ 目录下的文件,该目录不在 CI 扫描路径内,导致测试从未被实际执行。PR 旨在将其归入 test/registered/kernels/ 并补全注册逻辑。

可直接合入。变更清晰、动机明确,且已通过 1-gpu-h100 的实际运行验证。建议未来注意避免向顶层 tests/ 添加文件。

讨论亮点

无人工 review 评论。仅 bot 自动回复,提示 Gemini Code Assist 即将停用。作者通过 /rerun-test 命令验证了在不同 GPU 节点上的执行结果:在 1-gpu-5090(SM120)上失败(DeepGEMM 不可用),在 1-gpu-h100(SM90)上成功,因此最终调整为 1-gpu-large

实现拆解

  1. 文件搬迁:将 tests/kernels/test_mhc_kernels.py 移动至 test/registered/kernels/test_mhc_kernels.py
  2. 添加 CI 注册:在文件头部导入 register_cuda_ci 并调用 register_cuda_ci(est_time=30, stage="base-b", runner_config="1-gpu-large"),使 run_suite.py 能够发现该测试。runner_config 从首次提交的 1-gpu-small 修正为 1-gpu-large,因为 mHC kernel 内部的 TF32 prenorm GEMM 依赖 DeepGEMM,而 DeepGEMM 在 SM120(RTX 5090)上不可用,需使用 H100(1-gpu-large)。
  3. 添加主入口:在文件末尾添加标准 if __name__ == "__main__" 块,支持直接 python test_mhc_kernels.py 执行。
  4. 清理:删除已为空的顶层 tests/ 目录。
文件 模块 状态 重要度
test/registered/kernels/test_mhc_kernels.py 测试覆盖 renamed 4.65

关键源码片段

test/registered/kernels/test_mhc_kernels.py rename-or-move

核心变更文件:将之前被忽略的测试迁移至标准目录,并添加了 CI 注册和主入口。

import pytest
import torchimport sglang.srt.layers.mhc as mhc
from sglang.srt.layers.mhc import mhc_fused_post_pre, mhc_post, mhc_pre
# 导入 CI 注册函数,使测试能被 run_suite.py 发现
from sglang.test.ci.ci_register import register_cuda_ci
# 注册为 CUDA CI 测试:预估 30 秒,base-b 阶段,需要 1-gpu-large 节点(H100,支持 DeepGEMM)
register_cuda_ci(est_time=30, stage="base-b", runner_config="1-gpu-large")
​
​
@pytest.mark.parametrize("hidden_size", [4096, 7168])
@pytest.mark.parametrize("num_tokens", [0, 1, 8, 17, 32, 64])
@pytest.mark.parametrize("use_norm", [False, True])
def test_mhc_fused_post_pre_matches_unfused(
    monkeypatch, hidden_size, num_tokens, use_norm
):
    # ... 测试体不变,验证 fused kernel 与 unfused 组合的数值一致性 ...
    pass# 标准主入口,支持直接运行 python test_mhc_kernels.py
if __name__ == "__main__":
    import sys
    sys.exit(pytest.main([__file__]))

评论区精华

测试运行配置确认 other

作者通过 `/rerun-test` 命令在 1-gpu-5090 和 1-gpu-h100 上尝试执行该测试,发现 5090 失败而 H100 成功。

结论:调整 runner_config 为 1-gpu-large,最终在 H100 上通过。 · 已解决

风险与影响

此 PR 仅涉及测试文件迁移和 CI 注册,不修改任何源码逻辑,风险极低。唯一需关注的是 runner_config 选择是否正确:若未来 mHC kernel 不再依赖 DeepGEMM 或新 GPU 支持,可能需要调整。

直接修复了 mHC kernel 测试被遗漏的问题,使其在 PR CI 中自动运行。对用户无感知,对开发流程的影响是增加了约 30 秒的 CI 耗时。

仅影响测试覆盖 无源码变更

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论