Prhub

#27837 [AMD] Register 3 JIT kernel unit tests for AMD CI

原始 PR 作者 michaelzhang-ai 合并时间 2026-06-18 14:28 文件变更 5 提交数 4 评论 1 代码增减 +12 / -9

执行摘要

为 AMD CI 注册 3 个 JIT 单元测试

扩大 AMD CI 对 JIT kernel 的测试覆盖,确保这些 kernel 在 MI325 (gfx942) 上正确运行。PR body 详细说明了验证结果和排除其他候选测试的原因。

值得快速合入。该 PR 本身是增量改进,但背后的测试分层和跨平台注册模式值得关注:通过 register_amd_ciregister_cuda_ci 统一管理 CI 注册,降低维护成本。

讨论亮点

PR 无 review 评论,只有 HaiShaw 的 approve。但 PR body 详细记录了排除其他测试的原因:test_moe_align_block_size 因 ROCm 不兼容,其余测试因 CUDA-only 头文件或 fp8 问题被排除。

实现拆解

  1. 注册 AMD CI:在 3 个测试文件(test_clamp_position.py、test_resolve_future_token_ids.py、test_rmsnorm_hf.py)的导入中添加 register_amd_ci,并调用 register_amd_ci(est_time=..., suite="jit-kernel-unit-test-amd"),保留原有 CUDA 注册。
  2. 调整超时:在 pr-test-amd.ymlpr-test-amd-rocm720.yml 中将 JIT kernel 测试步骤的 timeout-minutes 从 10 分钟提升至 30 分钟,同时统一调整其他 sgl-kernel 测试步骤的超时。
  3. 排除 moe_align:初始版本注册了 4 个测试,但在与 main 分支同步后,test_moe_align_block_size 因 ROCm 上的 4392 个参数化用例全部失败且超时被移除,等待后续 kernel 移植。
文件 模块 状态 重要度
test/registered/jit/test_clamp_position.py JIT Kernel modified 3.92
test/registered/jit/test_resolve_future_token_ids.py JIT Kernel modified 3.92
test/registered/jit/test_rmsnorm_hf.py JIT Kernel modified 3.92
.github/workflows/pr-test-amd.yml CI 配置 modified 3.25
.github/workflows/pr-test-amd-rocm720.yml CI 配置 modified 3.25

关键源码片段

test/registered/jit/test_clamp_position.py test-coverage

核心变更之一:导入 `register_amd_ci` 并注册 AMD CI,增量为 +2 行。

import sysimport pytest
import torchfrom sglang.jit_kernel.clamp_position import clamp_position_cuda
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci# 注册 NVIDIA CI 套件(保持不变)
register_cuda_ci(est_time=12, suite="base-b-kernel-unit-1-gpu-large")
register_cuda_ci(est_time=120, suite="nightly-kernel-1-gpu", nightly=True)
# 新增:注册 AMD CI 套件,使其在 AMD 平台上自动运行
register_amd_ci(est_time=12, suite="jit-kernel-unit-test-amd")
​
​
def _reference_clamp_position(seq_lens):
    return torch.clamp(seq_lens - 1, min=0).to(seq_lens.dtype)
test/registered/jit/test_resolve_future_token_ids.py test-coverage

核心变更之一:注册 AMD CI,增量为 +2 行。

import sysimport pytest
import torchfrom sglang.jit_kernel.resolve_future_token_ids import resolve_future_token_ids_cuda
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci# 注册 NVIDIA CI 套件(保持不变)
register_cuda_ci(est_time=9, suite="base-b-kernel-unit-1-gpu-large")
register_cuda_ci(est_time=120, suite="nightly-kernel-1-gpu", nightly=True)
# 新增:注册 AMD CI 套件
register_amd_ci(est_time=9, suite="jit-kernel-unit-test-amd")
test/registered/jit/test_rmsnorm_hf.py test-coverage

核心变更之一:注册 AMD CI,增量为 +2 行。

from sglang.jit_kernel.rmsnorm_hf import (
    is_supported_rmsnorm_hf_hidden_size,
    rmsnorm_hf,
)
from sglang.jit_kernel.utils import get_ci_test_range
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci# 注册 NVIDIA CI 套件(保持不变)
register_cuda_ci(est_time=30, suite="base-b-kernel-unit-1-gpu-large")
register_cuda_ci(est_time=120, suite="nightly-kernel-1-gpu", nightly=True)
# 新增:注册 AMD CI 套件
register_amd_ci(est_time=30, suite="jit-kernel-unit-test-amd")

评论区精华

test_moe_align_block_size 排除 other

PR body 解释了为何初始注册的 test_moe_align_block_size 最终被移除:与 main 分支同步后,该测试收集了 4392 个参数化用例,在 MI325 上全部失败且耗尽时间预算。

结论:PR author 决定不注册该测试,等待 kernel 端 ROCm 移植完成后再行注册。 · 已解决

超时时间对齐 设计

PR body 指出 AMD JIT 测试步骤原超时为 10 分钟,但构建和依赖安装耗时长,导致测试执行时间不足。author 将超时提升至 30 分钟以与 NVIDIA 对齐。

结论:已通过 CI 配置调整解决。 · 已解决

风险与影响

风险低。仅涉及测试注册和 CI 配置调整,不修改核心逻辑。但需注意:

1) test_moe_align_block_size 的排除意味着 AMD CI 中 MoE 相关测试缺失;
2) 超时调整到 30 分钟可能掩盖个别测试的执行时间异常。

影响范围限于 AMD CI 流程:新增 3 个测试集(总测试用例数:clamp_position 64、resolve_future_token_ids 64、rmsnorm_hf 43),确保这些 kernel 在 MI325 上持续验证。CI 超时放宽后,构建和测试更稳定,减少因超时导致的假阳性失败。

缺少 MoE 测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论