ci: decouple stage and runner for cuda registry (#25197)

This commit is contained in:
Liangsheng Yin
2026-05-13 17:28:21 -07:00
committed by GitHub
parent dd98153d17
commit 22d3f3996c
261 changed files with 388 additions and 293 deletions
+81 -24
View File
@@ -16,7 +16,12 @@ __all__ = [
"ut_parse_one_file", "ut_parse_one_file",
] ]
# `suite` stays in positional slot 2 for backward compat with existing
# `register_cpu_ci(5, "stage-a-test-cpu")` style positional calls. New fields
# (`stage`, `runner_config`) are kwarg-only.
_PARAM_ORDER = ("est_time", "suite", "nightly", "disabled") _PARAM_ORDER = ("est_time", "suite", "nightly", "disabled")
_KWARG_ONLY = ("stage", "runner_config")
_ALL_PARAMS = _PARAM_ORDER + _KWARG_ONLY
_UNSET = object() _UNSET = object()
@@ -31,25 +36,43 @@ class HWBackend(Enum):
class CIRegistry: class CIRegistry:
backend: HWBackend backend: HWBackend
filename: str filename: str
# Estimated time to run the test in seconds.
est_time: float est_time: float
# The suite this test is registered in. stage: Optional[str] = None
suite: str runner_config: Optional[str] = None
# Whether the test is a nightly test. # Legacy single-string suite; kept for nightly/stress/weekly + AMD/CPU/NPU
# suites whose names don't follow `{stage}-test-{runner_config}` shape.
suite: Optional[str] = None
nightly: bool = False nightly: bool = False
# Reason for disabling the test. None = enabled, string = disabled with reason.
disabled: Optional[str] = None disabled: Optional[str] = None
@property
def effective_suite(self) -> Optional[str]:
if self.stage is not None and self.runner_config is not None:
return f"{self.stage}-test-{self.runner_config}"
return self.suite
def register_cpu_ci( def register_cpu_ci(
est_time: float, suite: str, nightly: bool = False, disabled: Optional[str] = None est_time: float,
suite: Optional[str] = None,
nightly: bool = False,
disabled: Optional[str] = None,
*,
stage: Optional[str] = None,
runner_config: Optional[str] = None,
): ):
"""Marker for CPU CI registration (parsed via AST; runtime no-op).""" """Marker for CPU CI registration (parsed via AST; runtime no-op)."""
return None return None
def register_cuda_ci( def register_cuda_ci(
est_time: float, suite: str, nightly: bool = False, disabled: Optional[str] = None est_time: float,
suite: Optional[str] = None,
nightly: bool = False,
disabled: Optional[str] = None,
*,
stage: Optional[str] = None,
runner_config: Optional[str] = None,
): ):
"""Marker for CUDA CI registration (parsed via AST; runtime no-op).""" """Marker for CUDA CI registration (parsed via AST; runtime no-op)."""
return None return None
@@ -57,9 +80,12 @@ def register_cuda_ci(
def register_amd_ci( def register_amd_ci(
est_time: float, est_time: float,
suite: str, suite: Optional[str] = None,
nightly: bool = False, nightly: bool = False,
disabled: Optional[str] = None, disabled: Optional[str] = None,
*,
stage: Optional[str] = None,
runner_config: Optional[str] = None,
): ):
"""Marker for AMD CI registration (parsed via AST; runtime no-op).""" """Marker for AMD CI registration (parsed via AST; runtime no-op)."""
return None return None
@@ -67,9 +93,12 @@ def register_amd_ci(
def register_npu_ci( def register_npu_ci(
est_time: float, est_time: float,
suite: str, suite: Optional[str] = None,
nightly: bool = False, nightly: bool = False,
disabled: Optional[str] = None, disabled: Optional[str] = None,
*,
stage: Optional[str] = None,
runner_config: Optional[str] = None,
): ):
"""Marker for NPU CI registration (parsed via AST; runtime no-op).""" """Marker for NPU CI registration (parsed via AST; runtime no-op)."""
return None return None
@@ -94,10 +123,8 @@ class RegistryVisitor(ast.NodeVisitor):
return node.value return node.value
return _UNSET return _UNSET
def _parse_call_args( def _parse_call_args(self, func_call: ast.Call) -> dict:
self, func_call: ast.Call args = {name: _UNSET for name in _ALL_PARAMS}
) -> tuple[float, str, bool, Optional[str]]:
args = {name: _UNSET for name in _PARAM_ORDER}
seen = set() seen = set()
if any(isinstance(arg, ast.Starred) for arg in func_call.args): if any(isinstance(arg, ast.Starred) for arg in func_call.args):
@@ -129,23 +156,49 @@ class RegistryVisitor(ast.NodeVisitor):
seen.add(kw.arg) seen.add(kw.arg)
args[kw.arg] = self._constant_value(kw.value) args[kw.arg] = self._constant_value(kw.value)
if args["est_time"] is _UNSET or args["suite"] is _UNSET: if args["est_time"] is _UNSET:
raise ValueError( raise ValueError(
f"{self.filename}: est_time and suite are required constants in {func_call.func.id}()" f"{self.filename}: est_time is a required constant in {func_call.func.id}()"
) )
est_time, suite = args["est_time"], args["suite"] # The only valid (stage, runner_config, suite) shapes are:
nightly_value = args["nightly"] # (set, set, unset) -> new-style pair
# (unset, unset, set) -> legacy single-string
# Any other combination is rejected with the actual triple in the error.
stage_set = args["stage"] is not _UNSET
runner_set = args["runner_config"] is not _UNSET
suite_set = args["suite"] is not _UNSET
valid_shape = (stage_set and runner_set and not suite_set) or (
not stage_set and not runner_set and suite_set
)
if not valid_shape:
raise ValueError(
f"{self.filename}: {func_call.func.id}() must specify exactly one of "
f"(stage, runner_config) pair or suite; got stage={stage_set}, "
f"runner_config={runner_set}, suite={suite_set}"
)
est_time = args["est_time"]
if not isinstance(est_time, (int, float)): if not isinstance(est_time, (int, float)):
raise ValueError( raise ValueError(
f"{self.filename}: est_time must be a number in {func_call.func.id}()" f"{self.filename}: est_time must be a number in {func_call.func.id}()"
) )
if not isinstance(suite, str):
suite = args["suite"] if suite_set else None
if suite is not None and not isinstance(suite, str):
raise ValueError( raise ValueError(
f"{self.filename}: suite must be a string in {func_call.func.id}()" f"{self.filename}: suite must be a string in {func_call.func.id}()"
) )
stage = args["stage"] if stage_set else None
runner_config = args["runner_config"] if runner_set else None
for name, value in (("stage", stage), ("runner_config", runner_config)):
if value is not None and not isinstance(value, str):
raise ValueError(
f"{self.filename}: {name} must be a string in {func_call.func.id}()"
)
nightly_value = args["nightly"]
if nightly_value is _UNSET: if nightly_value is _UNSET:
nightly = False nightly = False
elif isinstance(nightly_value, bool): elif isinstance(nightly_value, bool):
@@ -161,7 +214,14 @@ class RegistryVisitor(ast.NodeVisitor):
f"{self.filename}: disabled must be a string in {func_call.func.id}()" f"{self.filename}: disabled must be a string in {func_call.func.id}()"
) )
return float(est_time), suite, nightly, disabled return {
"est_time": float(est_time),
"stage": stage,
"runner_config": runner_config,
"suite": suite,
"nightly": nightly,
"disabled": disabled,
}
def _collect_ci_registry(self, func_call: ast.Call): def _collect_ci_registry(self, func_call: ast.Call):
if not isinstance(func_call.func, ast.Name): if not isinstance(func_call.func, ast.Name):
@@ -171,14 +231,11 @@ class RegistryVisitor(ast.NodeVisitor):
if backend is None: if backend is None:
return None return None
est_time, suite, nightly, disabled = self._parse_call_args(func_call) parsed = self._parse_call_args(func_call)
return CIRegistry( return CIRegistry(
backend=backend, backend=backend,
filename=self.filename, filename=self.filename,
est_time=est_time, **parsed,
suite=suite,
nightly=nightly,
disabled=disabled,
) )
@staticmethod @staticmethod
+8 -6
View File
@@ -155,7 +155,9 @@ def generate_summary_section(data: dict) -> str:
for t in sorted(disabled_tests, key=lambda x: (x.backend.name, x.filename)): for t in sorted(disabled_tests, key=lambda x: (x.backend.name, x.filename)):
test_name = get_test_basename(t.filename) test_name = get_test_basename(t.filename)
reason = t.disabled[:50] + "..." if len(t.disabled) > 50 else t.disabled reason = t.disabled[:50] + "..." if len(t.disabled) > 50 else t.disabled
lines.append(f"| `{test_name}` | {t.backend.name} | {t.suite} | {reason} |") lines.append(
f"| `{test_name}` | {t.backend.name} | {t.effective_suite} | {reason} |"
)
lines.append("\n</details>\n") lines.append("\n</details>\n")
return "\n".join(lines) return "\n".join(lines)
@@ -197,7 +199,7 @@ def generate_by_folder_section(data: dict) -> str:
else ("Nightly" if t.nightly else "Per-Commit") else ("Nightly" if t.nightly else "Per-Commit")
) )
lines.append( lines.append(
f"| `{test_name}` | {t.suite} | {t.est_time:.0f}s | {status} |" f"| `{test_name}` | {t.effective_suite} | {t.est_time:.0f}s | {status} |"
) )
lines.append("") lines.append("")
@@ -231,7 +233,7 @@ def generate_by_suite_section(data: dict) -> str:
# Group by suite within backend # Group by suite within backend
backend_suites = defaultdict(list) backend_suites = defaultdict(list)
for t in backend_tests: for t in backend_tests:
backend_suites[t.suite].append(t) backend_suites[t.effective_suite].append(t)
for suite in sorted(backend_suites.keys()): for suite in sorted(backend_suites.keys()):
suite_tests = backend_suites[suite] suite_tests = backend_suites[suite]
@@ -336,7 +338,7 @@ def generate_json_report(tests: list[CIRegistry]) -> str:
data["tests_by_folder"][folder]["backends"][backend] = [ data["tests_by_folder"][folder]["backends"][backend] = [
{ {
"filename": get_test_basename(t.filename), "filename": get_test_basename(t.filename),
"suite": t.suite, "suite": t.effective_suite,
"est_time": t.est_time, "est_time": t.est_time,
"status": ( "status": (
"disabled" "disabled"
@@ -355,7 +357,7 @@ def generate_json_report(tests: list[CIRegistry]) -> str:
backend_suites = defaultdict(list) backend_suites = defaultdict(list)
for t in backend_tests: for t in backend_tests:
backend_suites[t.suite].append(t) backend_suites[t.effective_suite].append(t)
data["tests_by_suite"][backend] = { data["tests_by_suite"][backend] = {
"total": len(backend_tests), "total": len(backend_tests),
@@ -423,7 +425,7 @@ def generate_json_report(tests: list[CIRegistry]) -> str:
{ {
"filename": get_test_basename(t.filename), "filename": get_test_basename(t.filename),
"backend": t.backend.name, "backend": t.backend.name,
"suite": t.suite, "suite": t.effective_suite,
"reason": t.disabled, "reason": t.disabled,
} }
) )
+1 -1
View File
@@ -88,7 +88,7 @@ def compute_partitions(tests, full_parallel=False):
continue continue
if t.nightly or t.disabled is not None: if t.nightly or t.disabled is not None:
continue continue
suite_tests[t.suite].append(t) suite_tests[t.effective_suite].append(t)
result = {} result = {}
for suite, group in suite_tests.items(): for suite, group in suite_tests.items():
@@ -14,7 +14,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=1800, suite="stage-c-test-4-gpu-gb200") register_cuda_ci(est_time=1800, stage="stage-c", runner_config="4-gpu-gb200")
class TestDeepseekR1Nvfp4CuteDSLDeepEP(CustomTestCase): class TestDeepseekR1Nvfp4CuteDSLDeepEP(CustomTestCase):
@@ -3,8 +3,8 @@ import unittest
from sglang.test.ci.ci_register import register_cuda_ci from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.gpt_oss_common import BaseTestGptOss from sglang.test.gpt_oss_common import BaseTestGptOss
register_cuda_ci(est_time=392, suite="stage-c-test-4-gpu-h100") register_cuda_ci(est_time=392, stage="stage-c", runner_config="4-gpu-h100")
register_cuda_ci(est_time=740, suite="stage-c-test-4-gpu-b200") register_cuda_ci(est_time=740, stage="stage-c", runner_config="4-gpu-b200")
class TestGptOss4Gpu(BaseTestGptOss): class TestGptOss4Gpu(BaseTestGptOss):
@@ -11,7 +11,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=710, suite="stage-c-test-4-gpu-b200") register_cuda_ci(est_time=710, stage="stage-c", runner_config="4-gpu-b200")
NEMOTRON_3_SUPER_NVFP4_MODEL = "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4" NEMOTRON_3_SUPER_NVFP4_MODEL = "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4"
@@ -15,7 +15,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=540, suite="stage-c-test-4-gpu-b200") register_cuda_ci(est_time=540, stage="stage-c", runner_config="4-gpu-b200")
QWEN35_FP4_MODEL = "nvidia/Qwen3.5-397B-A17B-NVFP4" QWEN35_FP4_MODEL = "nvidia/Qwen3.5-397B-A17B-NVFP4"
ACC_THRESHOLDS = {QWEN35_FP4_MODEL: {"gsm8k": 0.95}} ACC_THRESHOLDS = {QWEN35_FP4_MODEL: {"gsm8k": 0.95}}
@@ -22,7 +22,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=540, suite="stage-c-test-4-gpu-h100") register_cuda_ci(est_time=540, stage="stage-c", runner_config="4-gpu-h100")
QWEN35_27B_MODEL = "Qwen/Qwen3.5-27B" QWEN35_27B_MODEL = "Qwen/Qwen3.5-27B"
ACC_THRESHOLDS = {QWEN35_27B_MODEL: {"gsm8k": 0.8}} ACC_THRESHOLDS = {QWEN35_27B_MODEL: {"gsm8k": 0.8}}
@@ -17,7 +17,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=260, suite="stage-c-test-4-gpu-b200") register_cuda_ci(est_time=260, stage="stage-c", runner_config="4-gpu-b200")
QWEN35_FP4_MODEL = "nvidia/Qwen3.5-397B-A17B-NVFP4" QWEN35_FP4_MODEL = "nvidia/Qwen3.5-397B-A17B-NVFP4"
ACC_THRESHOLDS = {QWEN35_FP4_MODEL: {"gsm8k": 0.95}} ACC_THRESHOLDS = {QWEN35_FP4_MODEL: {"gsm8k": 0.95}}
@@ -11,7 +11,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=261, suite="stage-c-test-4-gpu-h100") register_cuda_ci(est_time=261, stage="stage-c", runner_config="4-gpu-h100")
QWEN3_30B_MODEL_PATH = "Qwen/Qwen3-30B-A3B-FP8" QWEN3_30B_MODEL_PATH = "Qwen/Qwen3-30B-A3B-FP8"
@@ -6,7 +6,7 @@ from sglang.test.kits.kl_divergence_kit import KLDivergenceMixin
from sglang.test.kits.prefix_cache_branching_kit import PrefixCacheBranchingMixin from sglang.test.kits.prefix_cache_branching_kit import PrefixCacheBranchingMixin
from sglang.test.server_fixtures.default_fixture import DefaultServerBase from sglang.test.server_fixtures.default_fixture import DefaultServerBase
register_cuda_ci(est_time=290, suite="stage-c-test-4-gpu-h100") register_cuda_ci(est_time=290, stage="stage-c", runner_config="4-gpu-h100")
QWEN3_NEXT_MODEL = "Qwen/Qwen3-Next-80B-A3B-Instruct" QWEN3_NEXT_MODEL = "Qwen/Qwen3-Next-80B-A3B-Instruct"
@@ -13,7 +13,7 @@ from sglang.test.test_utils import (
write_github_step_summary, write_github_step_summary,
) )
register_cuda_ci(est_time=492, suite="stage-c-test-8-gpu-h200") register_cuda_ci(est_time=492, stage="stage-c", runner_config="8-gpu-h200")
DEEPSEEK_V32_MODEL_PATH = "deepseek-ai/DeepSeek-V3.2" DEEPSEEK_V32_MODEL_PATH = "deepseek-ai/DeepSeek-V3.2"
@@ -17,7 +17,7 @@ from sglang.test.test_utils import (
write_github_step_summary, write_github_step_summary,
) )
register_cuda_ci(est_time=309, suite="stage-c-test-8-gpu-h200") register_cuda_ci(est_time=309, stage="stage-c", runner_config="8-gpu-h200")
FULL_DEEPSEEK_V3_MODEL_PATH = "deepseek-ai/DeepSeek-V3-0324" FULL_DEEPSEEK_V3_MODEL_PATH = "deepseek-ai/DeepSeek-V3-0324"
@@ -12,7 +12,9 @@ from sglang.test.test_utils import (
write_github_step_summary, write_github_step_summary,
) )
register_cuda_ci(est_time=720, suite="stage-c-test-8-gpu-h200", nightly=True) register_cuda_ci(
est_time=720, stage="stage-c", runner_config="8-gpu-h200", nightly=True
)
GLM5_MODEL_PATH = "zai-org/GLM-5-FP8" GLM5_MODEL_PATH = "zai-org/GLM-5-FP8"
@@ -18,7 +18,8 @@ from sglang.test.test_utils import (
register_cuda_ci( register_cuda_ci(
est_time=1048, est_time=1048,
suite="stage-c-test-8-gpu-h200", stage="stage-c",
runner_config="8-gpu-h200",
) )
FULL_DEEPSEEK_V32_MODEL_PATH = "deepseek-ai/DeepSeek-V3.2" FULL_DEEPSEEK_V32_MODEL_PATH = "deepseek-ai/DeepSeek-V3.2"
@@ -6,7 +6,7 @@ from sglang.test.kits.spec_decoding_kit import SpecDecodingMixin
from sglang.test.server_fixtures.default_fixture import DefaultServerBase from sglang.test.server_fixtures.default_fixture import DefaultServerBase
from sglang.test.server_fixtures.mmmu_fixture import MMMUServerBase from sglang.test.server_fixtures.mmmu_fixture import MMMUServerBase
register_cuda_ci(est_time=610, suite="stage-c-test-8-gpu-h200") register_cuda_ci(est_time=610, stage="stage-c", runner_config="8-gpu-h200")
class TestMiMoV2Flash(GSM8KMixin, SpecDecodingMixin, DefaultServerBase): class TestMiMoV2Flash(GSM8KMixin, SpecDecodingMixin, DefaultServerBase):
@@ -14,7 +14,7 @@ from sglang.test.test_utils import (
write_github_step_summary, write_github_step_summary,
) )
register_cuda_ci(est_time=307, suite="stage-c-test-8-gpu-h200") register_cuda_ci(est_time=307, stage="stage-c", runner_config="8-gpu-h200")
MINIMAX_M25_MODEL_PATH = "MiniMaxAI/MiniMax-M2.5" MINIMAX_M25_MODEL_PATH = "MiniMaxAI/MiniMax-M2.5"
@@ -11,7 +11,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=376, suite="stage-c-test-8-gpu-h200") register_cuda_ci(est_time=376, stage="stage-c", runner_config="8-gpu-h200")
NEMOTRON_3_SUPER_BF16_MODEL = "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16" NEMOTRON_3_SUPER_BF16_MODEL = "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16"
@@ -17,7 +17,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=600, suite="stage-c-test-8-gpu-h200") register_cuda_ci(est_time=600, stage="stage-c", runner_config="8-gpu-h200")
DEEPSEEK_V32_MODEL_PATH = "deepseek-ai/DeepSeek-V3.2" DEEPSEEK_V32_MODEL_PATH = "deepseek-ai/DeepSeek-V3.2"
@@ -17,7 +17,7 @@ from sglang.test.test_utils import (
write_github_step_summary, write_github_step_summary,
) )
register_cuda_ci(est_time=663, suite="stage-c-test-8-gpu-h200") register_cuda_ci(est_time=663, stage="stage-c", runner_config="8-gpu-h200")
STEP3P5_FLASH_MODEL_PATH = "stepfun-ai/Step-3.5-Flash" STEP3P5_FLASH_MODEL_PATH = "stepfun-ai/Step-3.5-Flash"
@@ -8,7 +8,7 @@ from sglang.srt.layers.attention.fla.fused_recurrent import (
) )
from sglang.test.ci.ci_register import register_cuda_ci from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci(est_time=11, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=11, stage="stage-b", runner_config="1-gpu-large")
@unittest.skipIf(not torch.cuda.is_available(), "Test requires CUDA") @unittest.skipIf(not torch.cuda.is_available(), "Test requires CUDA")
@@ -9,7 +9,7 @@ from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.test_utils import CustomTestCase from sglang.test.test_utils import CustomTestCase
# Triton kernel unit test for KV indices creation # Triton kernel unit test for KV indices creation
register_cuda_ci(est_time=7, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=7, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=10, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=10, suite="stage-b-test-1-gpu-small-amd")
@@ -13,7 +13,7 @@ from sglang.test.test_utils import (
) )
# FlashAttention4 integration test (requires SM 100+ / Blackwell B200) # FlashAttention4 integration test (requires SM 100+ / Blackwell B200)
register_cuda_ci(est_time=265, suite="stage-b-test-4-gpu-b200") register_cuda_ci(est_time=265, stage="stage-b", runner_config="4-gpu-b200")
@unittest.skipIf(get_device_sm() < 100, "Test requires CUDA SM 100 or higher") @unittest.skipIf(get_device_sm() < 100, "Test requires CUDA SM 100 or higher")
@@ -14,7 +14,7 @@ from sglang.srt.layers.attention.fla.fused_sigmoid_gating_recurrent import (
) )
from sglang.test.ci.ci_register import register_cuda_ci from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci(est_time=7, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=7, stage="stage-b", runner_config="1-gpu-large")
def _make_noncontiguous_ab(batch, num_heads, dtype=torch.bfloat16, device="cuda"): def _make_noncontiguous_ab(batch, num_heads, dtype=torch.bfloat16, device="cuda"):
@@ -20,7 +20,7 @@ from sglang.test.test_utils import (
# Hybrid attention backend tests (FA3 prefill + FlashInfer decode, requires SM 90+ / H100) # Hybrid attention backend tests (FA3 prefill + FlashInfer decode, requires SM 90+ / H100)
# Multiple test classes: base, MLA, TorchCompile, SpecDecode variants # Multiple test classes: base, MLA, TorchCompile, SpecDecode variants
register_cuda_ci(est_time=407, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=407, stage="stage-b", runner_config="1-gpu-large")
GSM_DATASET_PATH = None GSM_DATASET_PATH = None
@@ -14,7 +14,7 @@ from sglang.srt.layers.attention.fla.kda import (
from sglang.srt.utils.common import get_device from sglang.srt.utils.common import get_device
from sglang.test.ci.ci_register import register_cuda_ci from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci(est_time=12, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=12, stage="stage-b", runner_config="1-gpu-large")
@unittest.skipIf( @unittest.skipIf(
@@ -21,7 +21,7 @@ from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.test_utils import CustomTestCase from sglang.test.test_utils import CustomTestCase
# Register this test for CUDA CI in stage-b (fast attention/kernel tests) # Register this test for CUDA CI in stage-b (fast attention/kernel tests)
register_cuda_ci(est_time=11, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=11, stage="stage-b", runner_config="1-gpu-large")
def reference_normal_decode_set_metadata( def reference_normal_decode_set_metadata(
@@ -18,7 +18,7 @@ from sglang.test.test_utils import (
) )
# Torch native attention backend integration test with MMLU eval # Torch native attention backend integration test with MMLU eval
register_cuda_ci(est_time=140, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=140, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=150, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=150, suite="stage-b-test-1-gpu-small-amd")
@@ -20,7 +20,7 @@ from sglang.test.test_utils import (
) )
# Triton attention backend integration test with latency benchmark and MMLU eval # Triton attention backend integration test with latency benchmark and MMLU eval
register_cuda_ci(est_time=177, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=177, stage="stage-b", runner_config="1-gpu-large")
register_amd_ci(est_time=1400, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=1400, suite="stage-b-test-1-gpu-small-amd")
@@ -23,7 +23,7 @@ from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.test_utils import CustomTestCase, is_in_amd_ci from sglang.test.test_utils import CustomTestCase, is_in_amd_ci
# Triton attention kernel unit tests (decode, extend, prefill) # Triton attention kernel unit tests (decode, extend, prefill)
register_cuda_ci(est_time=19, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=19, stage="stage-b", runner_config="1-gpu-large")
register_amd_ci(est_time=30, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=30, suite="stage-b-test-1-gpu-small-amd")
@@ -16,7 +16,7 @@ from sglang.test.test_utils import (
) )
# Sliding window attention with Triton backend (Gemma-3 model) # Sliding window attention with Triton backend (Gemma-3 model)
register_cuda_ci(est_time=93, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=93, stage="stage-b", runner_config="1-gpu-large")
register_amd_ci(est_time=200, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=200, suite="stage-b-test-1-gpu-small-amd")
@@ -15,7 +15,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=126, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=126, stage="stage-b", runner_config="1-gpu-large")
register_amd_ci(est_time=1100, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=1100, suite="stage-b-test-1-gpu-small-amd")
@@ -23,7 +23,7 @@ from sglang.test.test_utils import (
) )
# CI Registration — large suite to fit the integration test's server startup. # CI Registration — large suite to fit the integration test's server startup.
register_cuda_ci(est_time=79, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=79, stage="stage-b", runner_config="1-gpu-large")
def _skip_if_no_cuda(test_func): def _skip_if_no_cuda(test_func):
@@ -13,7 +13,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=120, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=120, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=179, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=179, suite="stage-b-test-1-gpu-small-amd")
+1 -1
View File
@@ -16,7 +16,7 @@ from sglang.test.test_deterministic_utils import (
) )
from sglang.test.test_utils import is_in_amd_ci from sglang.test.test_utils import is_in_amd_ci
register_cuda_ci(est_time=207, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=207, stage="stage-b", runner_config="1-gpu-large")
register_amd_ci(est_time=278, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=278, suite="stage-b-test-1-gpu-small-amd")
@@ -20,7 +20,7 @@ from sglang.test.test_utils import (
CustomTestCase, CustomTestCase,
) )
register_cuda_ci(est_time=77, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=77, stage="stage-b", runner_config="1-gpu-small")
class TestEngineChildPids(CustomTestCase): class TestEngineChildPids(CustomTestCase):
@@ -23,7 +23,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=107, suite="stage-b-test-2-gpu-large") register_cuda_ci(est_time=107, stage="stage-b", runner_config="2-gpu-large")
PROMPT = ( PROMPT = (
+1 -1
View File
@@ -5,7 +5,7 @@ import torch
from sglang.test.ci.ci_register import register_cuda_ci from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.gpt_oss_common import BaseTestGptOss from sglang.test.gpt_oss_common import BaseTestGptOss
register_cuda_ci(est_time=345, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=345, stage="stage-b", runner_config="1-gpu-small")
@unittest.skipIf(not torch.cuda.is_available(), "CUDA is not available") @unittest.skipIf(not torch.cuda.is_available(), "CUDA is not available")
+1 -1
View File
@@ -8,7 +8,7 @@ from sglang.srt.utils import get_device, is_hip
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.test_utils import DEFAULT_SMALL_MODEL_NAME_FOR_TEST, CustomTestCase from sglang.test.test_utils import DEFAULT_SMALL_MODEL_NAME_FOR_TEST, CustomTestCase
register_cuda_ci(est_time=45, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=45, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=55, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=55, suite="stage-b-test-1-gpu-small-amd")
_is_hip = is_hip() _is_hip = is_hip()
@@ -4,7 +4,7 @@ from unittest.mock import MagicMock, patch
from sglang.srt.server_args import ServerArgs from sglang.srt.server_args import ServerArgs
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
register_cuda_ci(est_time=9, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=9, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=1, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=1, suite="stage-b-test-1-gpu-small-amd")
@@ -17,7 +17,7 @@ from sglang.test.test_utils import (
send_generate_requests, send_generate_requests,
) )
register_cuda_ci(est_time=53, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=53, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=70, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=70, suite="stage-b-test-1-gpu-small-amd")
+1 -1
View File
@@ -28,7 +28,7 @@ from sglang.test.test_utils import (
run_logprob_check, run_logprob_check,
) )
register_cuda_ci(est_time=134, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=134, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=130, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=130, suite="stage-b-test-1-gpu-small-amd")
+1 -1
View File
@@ -22,7 +22,7 @@ from sglang.test.test_utils import (
CustomTestCase, CustomTestCase,
) )
register_cuda_ci(est_time=387, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=387, stage="stage-b", runner_config="1-gpu-large")
register_amd_ci(est_time=261, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=261, suite="stage-b-test-1-gpu-small-amd")
@@ -15,7 +15,8 @@ from sglang.test.test_utils import (
register_cuda_ci( register_cuda_ci(
est_time=616, est_time=616,
suite="stage-c-test-deepep-8-gpu-h200", stage="stage-c",
runner_config="deepep-8-gpu-h200",
) )
DEEPSEEK_V32_MODEL_PATH = "deepseek-ai/DeepSeek-V3.2" DEEPSEEK_V32_MODEL_PATH = "deepseek-ai/DeepSeek-V3.2"
@@ -12,7 +12,8 @@ from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci( register_cuda_ci(
est_time=10, est_time=10,
suite="stage-a-test-1-gpu-small", stage="stage-a",
runner_config="1-gpu-small",
disabled="Manual only: triggers intentional CUDA crash for coredump verification", disabled="Manual only: triggers intentional CUDA crash for coredump verification",
) )
@@ -19,7 +19,8 @@ from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
register_cuda_ci( register_cuda_ci(
est_time=9, est_time=9,
suite="stage-b-test-1-gpu-small", stage="stage-b",
runner_config="1-gpu-small",
disabled="Test uses pytest-style function without TestCase class - see #17145", disabled="Test uses pytest-style function without TestCase class - see #17145",
) )
register_amd_ci( register_amd_ci(
@@ -21,7 +21,7 @@ from sglang.test.test_utils import (
DEFAULT_TARGET_MODEL_EAGLE3, DEFAULT_TARGET_MODEL_EAGLE3,
) )
register_cuda_ci(est_time=509, suite="stage-b-test-2-gpu-large") register_cuda_ci(est_time=509, stage="stage-b", runner_config="2-gpu-large")
class TestDisaggregationAccuracy(PauseResumeInPlaceMixin, PDDisaggregationServerBase): class TestDisaggregationAccuracy(PauseResumeInPlaceMixin, PDDisaggregationServerBase):
@@ -19,7 +19,8 @@ from sglang.test.test_utils import (
# Increasing estimated time since we run evaluation twice # Increasing estimated time since we run evaluation twice
register_cuda_ci( register_cuda_ci(
est_time=600, est_time=600,
suite="stage-b-test-2-gpu-large", stage="stage-b",
runner_config="2-gpu-large",
disabled="Temporarily disable the flaky test.", disabled="Temporarily disable the flaky test.",
) )
@@ -26,7 +26,8 @@ from sglang.test.test_utils import DEFAULT_SMALL_MODEL_NAME_FOR_TEST_QWEN
register_cuda_ci( register_cuda_ci(
est_time=300, est_time=300,
suite="stage-a-test-1-gpu-small", stage="stage-a",
runner_config="1-gpu-small",
disabled="Intel XPU only — not available in standard CUDA CI", disabled="Intel XPU only — not available in standard CUDA CI",
) )
@@ -17,7 +17,7 @@ from sglang.srt.disaggregation.decode_kvcache_offload_manager import (
) )
from sglang.test.ci.ci_register import register_cuda_ci from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci(est_time=8, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=8, stage="stage-b", runner_config="1-gpu-small")
def _make_mock_req( def _make_mock_req(
@@ -14,7 +14,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=91, suite="stage-b-test-2-gpu-large") register_cuda_ci(est_time=91, stage="stage-b", runner_config="2-gpu-large")
register_amd_ci(est_time=73, suite="stage-b-test-2-gpu-large-amd") register_amd_ci(est_time=73, suite="stage-b-test-2-gpu-large-amd")
@@ -13,7 +13,7 @@ from sglang.test.test_utils import (
popen_launch_pd_server, popen_launch_pd_server,
) )
register_cuda_ci(est_time=300, suite="stage-c-test-4-gpu-gb200") register_cuda_ci(est_time=300, stage="stage-c", runner_config="4-gpu-gb200")
class TestDisaggregationMooncakeAARCH64Accuracy(PDDisaggregationServerBase): class TestDisaggregationMooncakeAARCH64Accuracy(PDDisaggregationServerBase):
@@ -16,7 +16,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=300, suite="stage-c-test-8-gpu-h20") register_cuda_ci(est_time=300, stage="stage-c", runner_config="8-gpu-h20")
def _has_nixl(): def _has_nixl():
@@ -16,7 +16,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=375, suite="stage-c-test-8-gpu-h20") register_cuda_ci(est_time=375, stage="stage-c", runner_config="8-gpu-h20")
class TestDisaggregationMooncakePrefillLargerTP(PDDisaggregationServerBase): class TestDisaggregationMooncakePrefillLargerTP(PDDisaggregationServerBase):
@@ -16,7 +16,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=443, suite="stage-c-test-8-gpu-h20") register_cuda_ci(est_time=443, stage="stage-c", runner_config="8-gpu-h20")
class TestDisaggregationDPAttention(PDDisaggregationServerBase): class TestDisaggregationDPAttention(PDDisaggregationServerBase):
@@ -12,7 +12,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=250, suite="stage-c-test-dsv4-8-gpu-h200") register_cuda_ci(est_time=250, stage="stage-c", runner_config="dsv4-8-gpu-h200")
DSV4_FLASH_MODEL = "sgl-project/DeepSeek-V4-Flash-FP8" DSV4_FLASH_MODEL = "sgl-project/DeepSeek-V4-Flash-FP8"
@@ -12,7 +12,7 @@ from sglang.test.test_utils import (
popen_launch_pd_server, popen_launch_pd_server,
) )
register_cuda_ci(est_time=695, suite="stage-c-test-8-gpu-h200") register_cuda_ci(est_time=695, stage="stage-c", runner_config="8-gpu-h200")
@unittest.skipIf(is_in_ci(), "Temporarily disable the flaky test.") @unittest.skipIf(is_in_ci(), "Temporarily disable the flaky test.")
@@ -14,7 +14,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=216, suite="stage-c-test-8-gpu-h20") register_cuda_ci(est_time=216, stage="stage-c", runner_config="8-gpu-h20")
class TestDisaggregationPrefillPPAccuracy(PDDisaggregationServerBase): class TestDisaggregationPrefillPPAccuracy(PDDisaggregationServerBase):
@@ -21,7 +21,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=420, suite="stage-b-test-2-gpu-large") register_cuda_ci(est_time=420, stage="stage-b", runner_config="2-gpu-large")
class TestDPAttentionDP2TP2( class TestDPAttentionDP2TP2(
@@ -11,7 +11,7 @@ from sglang.srt.utils import get_cuda_driver_bindings, is_flashinfer_available
from sglang.test.ci.ci_register import register_cuda_ci from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.test_utils import CustomTestCase from sglang.test.test_utils import CustomTestCase
register_cuda_ci(est_time=30, suite="stage-b-test-2-gpu-large") register_cuda_ci(est_time=30, stage="stage-b", runner_config="2-gpu-large")
WORLD_SIZE = 2 WORLD_SIZE = 2
@@ -38,7 +38,7 @@ from sglang.utils import terminate_process
mp.set_start_method("spawn", force=True) mp.set_start_method("spawn", force=True)
register_cuda_ci(est_time=145, suite="stage-b-test-2-gpu-large") register_cuda_ci(est_time=145, stage="stage-b", runner_config="2-gpu-large")
register_amd_ci(est_time=72, suite="stage-b-test-2-gpu-large-amd") register_amd_ci(est_time=72, suite="stage-b-test-2-gpu-large-amd")
@@ -43,7 +43,7 @@ import pytest
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
register_cuda_ci(est_time=8, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=8, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=8, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=8, suite="stage-b-test-1-gpu-small-amd")
# Import the actual parallel_state module # Import the actual parallel_state module
@@ -32,7 +32,7 @@ from sglang.test.test_utils import (
run_bench_one_batch_server, run_bench_one_batch_server,
) )
register_cuda_ci(est_time=554, suite="stage-c-test-4-gpu-h100") register_cuda_ci(est_time=554, stage="stage-c", runner_config="4-gpu-h100")
register_amd_ci(est_time=650, suite="stage-c-test-4-gpu-amd") register_amd_ci(est_time=650, suite="stage-c-test-4-gpu-amd")
+1 -1
View File
@@ -1,6 +1,6 @@
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
register_cuda_ci(est_time=139, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=139, stage="stage-b", runner_config="1-gpu-large")
register_amd_ci(est_time=330, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=330, suite="stage-b-test-1-gpu-small-amd")
import unittest import unittest
@@ -21,7 +21,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=1800, suite="stage-c-test-dsv4-4-gpu-b200") register_cuda_ci(est_time=1800, stage="stage-c", runner_config="dsv4-4-gpu-b200")
MODEL = "deepseek-ai/DeepSeek-V4-Flash" MODEL = "deepseek-ai/DeepSeek-V4-Flash"
SERVER_LAUNCH_TIMEOUT = 3600 SERVER_LAUNCH_TIMEOUT = 3600
@@ -21,7 +21,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=1800, suite="stage-c-test-dsv4-8-gpu-h200") register_cuda_ci(est_time=1800, stage="stage-c", runner_config="dsv4-8-gpu-h200")
def _flashinfer_has_sm90_cutlass_mxfp4() -> bool: def _flashinfer_has_sm90_cutlass_mxfp4() -> bool:
@@ -22,7 +22,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=900, suite="stage-c-test-dsv4-8-gpu-h200") register_cuda_ci(est_time=900, stage="stage-c", runner_config="dsv4-8-gpu-h200")
MODEL_FP8 = "sgl-project/DeepSeek-V4-Flash-FP8" MODEL_FP8 = "sgl-project/DeepSeek-V4-Flash-FP8"
SERVER_LAUNCH_TIMEOUT = 3600 SERVER_LAUNCH_TIMEOUT = 3600
+1 -1
View File
@@ -16,7 +16,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=528, suite="stage-c-test-deepep-8-gpu-h200") register_cuda_ci(est_time=528, stage="stage-c", runner_config="deepep-8-gpu-h200")
DEEPSEEK_V32_MODEL_PATH = "deepseek-ai/DeepSeek-V3.2" DEEPSEEK_V32_MODEL_PATH = "deepseek-ai/DeepSeek-V3.2"
+1 -1
View File
@@ -16,7 +16,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=478, suite="stage-c-test-deepep-4-gpu-h100") register_cuda_ci(est_time=478, stage="stage-c", runner_config="deepep-4-gpu-h100")
class TestPureDP(CustomTestCase): class TestPureDP(CustomTestCase):
+1 -1
View File
@@ -15,7 +15,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=82, suite="stage-c-test-deepep-4-gpu-h100") register_cuda_ci(est_time=82, stage="stage-c", runner_config="deepep-4-gpu-h100")
ib_devices = get_rdma_devices_args() ib_devices = get_rdma_devices_args()
@@ -30,7 +30,7 @@ from sglang.test.test_utils import (
) )
from sglang.utils import wait_for_http_ready from sglang.utils import wait_for_http_ready
register_cuda_ci(est_time=200, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=200, stage="stage-b", runner_config="1-gpu-large")
@unittest.skipIf(is_hip(), "HiCache + EAGLE3 file-storage loadback e2e is CUDA-only.") @unittest.skipIf(is_hip(), "HiCache + EAGLE3 file-storage loadback e2e is CUDA-only.")
@@ -1,6 +1,6 @@
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
register_cuda_ci(est_time=99, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=99, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=300, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=300, suite="stage-b-test-1-gpu-small-amd")
import time import time
@@ -13,7 +13,7 @@ from test_hicache_storage_file_backend import HiCacheStorageBaseMixin
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.test_utils import CustomTestCase from sglang.test.test_utils import CustomTestCase
register_cuda_ci(est_time=150, suite="stage-b-test-2-gpu-large") register_cuda_ci(est_time=150, stage="stage-b", runner_config="2-gpu-large")
register_amd_ci(est_time=300, suite="stage-b-test-2-gpu-large") register_amd_ci(est_time=300, suite="stage-b-test-2-gpu-large")
@@ -31,7 +31,7 @@ from sglang.test.test_utils import (
) )
from sglang.utils import wait_for_http_ready from sglang.utils import wait_for_http_ready
register_cuda_ci(est_time=148, suite="stage-b-test-2-gpu-large") register_cuda_ci(est_time=148, stage="stage-b", runner_config="2-gpu-large")
register_amd_ci(est_time=526, suite="stage-b-test-2-gpu-large-amd") register_amd_ci(est_time=526, suite="stage-b-test-2-gpu-large-amd")
@@ -21,7 +21,7 @@ from sglang.test.test_utils import (
is_in_ci, is_in_ci,
) )
register_cuda_ci(est_time=236, suite="stage-b-test-2-gpu-large") register_cuda_ci(est_time=236, stage="stage-b", runner_config="2-gpu-large")
class HiCacheStorageMooncakeBackendBaseMixin(HiCacheStorageBaseMixin): class HiCacheStorageMooncakeBackendBaseMixin(HiCacheStorageBaseMixin):
@@ -28,7 +28,7 @@ from sglang.test.test_utils import (
) )
from sglang.utils import wait_for_http_ready from sglang.utils import wait_for_http_ready
register_cuda_ci(est_time=139, suite="stage-b-test-2-gpu-large") register_cuda_ci(est_time=139, stage="stage-b", runner_config="2-gpu-large")
class TestHiCacheStorageRuntimeAttachDetach(CustomTestCase): class TestHiCacheStorageRuntimeAttachDetach(CustomTestCase):
@@ -1,6 +1,6 @@
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
register_cuda_ci(est_time=450, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=450, stage="stage-b", runner_config="1-gpu-large")
register_amd_ci(est_time=524, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=524, suite="stage-b-test-1-gpu-small-amd")
""" """
Consolidated HiCache variant tests. Consolidated HiCache variant tests.
@@ -16,7 +16,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=42, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=42, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=38, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=38, suite="stage-b-test-1-gpu-small-amd")
@@ -30,7 +30,7 @@ from sglang.test.test_utils import (
popen_launch_server, popen_launch_server,
) )
register_cuda_ci(est_time=43, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=43, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=43, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=43, suite="stage-b-test-1-gpu-small-amd")
CHUNKED_PREFILL_SIZE = 256 CHUNKED_PREFILL_SIZE = 256
+1 -1
View File
@@ -24,7 +24,7 @@ from sglang.srt.model_executor.forward_batch_info import ForwardBatch, ForwardMo
from sglang.srt.server_args import ServerArgs, set_global_server_args_for_scheduler from sglang.srt.server_args import ServerArgs, set_global_server_args_for_scheduler
from sglang.test.test_utils import CustomTestCase from sglang.test.test_utils import CustomTestCase
register_cuda_ci(est_time=18, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=18, stage="stage-b", runner_config="1-gpu-large")
# Global configuration for all indexer tests # Global configuration for all indexer tests
DEFAULT_CONFIG = { DEFAULT_CONFIG = {
+1 -1
View File
@@ -20,7 +20,7 @@ from sglang.test.test_programs import (
) )
from sglang.test.test_utils import DEFAULT_MODEL_NAME_FOR_TEST, CustomTestCase from sglang.test.test_utils import DEFAULT_MODEL_NAME_FOR_TEST, CustomTestCase
register_cuda_ci(est_time=79, suite="stage-a-test-1-gpu-small") register_cuda_ci(est_time=79, stage="stage-a", runner_config="1-gpu-small")
register_amd_ci(est_time=120, suite="stage-a-test-1-gpu-small-amd") register_amd_ci(est_time=120, suite="stage-a-test-1-gpu-small-amd")
@@ -2,7 +2,7 @@
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
register_cuda_ci(est_time=11, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=11, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=25, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=25, suite="stage-b-test-1-gpu-small-amd")
# Adapted from https://github.com/vllm-project/vllm/blob/main/tests/kernels/mamba/test_causal_conv1d.py # Adapted from https://github.com/vllm-project/vllm/blob/main/tests/kernels/mamba/test_causal_conv1d.py
@@ -18,7 +18,7 @@ from sglang.srt.distributed.parallel_state import (
from sglang.srt.utils import get_device, get_device_count from sglang.srt.utils import get_device, get_device_count
from sglang.test.ci.ci_register import register_cuda_ci from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci(est_time=32, suite="stage-b-test-2-gpu-large") register_cuda_ci(est_time=32, stage="stage-b", runner_config="2-gpu-large")
NUM_GPUS = 2 NUM_GPUS = 2
@@ -2,7 +2,7 @@
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
register_cuda_ci(est_time=10, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=10, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=20, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=20, suite="stage-b-test-1-gpu-small-amd")
# Adapted from https://github.com/vllm-project/vllm/blob/633f943e30a4444d890d26b81850f7217736f840/tests/kernels/mamba/test_mamba_ssm_ssd.py # Adapted from https://github.com/vllm-project/vllm/blob/633f943e30a4444d890d26b81850f7217736f840/tests/kernels/mamba/test_mamba_ssm_ssd.py
@@ -2,7 +2,7 @@
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
register_cuda_ci(est_time=10, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=10, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=34, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=34, suite="stage-b-test-1-gpu-small-amd")
# Adapted from https://github.com/vllm-project/vllm/blob/633f943e30a4444d890d26b81850f7217736f840/tests/kernels/mamba/test_mamba_ssm_ssd.py # Adapted from https://github.com/vllm-project/vllm/blob/633f943e30a4444d890d26b81850f7217736f840/tests/kernels/mamba/test_mamba_ssm_ssd.py
@@ -19,7 +19,8 @@ from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci( register_cuda_ci(
est_time=60, est_time=60,
suite="stage-b-test-2-gpu-large", stage="stage-b",
runner_config="2-gpu-large",
disabled="Temporarily disabled", disabled="Temporarily disabled",
) )
@@ -15,7 +15,7 @@ from sglang.test.ci.ci_register import register_cuda_ci
# ============================================================================== # ==============================================================================
register_cuda_ci(est_time=28, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=28, stage="stage-b", runner_config="1-gpu-large")
def round_up(x, base): def round_up(x, base):
+1 -1
View File
@@ -12,7 +12,7 @@ from sglang.test.lora_utils import (
) )
from sglang.test.test_utils import is_in_ci from sglang.test.test_utils import is_in_ci
register_cuda_ci(est_time=100, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=100, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=100, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=100, suite="stage-b-test-1-gpu-small-amd")
MOCK_START_TIME = 1000.0 MOCK_START_TIME = 1000.0
+1 -1
View File
@@ -23,7 +23,7 @@ from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.runners import SRTRunner from sglang.test.runners import SRTRunner
from sglang.test.test_utils import CustomTestCase from sglang.test.test_utils import CustomTestCase
register_cuda_ci(est_time=263, suite="stage-b-test-1-gpu-small") register_cuda_ci(est_time=263, stage="stage-b", runner_config="1-gpu-small")
register_amd_ci(est_time=224, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=224, suite="stage-b-test-1-gpu-small-amd")
PROMPTS = [ PROMPTS = [
@@ -36,7 +36,8 @@ from sglang.test.test_utils import CustomTestCase
register_cuda_ci( register_cuda_ci(
est_time=300, est_time=300,
suite="stage-c-test-4-gpu-b200", stage="stage-c",
runner_config="4-gpu-b200",
) )
BASE_MODEL = "lmsys/gpt-oss-20b-bf16" BASE_MODEL = "lmsys/gpt-oss-20b-bf16"
@@ -41,7 +41,8 @@ from sglang.test.test_utils import DEFAULT_PORT_FOR_SRT_TEST_RUNNER, CustomTestC
register_cuda_ci( register_cuda_ci(
est_time=150, est_time=150,
suite="stage-b-test-1-gpu-small", stage="stage-b",
runner_config="1-gpu-small",
) )
register_amd_ci( register_amd_ci(
est_time=250, est_time=250,
@@ -34,7 +34,8 @@ from sglang.test.test_utils import (
register_cuda_ci( register_cuda_ci(
est_time=200, est_time=200,
suite="stage-b-test-2-gpu-large", stage="stage-b",
runner_config="2-gpu-large",
) )
LOGPROB_THRESHOLD = 5e-04 LOGPROB_THRESHOLD = 5e-04
@@ -26,7 +26,8 @@ from sglang.test.runners import SRTRunner
register_cuda_ci( register_cuda_ci(
est_time=50, est_time=50,
suite="stage-b-test-1-gpu-large", stage="stage-b",
runner_config="1-gpu-large",
) )
# Format: [{"text": "result string", "lps": [0.1, 0.2, ...]}, ...] # Format: [{"text": "result string", "lps": [0.1, 0.2, ...]}, ...]
@@ -36,7 +36,8 @@ from sglang.test.test_utils import CustomTestCase
register_cuda_ci( register_cuda_ci(
est_time=300, est_time=300,
suite="stage-c-test-4-gpu-b200", stage="stage-c",
runner_config="4-gpu-b200",
) )
BASE_MODEL = "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16" BASE_MODEL = "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16"
@@ -29,7 +29,7 @@ from sglang.test.lora_utils import (
) )
from sglang.test.test_utils import CustomTestCase from sglang.test.test_utils import CustomTestCase
register_cuda_ci(est_time=48, suite="stage-b-test-1-gpu-large") register_cuda_ci(est_time=48, stage="stage-b", runner_config="1-gpu-large")
register_amd_ci(est_time=75, suite="stage-b-test-1-gpu-small-amd") register_amd_ci(est_time=75, suite="stage-b-test-1-gpu-small-amd")
@@ -36,7 +36,8 @@ from sglang.test.test_utils import CustomTestCase
register_cuda_ci( register_cuda_ci(
est_time=160, est_time=160,
suite="stage-c-test-4-gpu-b200", stage="stage-c",
runner_config="4-gpu-b200",
) )
BASE_MODEL = "Qwen/Qwen3-30B-A3B-Instruct-2507" BASE_MODEL = "Qwen/Qwen3-30B-A3B-Instruct-2507"
@@ -36,7 +36,8 @@ from sglang.test.test_utils import CustomTestCase
register_cuda_ci( register_cuda_ci(
est_time=160, est_time=160,
suite="stage-c-test-4-gpu-b200", stage="stage-c",
runner_config="4-gpu-b200",
) )
BASE_MODEL = "Qwen/Qwen3.5-35B-A3B" BASE_MODEL = "Qwen/Qwen3.5-35B-A3B"
@@ -36,7 +36,8 @@ from sglang.test.test_utils import CustomTestCase
register_cuda_ci( register_cuda_ci(
est_time=90, est_time=90,
suite="stage-b-test-1-gpu-large", stage="stage-b",
runner_config="1-gpu-large",
) )
BASE_MODEL = "Qwen/Qwen3.5-4B" BASE_MODEL = "Qwen/Qwen3.5-4B"
@@ -39,7 +39,8 @@ from sglang.test.test_utils import CustomTestCase
register_cuda_ci( register_cuda_ci(
est_time=40, est_time=40,
suite="stage-b-test-1-gpu-large", stage="stage-b",
runner_config="1-gpu-large",
) )
BASE_MODEL = "Qwen/Qwen3-8B" BASE_MODEL = "Qwen/Qwen3-8B"
@@ -36,7 +36,8 @@ from sglang.test.test_utils import CustomTestCase
register_cuda_ci( register_cuda_ci(
est_time=160, est_time=160,
suite="stage-c-test-4-gpu-b200", stage="stage-c",
runner_config="4-gpu-b200",
) )
BASE_MODEL = "Qwen/Qwen3-VL-30B-A3B-Instruct" BASE_MODEL = "Qwen/Qwen3-VL-30B-A3B-Instruct"

Some files were not shown because too many files have changed in this diff Show More