ci: unify PR test suite naming (#21187)

This commit is contained in:
Lianmin Zheng
2026-03-23 00:18:45 -07:00
committed by GitHub
parent 3d312643b9
commit 814202704b
283 changed files with 554 additions and 554 deletions
+12 -12
View File
@@ -18,10 +18,10 @@ description: Guide for writing SGLang CI/UT tests following project conventions.
| Scenario | Model | CI Registration | Suite |
|----------|-------|-----------------|-------|
| **Unit tests** (no server / engine launch) | None | `register_cpu_ci` (prefer) or `register_cuda_ci` | `stage-a-cpu-only` or `stage-b-test-small-1-gpu` |
| **Common / backend-independent** (middleware, abort, routing, config, arg parsing) | `DEFAULT_SMALL_MODEL_NAME_FOR_TEST` (1B) | `register_cuda_ci` only | `stage-b-test-small-1-gpu` |
| **Model-agnostic functionality** (sampling, session, OpenAI API features) | `DEFAULT_SMALL_MODEL_NAME_FOR_TEST` (1B) | `register_cuda_ci` (+ AMD if relevant) | `stage-b-test-small-1-gpu` |
| **General performance** (single node, no spec/DP/parallelism) | `DEFAULT_MODEL_NAME_FOR_TEST` (8B) | `register_cuda_ci` | `stage-b-test-large-1-gpu` |
| **Unit tests** (no server / engine launch) | None | `register_cpu_ci` (prefer) or `register_cuda_ci` | `stage-a-test-cpu` or `stage-b-test-1-gpu-small` |
| **Common / backend-independent** (middleware, abort, routing, config, arg parsing) | `DEFAULT_SMALL_MODEL_NAME_FOR_TEST` (1B) | `register_cuda_ci` only | `stage-b-test-1-gpu-small` |
| **Model-agnostic functionality** (sampling, session, OpenAI API features) | `DEFAULT_SMALL_MODEL_NAME_FOR_TEST` (1B) | `register_cuda_ci` (+ AMD if relevant) | `stage-b-test-1-gpu-small` |
| **General performance** (single node, no spec/DP/parallelism) | `DEFAULT_MODEL_NAME_FOR_TEST` (8B) | `register_cuda_ci` | `stage-b-test-1-gpu-large` |
| **Bigger features** (spec, DP, TP, disaggregation) | Case by case | Case by case | See suite table below |
**Key principle for E2E tests**: Do NOT add `register_amd_ci` unless the test specifically exercises AMD/ROCm code paths. Common E2E tests just need any GPU to run — duplicating across backends wastes CI time with no extra coverage.
@@ -43,10 +43,10 @@ Defined in `python/sglang/test/test_utils.py`:
| Suite | Runner | Scenario |
|-------|--------|----------|
| `stage-a-cpu-only` | CPU | CPU unit tests |
| `stage-b-test-small-1-gpu` | 1× 5090 (32GB) | Small model tests |
| `stage-b-test-large-1-gpu` | 1× H100 (80GB) | 8B model tests |
| `stage-b-test-large-2-gpu` | 2× H100 | TP=2 tests |
| `stage-a-test-cpu` | CPU | CPU unit tests |
| `stage-b-test-1-gpu-small` | 1× 5090 (32GB) | Small model tests |
| `stage-b-test-1-gpu-large` | 1× H100 (80GB) | 8B model tests |
| `stage-b-test-2-gpu-large` | 2× H100 | TP=2 tests |
| `stage-c-test-4-gpu-h100` | 4× H100 | TP=4 / EP tests |
| `stage-c-test-8-gpu-h200` | 8× H200 | Large-scale multi-GPU |
| `nightly-1-gpu` | 1 GPU | Nightly-only |
@@ -70,7 +70,7 @@ from sglang.srt.<module> import TargetClass
from sglang.test.ci.ci_register import register_cpu_ci
from sglang.test.test_utils import CustomTestCase
register_cpu_ci(est_time=5, suite="stage-a-cpu-only")
register_cpu_ci(est_time=5, suite="stage-a-test-cpu")
# Prefer CPU. Only use register_cuda_ci when the test truly needs a GPU.
class TestTargetClass(CustomTestCase):
@@ -110,7 +110,7 @@ from sglang.test.test_utils import (
popen_launch_server,
)
register_cuda_ci(est_time=60, suite="stage-b-test-small-1-gpu")
register_cuda_ci(est_time=60, suite="stage-b-test-1-gpu-small")
class TestMyFeature(CustomTestCase):
@@ -159,7 +159,7 @@ from sglang.test.test_utils import (
popen_launch_server,
)
register_cuda_ci(est_time=300, suite="stage-b-test-large-1-gpu")
register_cuda_ci(est_time=300, suite="stage-b-test-1-gpu-large")
class TestMyFeaturePerf(CustomTestCase):
@@ -227,7 +227,7 @@ Every test file in `test/registered/` **must** call a registration function at m
```python
from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci(est_time=60, suite="stage-b-test-small-1-gpu")
register_cuda_ci(est_time=60, suite="stage-b-test-1-gpu-small")
```
Parameters:
+1 -1
View File
@@ -8,7 +8,7 @@ inputs:
jobs:
description: |
JSON array of job specs to wait for. Each element is either:
- a string: exact job name (e.g. "stage-a-test-small-1-gpu")
- a string: exact job name (e.g. "stage-a-test-1-gpu-small")
- an object { "prefix": "...", "expected_count": N }: for matrix jobs
required: true
max-wait-minutes:
+30 -30
View File
@@ -35,13 +35,13 @@ on:
- ''
- sgl-kernel-unit-test-amd
- sgl-kernel-unit-test-2-gpu-amd
- stage-a-test-small-1-gpu-amd
- stage-a-test-1-gpu-small-amd
- jit-kernel-unit-test-amd
- stage-b-test-small-1-gpu-amd
- stage-b-test-small-1-gpu-amd-nondeterministic
- stage-b-test-small-1-gpu-amd-mi35x
- stage-b-test-large-1-gpu-amd
- stage-b-test-large-2-gpu-amd
- stage-b-test-1-gpu-small-amd
- stage-b-test-1-gpu-small-amd-nondeterministic
- stage-b-test-1-gpu-small-amd-mi35x
- stage-b-test-1-gpu-large-amd
- stage-b-test-2-gpu-large-amd
- multimodal-gen-test-1-gpu-amd
- multimodal-gen-test-2-gpu-amd
- stage-c-test-large-8-gpu-amd
@@ -246,12 +246,12 @@ jobs:
# =============================================== primary ====================================================
stage-a-test-small-1-gpu-amd:
stage-a-test-1-gpu-small-amd:
needs: [check-changes]
if: |
always() &&
(
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-a-test-small-1-gpu-amd,')) ||
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-a-test-1-gpu-small-amd,')) ||
(
!(inputs.target_stage || inputs.target_stage_select) &&
(!failure() && !cancelled()) &&
@@ -283,7 +283,7 @@ jobs:
- name: Run test
timeout-minutes: 10
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-a-test-small-1-gpu-amd ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-a-test-1-gpu-small-amd ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
jit-kernel-unit-test-amd:
needs: [check-changes]
@@ -323,12 +323,12 @@ jobs:
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout" python3 -m pytest -q python/sglang/jit_kernel/tests/test_store_cache.py
stage-b-test-small-1-gpu-amd:
stage-b-test-1-gpu-small-amd:
needs: [check-changes]
if: |
always() &&
(
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-small-1-gpu-amd,')) ||
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-1-gpu-small-amd,')) ||
(
!(inputs.target_stage || inputs.target_stage_select) &&
(!failure() && !cancelled()) &&
@@ -360,14 +360,14 @@ jobs:
- name: Run test
timeout-minutes: 30
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-small-1-gpu-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 14 --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-1-gpu-small-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 14 --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
stage-b-test-small-1-gpu-amd-nondeterministic:
stage-b-test-1-gpu-small-amd-nondeterministic:
needs: [check-changes]
if: |
always() &&
(
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-small-1-gpu-amd-nondeterministic,')) ||
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-1-gpu-small-amd-nondeterministic,')) ||
(
!(inputs.target_stage || inputs.target_stage_select) &&
(!failure() && !cancelled()) &&
@@ -398,14 +398,14 @@ jobs:
- name: Run test
timeout-minutes: 30
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-small-1-gpu-amd-nondeterministic --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-1-gpu-small-amd-nondeterministic --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
stage-b-test-small-1-gpu-amd-mi35x:
stage-b-test-1-gpu-small-amd-mi35x:
needs: [check-changes]
if: |
always() &&
(
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-small-1-gpu-amd-mi35x,')) ||
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-1-gpu-small-amd-mi35x,')) ||
(
!(inputs.target_stage || inputs.target_stage_select) &&
(!failure() && !cancelled()) &&
@@ -436,14 +436,14 @@ jobs:
- name: Run test
timeout-minutes: 30
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-small-1-gpu-amd-mi35x ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-1-gpu-small-amd-mi35x ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
stage-b-test-large-1-gpu-amd:
stage-b-test-1-gpu-large-amd:
needs: [check-changes]
if: |
always() &&
(
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-large-1-gpu-amd,')) ||
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-1-gpu-large-amd,')) ||
(
!(inputs.target_stage || inputs.target_stage_select) &&
(!failure() && !cancelled()) &&
@@ -475,14 +475,14 @@ jobs:
- name: Run test
timeout-minutes: 30
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-large-1-gpu-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 2 --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-1-gpu-large-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 2 --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
stage-b-test-large-2-gpu-amd:
stage-b-test-2-gpu-large-amd:
needs: [check-changes]
if: |
always() &&
(
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-large-2-gpu-amd,')) ||
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-2-gpu-large-amd,')) ||
(
!(inputs.target_stage || inputs.target_stage_select) &&
(!failure() && !cancelled()) &&
@@ -514,7 +514,7 @@ jobs:
- name: Run test
timeout-minutes: 30
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-large-2-gpu-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 2 --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-2-gpu-large-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 2 --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
multimodal-gen-test-1-gpu-amd:
needs: [check-changes]
@@ -984,13 +984,13 @@ jobs:
multimodal-gen-test-1-gpu-amd,
multimodal-gen-test-2-gpu-amd,
stage-a-test-small-1-gpu-amd,
stage-a-test-1-gpu-small-amd,
jit-kernel-unit-test-amd,
stage-b-test-small-1-gpu-amd,
stage-b-test-small-1-gpu-amd-nondeterministic,
stage-b-test-small-1-gpu-amd-mi35x,
stage-b-test-large-1-gpu-amd,
stage-b-test-large-2-gpu-amd,
stage-b-test-1-gpu-small-amd,
stage-b-test-1-gpu-small-amd-nondeterministic,
stage-b-test-1-gpu-small-amd-mi35x,
stage-b-test-1-gpu-large-amd,
stage-b-test-2-gpu-large-amd,
stage-b-test-large-8-gpu-35x-disaggregation-amd,
stage-c-test-large-8-gpu-amd,
stage-c-test-large-8-gpu-amd-mi35x,
+38 -38
View File
@@ -33,13 +33,13 @@ on:
- ''
- sgl-kernel-unit-test-amd
- sgl-kernel-unit-test-2-gpu-amd
- stage-a-test-small-1-gpu-amd
- stage-a-test-1-gpu-small-amd
- jit-kernel-unit-test-amd
- stage-b-test-small-1-gpu-amd
- stage-b-test-small-1-gpu-amd-nondeterministic
- stage-b-test-small-1-gpu-amd-mi35x
- stage-b-test-large-1-gpu-amd
- stage-b-test-large-2-gpu-amd
- stage-b-test-1-gpu-small-amd
- stage-b-test-1-gpu-small-amd-nondeterministic
- stage-b-test-1-gpu-small-amd-mi35x
- stage-b-test-1-gpu-large-amd
- stage-b-test-2-gpu-large-amd
- multimodal-gen-test-1-gpu-amd
- multimodal-gen-test-2-gpu-amd
- stage-c-test-large-8-gpu-amd
@@ -246,12 +246,12 @@ jobs:
# =============================================== primary ====================================================
stage-a-test-small-1-gpu-amd:
stage-a-test-1-gpu-small-amd:
needs: [check-changes]
if: |
always() &&
(
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-a-test-small-1-gpu-amd,')) ||
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-a-test-1-gpu-small-amd,')) ||
(
!(inputs.target_stage || inputs.target_stage_select) &&
(!failure() && !cancelled()) &&
@@ -284,7 +284,7 @@ jobs:
- name: Run test
timeout-minutes: 10
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-a-test-small-1-gpu-amd ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-a-test-1-gpu-small-amd ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
jit-kernel-unit-test-amd:
needs: [check-changes]
@@ -325,12 +325,12 @@ jobs:
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout" python3 -m pytest -q python/sglang/jit_kernel/tests/test_store_cache.py
stage-b-test-small-1-gpu-amd:
needs: [check-changes, stage-a-test-small-1-gpu-amd]
stage-b-test-1-gpu-small-amd:
needs: [check-changes, stage-a-test-1-gpu-small-amd]
if: |
always() &&
(
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-small-1-gpu-amd,')) ||
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-1-gpu-small-amd,')) ||
(
!(inputs.target_stage || inputs.target_stage_select) &&
(!failure() && !cancelled()) &&
@@ -363,14 +363,14 @@ jobs:
- name: Run test
timeout-minutes: 30
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-small-1-gpu-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 14 --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-1-gpu-small-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 14 --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
stage-b-test-small-1-gpu-amd-nondeterministic:
needs: [check-changes, stage-a-test-small-1-gpu-amd]
stage-b-test-1-gpu-small-amd-nondeterministic:
needs: [check-changes, stage-a-test-1-gpu-small-amd]
if: |
always() &&
(
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-small-1-gpu-amd-nondeterministic,')) ||
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-1-gpu-small-amd-nondeterministic,')) ||
(
!(inputs.target_stage || inputs.target_stage_select) &&
(!failure() && !cancelled()) &&
@@ -402,14 +402,14 @@ jobs:
- name: Run test
timeout-minutes: 30
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-small-1-gpu-amd-nondeterministic --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-1-gpu-small-amd-nondeterministic --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
stage-b-test-small-1-gpu-amd-mi35x:
needs: [check-changes, stage-a-test-small-1-gpu-amd]
stage-b-test-1-gpu-small-amd-mi35x:
needs: [check-changes, stage-a-test-1-gpu-small-amd]
if: |
always() &&
(
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-small-1-gpu-amd-mi35x,')) ||
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-1-gpu-small-amd-mi35x,')) ||
(
!(inputs.target_stage || inputs.target_stage_select) &&
(!failure() && !cancelled()) &&
@@ -441,14 +441,14 @@ jobs:
- name: Run test
timeout-minutes: 30
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-small-1-gpu-amd-mi35x ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-1-gpu-small-amd-mi35x ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
stage-b-test-large-1-gpu-amd:
needs: [check-changes, stage-a-test-small-1-gpu-amd]
stage-b-test-1-gpu-large-amd:
needs: [check-changes, stage-a-test-1-gpu-small-amd]
if: |
always() &&
(
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-large-1-gpu-amd,')) ||
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-1-gpu-large-amd,')) ||
(
!(inputs.target_stage || inputs.target_stage_select) &&
(!failure() && !cancelled()) &&
@@ -481,14 +481,14 @@ jobs:
- name: Run test
timeout-minutes: 30
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-large-1-gpu-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 2 --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-1-gpu-large-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 2 --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
stage-b-test-large-2-gpu-amd:
needs: [check-changes, stage-a-test-small-1-gpu-amd]
stage-b-test-2-gpu-large-amd:
needs: [check-changes, stage-a-test-1-gpu-small-amd]
if: |
always() &&
(
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-large-2-gpu-amd,')) ||
(contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',stage-b-test-2-gpu-large-amd,')) ||
(
!(inputs.target_stage || inputs.target_stage_select) &&
(!failure() && !cancelled()) &&
@@ -521,7 +521,7 @@ jobs:
- name: Run test
timeout-minutes: 30
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-large-2-gpu-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 2 --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-b-test-2-gpu-large-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 2 --timeout-per-file 1800 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
multimodal-gen-test-1-gpu-amd:
needs: [check-changes]
@@ -779,7 +779,7 @@ jobs:
stage-c-test-large-8-gpu-amd:
needs: [check-changes, call-gate, stage-b-test-small-1-gpu-amd, stage-b-test-large-2-gpu-amd]
needs: [check-changes, call-gate, stage-b-test-1-gpu-small-amd, stage-b-test-2-gpu-large-amd]
if: |
always() &&
(
@@ -827,7 +827,7 @@ jobs:
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" python3 run_suite.py --hw amd --suite stage-c-test-large-8-gpu-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 3 --timeout-per-file 3600 ${{ inputs.continue_on_error && '--continue-on-error' || '' }}
stage-c-test-large-8-gpu-amd-mi35x:
needs: [check-changes, call-gate, stage-b-test-small-1-gpu-amd, stage-b-test-large-2-gpu-amd]
needs: [check-changes, call-gate, stage-b-test-1-gpu-small-amd, stage-b-test-2-gpu-large-amd]
if: |
always() &&
(
@@ -868,7 +868,7 @@ jobs:
# =============================================== Disaggregation ====================================================
stage-b-test-large-8-gpu-35x-disaggregation-amd:
needs: [check-changes, stage-a-test-small-1-gpu-amd]
needs: [check-changes, stage-a-test-1-gpu-small-amd]
if: |
always() &&
(
@@ -989,13 +989,13 @@ jobs:
multimodal-gen-test-1-gpu-amd,
multimodal-gen-test-2-gpu-amd,
stage-a-test-small-1-gpu-amd,
stage-a-test-1-gpu-small-amd,
jit-kernel-unit-test-amd,
stage-b-test-small-1-gpu-amd,
stage-b-test-small-1-gpu-amd-nondeterministic,
stage-b-test-small-1-gpu-amd-mi35x,
stage-b-test-large-1-gpu-amd,
stage-b-test-large-2-gpu-amd,
stage-b-test-1-gpu-small-amd,
stage-b-test-1-gpu-small-amd-nondeterministic,
stage-b-test-1-gpu-small-amd-mi35x,
stage-b-test-1-gpu-large-amd,
stage-b-test-2-gpu-large-amd,
stage-b-test-large-8-gpu-35x-disaggregation-amd,
stage-c-test-large-8-gpu-amd,
stage-c-test-large-8-gpu-amd-mi35x,
+28 -28
View File
@@ -345,7 +345,7 @@ jobs:
id: wait
with:
stage-name: stage-a
jobs: '["stage-a-test-small-1-gpu", "stage-a-cpu-only"]'
jobs: '["stage-a-test-1-gpu-small", "stage-a-test-cpu"]'
max-wait-minutes: '240'
wait-for-stage-b:
@@ -377,9 +377,9 @@ jobs:
stage-name: stage-b
jobs: |
[
{"prefix": "stage-b-test-small-1-gpu", "expected_count": 8},
{"prefix": "stage-b-test-large-1-gpu", "expected_count": 14},
{"prefix": "stage-b-test-large-2-gpu", "expected_count": 4},
{"prefix": "stage-b-test-1-gpu-small", "expected_count": 8},
{"prefix": "stage-b-test-1-gpu-large", "expected_count": 14},
{"prefix": "stage-b-test-2-gpu-large", "expected_count": 4},
{"prefix": "stage-b-test-4-gpu-b200", "expected_count": 1}
]
max-wait-minutes: '480'
@@ -833,12 +833,12 @@ jobs:
# =============================================== primary ====================================================
# Runs on 5090 (32GB, SM120)
stage-a-test-small-1-gpu:
stage-a-test-1-gpu-small:
needs: [check-changes, call-gate, sgl-kernel-build-wheels]
if: |
always() &&
(
(inputs.target_stage == 'stage-a-test-small-1-gpu') ||
(inputs.target_stage == 'stage-a-test-1-gpu-small') ||
(
!inputs.target_stage &&
((github.event_name == 'schedule' || inputs.test_parallel_dispatch == true) || (!failure() && !cancelled())) &&
@@ -876,17 +876,17 @@ jobs:
CONTINUE_ON_ERROR_FLAG: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
run: |
cd test/
python3 run_suite.py --hw cuda --suite stage-a-test-small-1-gpu $CONTINUE_ON_ERROR_FLAG
python3 run_suite.py --hw cuda --suite stage-a-test-1-gpu-small $CONTINUE_ON_ERROR_FLAG
- uses: ./.github/actions/upload-cuda-coredumps
if: always()
stage-a-cpu-only:
stage-a-test-cpu:
needs: [check-changes, call-gate]
if: |
always() &&
(
(inputs.target_stage == 'stage-a-cpu-only') ||
(inputs.target_stage == 'stage-a-test-cpu') ||
(
!inputs.target_stage &&
((github.event_name == 'schedule' || inputs.test_parallel_dispatch == true) || (!failure() && !cancelled())) &&
@@ -932,15 +932,15 @@ jobs:
CONTINUE_ON_ERROR_FLAG: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
run: |
cd test/
python3 run_suite.py --hw cpu --suite stage-a-cpu-only $CONTINUE_ON_ERROR_FLAG
python3 run_suite.py --hw cpu --suite stage-a-test-cpu $CONTINUE_ON_ERROR_FLAG
# Runs on 5090 (32GB, SM120)
stage-b-test-small-1-gpu:
stage-b-test-1-gpu-small:
needs: [check-changes, call-gate, wait-for-stage-a, sgl-kernel-build-wheels]
if: |
always() &&
(
(inputs.target_stage == 'stage-b-test-small-1-gpu') ||
(inputs.target_stage == 'stage-b-test-1-gpu-small') ||
(
!inputs.target_stage &&
((github.event_name == 'schedule' || inputs.test_parallel_dispatch == true) || (!failure() && !cancelled())) &&
@@ -988,7 +988,7 @@ jobs:
run: |
source /etc/profile.d/sglang-ci.sh
cd test/
python3 run_suite.py --hw cuda --suite stage-b-test-small-1-gpu --auto-partition-id ${{ matrix.partition }} --auto-partition-size 8 $CONTINUE_ON_ERROR_FLAG
python3 run_suite.py --hw cuda --suite stage-b-test-1-gpu-small --auto-partition-id ${{ matrix.partition }} --auto-partition-size 8 $CONTINUE_ON_ERROR_FLAG
- uses: ./.github/actions/upload-cuda-coredumps
if: always()
@@ -996,12 +996,12 @@ jobs:
artifact-suffix: ${{ matrix.partition }}
# Runs on H100 (80GB, SM90) - tests that don't pass on 5090 (FA3, FP8, high VRAM, etc.)
stage-b-test-large-1-gpu:
stage-b-test-1-gpu-large:
needs: [check-changes, call-gate, wait-for-stage-a, sgl-kernel-build-wheels]
if: |
always() &&
(
(inputs.target_stage == 'stage-b-test-large-1-gpu') ||
(inputs.target_stage == 'stage-b-test-1-gpu-large') ||
(
!inputs.target_stage &&
((github.event_name == 'schedule' || inputs.test_parallel_dispatch == true) || (!failure() && !cancelled())) &&
@@ -1044,19 +1044,19 @@ jobs:
CONTINUE_ON_ERROR_FLAG: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
run: |
cd test/
python3 run_suite.py --hw cuda --suite stage-b-test-large-1-gpu --auto-partition-id ${{ matrix.partition }} --auto-partition-size 14 --timeout-per-file 1800 $CONTINUE_ON_ERROR_FLAG
python3 run_suite.py --hw cuda --suite stage-b-test-1-gpu-large --auto-partition-id ${{ matrix.partition }} --auto-partition-size 14 --timeout-per-file 1800 $CONTINUE_ON_ERROR_FLAG
- uses: ./.github/actions/upload-cuda-coredumps
if: always()
with:
artifact-suffix: ${{ matrix.partition }}
stage-b-test-large-2-gpu:
stage-b-test-2-gpu-large:
needs: [check-changes, call-gate, wait-for-stage-a, sgl-kernel-build-wheels]
if: |
always() &&
(
(inputs.target_stage == 'stage-b-test-large-2-gpu') ||
(inputs.target_stage == 'stage-b-test-2-gpu-large') ||
(
!inputs.target_stage &&
((github.event_name == 'schedule' || inputs.test_parallel_dispatch == true) || (!failure() && !cancelled())) &&
@@ -1101,7 +1101,7 @@ jobs:
CONTINUE_ON_ERROR_FLAG: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
run: |
cd test/
python3 run_suite.py --hw cuda --suite stage-b-test-large-2-gpu --auto-partition-id ${{ matrix.partition }} --auto-partition-size 4 $CONTINUE_ON_ERROR_FLAG
python3 run_suite.py --hw cuda --suite stage-b-test-2-gpu-large --auto-partition-id ${{ matrix.partition }} --auto-partition-size 4 $CONTINUE_ON_ERROR_FLAG
- uses: ./.github/actions/upload-cuda-coredumps
if: always()
@@ -1502,12 +1502,12 @@ jobs:
with:
artifact-suffix: ${{ matrix.part }}
stage-c-test-deepep-4-gpu:
stage-c-test-deepep-4-gpu-h100:
needs: [check-changes, call-gate, wait-for-stage-b]
if: |
always() &&
(
(inputs.target_stage == 'stage-c-test-deepep-4-gpu') ||
(inputs.target_stage == 'stage-c-test-deepep-4-gpu-h100') ||
(
!inputs.target_stage &&
((github.event_name == 'schedule' || inputs.test_parallel_dispatch == true) || (!failure() && !cancelled())) &&
@@ -1557,7 +1557,7 @@ jobs:
CONTINUE_ON_ERROR_FLAG: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
run: |
cd test
python3 run_suite.py --hw cuda --suite stage-c-test-deepep-4-gpu $CONTINUE_ON_ERROR_FLAG
python3 run_suite.py --hw cuda --suite stage-c-test-deepep-4-gpu-h100 $CONTINUE_ON_ERROR_FLAG
- uses: ./.github/actions/upload-cuda-coredumps
if: always()
@@ -1753,16 +1753,16 @@ jobs:
multimodal-gen-test-1-gpu,
multimodal-gen-test-2-gpu,
stage-a-test-small-1-gpu,
stage-a-cpu-only,
stage-b-test-small-1-gpu,
stage-b-test-large-1-gpu,
stage-b-test-large-2-gpu,
stage-a-test-1-gpu-small,
stage-a-test-cpu,
stage-b-test-1-gpu-small,
stage-b-test-1-gpu-large,
stage-b-test-2-gpu-large,
stage-b-test-4-gpu-b200,
stage-c-test-4-gpu-h100,
stage-c-test-8-gpu-h20,
stage-c-test-8-gpu-h200,
stage-c-test-deepep-4-gpu,
stage-c-test-deepep-4-gpu-h100,
stage-c-test-deepep-8-gpu-h200,
stage-c-test-4-gpu-b200,
# stage-c-test-4-gpu-gb200, # Temporarily disabled — no GB200 runner
@@ -10,7 +10,7 @@ import torch
from sglang.jit_kernel.moe_lora_align import moe_lora_align_block_size
from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci(est_time=80, suite="stage-b-test-large-1-gpu")
register_cuda_ci(est_time=80, suite="stage-b-test-1-gpu-large")
def round_up(x, base):
+19 -19
View File
@@ -253,18 +253,18 @@ def handle_rerun_stage(
# Valid NVIDIA stage names that support target_stage
nvidia_stages = [
"stage-a-test-small-1-gpu",
"stage-a-cpu-only",
"stage-b-test-small-1-gpu",
"stage-b-test-large-1-gpu",
"stage-b-test-large-2-gpu",
"stage-a-test-1-gpu-small",
"stage-a-test-cpu",
"stage-b-test-1-gpu-small",
"stage-b-test-1-gpu-large",
"stage-b-test-2-gpu-large",
"stage-b-test-4-gpu-b200",
"stage-c-test-4-gpu-h100",
"stage-c-test-8-gpu-h200",
"stage-c-test-8-gpu-h20",
"stage-c-test-4-gpu-b200",
"stage-c-test-4-gpu-gb200",
"stage-c-test-deepep-4-gpu",
"stage-c-test-deepep-4-gpu-h100",
"stage-c-test-deepep-8-gpu-h200",
"multimodal-gen-test-1-gpu",
"multimodal-gen-test-2-gpu",
@@ -274,12 +274,12 @@ def handle_rerun_stage(
amd_stages = [
"sgl-kernel-unit-test-amd",
"sgl-kernel-unit-test-2-gpu-amd",
"stage-a-test-small-1-gpu-amd",
"stage-b-test-small-1-gpu-amd",
"stage-b-test-small-1-gpu-amd-nondeterministic",
"stage-b-test-small-1-gpu-amd-mi35x",
"stage-b-test-large-1-gpu-amd",
"stage-b-test-large-2-gpu-amd",
"stage-a-test-1-gpu-small-amd",
"stage-b-test-1-gpu-small-amd",
"stage-b-test-1-gpu-small-amd-nondeterministic",
"stage-b-test-1-gpu-small-amd-mi35x",
"stage-b-test-1-gpu-large-amd",
"stage-b-test-2-gpu-large-amd",
"multimodal-gen-test-1-gpu-amd",
"multimodal-gen-test-2-gpu-amd",
"stage-c-test-large-8-gpu-amd",
@@ -412,23 +412,23 @@ def handle_rerun_stage(
CUDA_SUITE_TO_RUNNER = {
"stage-a-test-small-1-gpu": "1-gpu-5090",
"stage-a-cpu-only": "ubuntu-latest",
"stage-b-test-small-1-gpu": "1-gpu-5090",
"stage-b-test-large-1-gpu": "1-gpu-h100",
"stage-b-test-large-2-gpu": "2-gpu-h100",
"stage-a-test-1-gpu-small": "1-gpu-5090",
"stage-a-test-cpu": "ubuntu-latest",
"stage-b-test-1-gpu-small": "1-gpu-5090",
"stage-b-test-1-gpu-large": "1-gpu-h100",
"stage-b-test-2-gpu-large": "2-gpu-h100",
"stage-b-test-4-gpu-b200": "4-gpu-b200",
"stage-c-test-4-gpu-h100": "4-gpu-h100",
"stage-c-test-8-gpu-h200": "8-gpu-h200",
"stage-c-test-8-gpu-h20": "8-gpu-h20",
"stage-c-test-4-gpu-b200": "4-gpu-b200",
"stage-c-test-deepep-4-gpu": "4-gpu-h100",
"stage-c-test-deepep-4-gpu-h100": "4-gpu-h100",
"stage-c-test-deepep-8-gpu-h200": "8-gpu-h200",
}
DEEPEP_SUITES = {
"stage-c-test-8-gpu-h20",
"stage-c-test-deepep-4-gpu",
"stage-c-test-deepep-4-gpu-h100",
"stage-c-test-deepep-8-gpu-h200",
}
+19 -19
View File
@@ -47,23 +47,23 @@ from sglang.test.ci.ci_register import (
)
# Per-commit test (small 1-gpu, runs on 5090)
register_cuda_ci(est_time=80, suite="stage-b-test-small-1-gpu")
register_cuda_ci(est_time=80, suite="stage-b-test-1-gpu-small")
# Per-commit test (large 1-gpu, runs on H100)
register_cuda_ci(est_time=120, suite="stage-b-test-large-1-gpu")
register_cuda_ci(est_time=120, suite="stage-b-test-1-gpu-large")
# Per-commit test (2-gpu)
register_cuda_ci(est_time=200, suite="stage-b-test-large-2-gpu")
register_cuda_ci(est_time=200, suite="stage-b-test-2-gpu-large")
# Nightly-only test
register_cuda_ci(est_time=200, suite="nightly-1-gpu", nightly=True)
# Multi-backend test
register_cuda_ci(est_time=80, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=120, suite="stage-a-test-small-1-gpu-amd")
register_cuda_ci(est_time=80, suite="stage-b-test-1-gpu-small")
register_amd_ci(est_time=120, suite="stage-a-test-1-gpu-small-amd")
# Temporarily disabled test
register_cuda_ci(est_time=80, suite="stage-b-test-small-1-gpu", disabled="flaky - see #12345")
register_cuda_ci(est_time=80, suite="stage-b-test-1-gpu-small", disabled="flaky - see #12345")
```
### Choosing Between 1-GPU Suites (5090 vs H100)
@@ -72,14 +72,14 @@ When adding 1-GPU tests, choose the appropriate suite based on hardware compatib
| Suite | Runner | GPU | When to Use |
|-------|--------|-----|-------------|
| `stage-a-test-small-1-gpu` | `1-gpu-5090` | RTX 5090 (32GB, SM120) | Stage A per-commit smoke on 5090 (CUDA) |
| `stage-a-test-small-1-gpu-amd` | AMD CI runners | ROCm | Stage A per-commit smoke (AMD) |
| `stage-b-test-small-1-gpu` | `1-gpu-5090` | RTX 5090 (32GB, SM120) | 5090-compatible tests (preferred) |
| `stage-b-test-large-1-gpu` | `1-gpu-h100` | H100 (80GB, SM90) | Large models or 5090-incompatible tests |
| `stage-a-test-1-gpu-small` | `1-gpu-5090` | RTX 5090 (32GB, SM120) | Stage A per-commit smoke on 5090 (CUDA) |
| `stage-a-test-1-gpu-small-amd` | AMD CI runners | ROCm | Stage A per-commit smoke (AMD) |
| `stage-b-test-1-gpu-small` | `1-gpu-5090` | RTX 5090 (32GB, SM120) | 5090-compatible tests (preferred) |
| `stage-b-test-1-gpu-large` | `1-gpu-h100` | H100 (80GB, SM90) | Large models or 5090-incompatible tests |
**Use `stage-b-test-small-1-gpu` (5090) whenever possible** - this is the preferred suite for most 1-GPU tests.
**Use `stage-b-test-1-gpu-small` (5090) whenever possible** - this is the preferred suite for most 1-GPU tests.
**Use `stage-b-test-large-1-gpu` (H100) if ANY of these apply:**
**Use `stage-b-test-1-gpu-large` (H100) if ANY of these apply:**
1. **Architecture incompatibility (SM120/Blackwell)**:
- FA3 attention backend (requires SM≤90)
@@ -95,18 +95,18 @@ When adding 1-GPU tests, choose the appropriate suite based on hardware compatib
- Weight update/sync tests
- Certain spec decoding tests
If a test cannot run on 5090 due to any of the above, use `stage-b-test-large-1-gpu` which runs on H100.
If a test cannot run on 5090 due to any of the above, use `stage-b-test-1-gpu-large` which runs on H100.
### Available Suites
**Per-Commit (CUDA)**:
- Stage A: `stage-a-test-small-1-gpu` (5090), `stage-a-test-2`, `stage-a-test-cpu`
- Stage B: `stage-b-test-small-1-gpu` (5090), `stage-b-test-large-1-gpu` (H100), `stage-b-test-large-2-gpu`
- Stage C (4-GPU): `stage-c-test-4-gpu-h100`, `stage-c-test-4-gpu-b200`, `stage-c-test-4-gpu-gb200`, `stage-c-test-deepep-4-gpu`
- Stage A: `stage-a-test-1-gpu-small` (5090), `stage-a-test-2`, `stage-a-test-cpu`
- Stage B: `stage-b-test-1-gpu-small` (5090), `stage-b-test-1-gpu-large` (H100), `stage-b-test-2-gpu-large`
- Stage C (4-GPU): `stage-c-test-4-gpu-h100`, `stage-c-test-4-gpu-b200`, `stage-c-test-4-gpu-gb200`, `stage-c-test-deepep-4-gpu-h100`
- Stage C (8-GPU): `stage-c-test-8-gpu-h20`, `stage-c-test-8-gpu-h200`, `stage-c-test-8-gpu-b200`, `stage-c-test-deepep-8-gpu-h200`
**Per-Commit (AMD)**:
- `stage-a-test-small-1-gpu-amd`, `stage-b-test-small-1-gpu-amd`, `stage-b-test-large-2-gpu-amd`
- `stage-a-test-1-gpu-small-amd`, `stage-b-test-1-gpu-small-amd`, `stage-b-test-2-gpu-large-amd`
**Nightly**:
- `nightly-1-gpu`, `nightly-2-gpu`, `nightly-4-gpu`, `nightly-8-gpu`, etc.
@@ -115,13 +115,13 @@ If a test cannot run on 5090 due to any of the above, use `stage-b-test-large-1-
```bash
# Run per-commit tests
python test/run_suite.py --hw cuda --suite stage-b-test-small-1-gpu
python test/run_suite.py --hw cuda --suite stage-b-test-1-gpu-small
# Run nightly tests
python test/run_suite.py --hw cuda --suite nightly-1-gpu --nightly
# With auto-partitioning (for parallel CI jobs)
python test/run_suite.py --hw cuda --suite stage-b-test-small-1-gpu \
python test/run_suite.py --hw cuda --suite stage-b-test-1-gpu-small \
--auto-partition-id 0 --auto-partition-size 4
```
@@ -212,7 +212,7 @@ class TestDisaggregationAccuracy(PDDisaggregationServerBase):
)
# register_amd_ci(est_time=300, suite="stage-b-test-large-2-gpu-amd")
# register_amd_ci(est_time=300, suite="stage-b-test-2-gpu-large-amd")
class TestDisaggregationMooncakeFailure(PDDisaggregationServerBase):
@classmethod
def setUpClass(cls):
@@ -322,7 +322,7 @@ class TestDisaggregationMooncakeFailure(PDDisaggregationServerBase):
raise e from health_check_error
# register_amd_ci(est_time=300, suite="stage-b-test-large-2-gpu-amd")
# register_amd_ci(est_time=300, suite="stage-b-test-2-gpu-large-amd")
class TestDisaggregationSimulatedRetract(PDDisaggregationServerBase):
@classmethod
def setUpClass(cls):
@@ -8,7 +8,7 @@ from sglang.srt.layers.attention.fla.fused_recurrent import (
)
from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci(est_time=60, suite="stage-b-test-large-1-gpu")
register_cuda_ci(est_time=60, suite="stage-b-test-1-gpu-large")
@unittest.skipIf(not torch.cuda.is_available(), "Test requires CUDA")
@@ -9,8 +9,8 @@ from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.test_utils import CustomTestCase
# Triton kernel unit test for KV indices creation
register_cuda_ci(est_time=10, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=10, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=10, suite="stage-b-test-1-gpu-small")
register_amd_ci(est_time=10, suite="stage-b-test-1-gpu-small-amd")
class TestCreateKvIndices(CustomTestCase):
+1 -1
View File
@@ -20,7 +20,7 @@ from sglang.test.test_utils import (
# FlashAttention3 integration tests (requires SM 90+ / H100)
# Multiple test classes: FA3, FA3+MLA, FA3+SpecDecode variants
register_cuda_ci(est_time=300, suite="stage-b-test-large-1-gpu")
register_cuda_ci(est_time=300, suite="stage-b-test-1-gpu-large")
GSM_DATASET_PATH = None
@@ -20,7 +20,7 @@ from sglang.test.test_utils import (
# Hybrid attention backend tests (FA3 prefill + FlashInfer decode, requires SM 90+ / H100)
# Multiple test classes: base, MLA, TorchCompile, SpecDecode variants
register_cuda_ci(est_time=200, suite="stage-b-test-large-1-gpu")
register_cuda_ci(est_time=200, suite="stage-b-test-1-gpu-large")
GSM_DATASET_PATH = None
@@ -8,7 +8,7 @@ from sglang.srt.layers.attention.fla.fused_sigmoid_gating_recurrent import (
from sglang.srt.layers.attention.fla.kda import fused_kda_gate, fused_recurrent_kda
from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci(est_time=30, suite="stage-b-test-large-1-gpu")
register_cuda_ci(est_time=30, suite="stage-b-test-1-gpu-large")
@unittest.skipIf(not torch.cuda.is_available(), "Test requires CUDA")
@@ -21,7 +21,7 @@ from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.test_utils import CustomTestCase
# Register this test for CUDA CI in stage-b (fast attention/kernel tests)
register_cuda_ci(est_time=25, suite="stage-b-test-large-1-gpu")
register_cuda_ci(est_time=25, suite="stage-b-test-1-gpu-large")
def reference_normal_decode_set_metadata(
@@ -18,8 +18,8 @@ from sglang.test.test_utils import (
)
# Torch native attention backend integration test with MMLU eval
register_cuda_ci(est_time=169, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=150, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=169, suite="stage-b-test-1-gpu-small")
register_amd_ci(est_time=150, suite="stage-b-test-1-gpu-small-amd")
class TestTorchNativeAttnBackend(CustomTestCase):
@@ -20,8 +20,8 @@ from sglang.test.test_utils import (
)
# Triton attention backend integration test with latency benchmark and MMLU eval
register_cuda_ci(est_time=200, suite="stage-b-test-large-1-gpu")
register_amd_ci(est_time=1400, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=200, suite="stage-b-test-1-gpu-large")
register_amd_ci(est_time=1400, suite="stage-b-test-1-gpu-small-amd")
class TestTritonAttnBackend(CustomTestCase):
@@ -23,8 +23,8 @@ from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.test_utils import CustomTestCase, is_in_amd_ci
# Triton attention kernel unit tests (decode, extend, prefill)
register_cuda_ci(est_time=30, suite="stage-b-test-large-1-gpu")
register_amd_ci(est_time=30, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=30, suite="stage-b-test-1-gpu-large")
register_amd_ci(est_time=30, suite="stage-b-test-1-gpu-small-amd")
def extend_attention_fwd_torch(
@@ -16,8 +16,8 @@ from sglang.test.test_utils import (
)
# Sliding window attention with Triton backend (Gemma-3 model)
register_cuda_ci(est_time=100, suite="stage-b-test-large-1-gpu")
register_amd_ci(est_time=200, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=100, suite="stage-b-test-1-gpu-large")
register_amd_ci(est_time=200, suite="stage-b-test-1-gpu-small-amd")
class TestSlidingWindowAttentionTriton(CustomTestCase):
@@ -25,7 +25,7 @@ from sglang.srt.utils import get_device
from sglang.test.ci.ci_register import register_amd_ci
# Wave attention kernel unit tests (AMD only - requires wave_lang)
register_amd_ci(est_time=60, suite="stage-a-test-small-1-gpu-amd")
register_amd_ci(est_time=60, suite="stage-a-test-1-gpu-small-amd")
class TestWaveAttention(unittest.TestCase):
@@ -16,8 +16,8 @@ from sglang.test.test_utils import (
popen_launch_server,
)
register_cuda_ci(est_time=144, suite="stage-b-test-large-1-gpu")
register_amd_ci(est_time=1100, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=144, suite="stage-b-test-1-gpu-large")
register_amd_ci(est_time=1100, suite="stage-b-test-1-gpu-small-amd")
class TestTorchCompile(CustomTestCase):
@@ -26,7 +26,7 @@ from sglang.benchmark.datasets.random import sample_random_requests
from sglang.benchmark.datasets.sharegpt import sample_sharegpt_requests
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=5, suite="stage-a-cpu-only")
register_cpu_ci(est_time=5, suite="stage-a-test-cpu")
class _DummyTokenTensor:
@@ -13,8 +13,8 @@ from sglang.test.test_utils import (
popen_launch_server,
)
register_cuda_ci(est_time=111, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=179, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=111, suite="stage-b-test-1-gpu-small")
register_amd_ci(est_time=179, suite="stage-b-test-1-gpu-small-amd")
class ServerWithGrammar(CustomTestCase):
+2 -2
View File
@@ -16,8 +16,8 @@ from sglang.test.test_deterministic_utils import (
)
from sglang.test.test_utils import is_in_amd_ci
register_cuda_ci(est_time=278, suite="stage-b-test-large-1-gpu")
register_amd_ci(est_time=278, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=278, suite="stage-b-test-1-gpu-large")
register_amd_ci(est_time=278, suite="stage-b-test-1-gpu-small-amd")
@unittest.skipIf(is_in_amd_ci(), "Skip for AMD CI.")
+2 -2
View File
@@ -3,8 +3,8 @@ import unittest
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.gpt_oss_common import BaseTestGptOss
register_cuda_ci(est_time=519, suite="stage-b-test-large-1-gpu")
register_amd_ci(est_time=750, suite="stage-b-test-small-1-gpu-amd-mi35x")
register_cuda_ci(est_time=519, suite="stage-b-test-1-gpu-large")
register_amd_ci(est_time=750, suite="stage-b-test-1-gpu-small-amd-mi35x")
class TestGptOss1Gpu(BaseTestGptOss):
+1 -1
View File
@@ -5,7 +5,7 @@ import torch
from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.gpt_oss_common import BaseTestGptOss
register_cuda_ci(est_time=500, suite="stage-b-test-small-1-gpu")
register_cuda_ci(est_time=500, suite="stage-b-test-1-gpu-small")
@unittest.skipIf(not torch.cuda.is_available(), "CUDA is not available")
+2 -2
View File
@@ -8,8 +8,8 @@ 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.test_utils import DEFAULT_SMALL_MODEL_NAME_FOR_TEST, CustomTestCase
register_cuda_ci(est_time=55, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=55, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=55, suite="stage-b-test-1-gpu-small")
register_amd_ci(est_time=55, suite="stage-b-test-1-gpu-small-amd")
_is_hip = is_hip()
if _is_hip:
+2 -2
View File
@@ -13,8 +13,8 @@ from sglang.test.test_utils import (
popen_launch_server,
)
register_cuda_ci(est_time=60, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=60, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=60, suite="stage-b-test-1-gpu-small")
register_amd_ci(est_time=60, suite="stage-b-test-1-gpu-small-amd")
class TestPageSize(CustomTestCase):
@@ -17,8 +17,8 @@ from sglang.test.test_utils import (
send_generate_requests,
)
register_cuda_ci(est_time=47, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=70, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=47, suite="stage-b-test-1-gpu-small")
register_amd_ci(est_time=70, suite="stage-b-test-1-gpu-small-amd")
class TestMaxQueuedRequests(CustomTestCase):
+1 -1
View File
@@ -7,7 +7,7 @@ from sglang.srt.entrypoints.engine import Engine
from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.test_utils import DEFAULT_SMALL_MODEL_NAME_FOR_TEST, CustomTestCase
register_cuda_ci(est_time=260, suite="stage-b-test-large-1-gpu")
register_cuda_ci(est_time=260, suite="stage-b-test-1-gpu-large")
TEST_MODEL_NAME = DEFAULT_SMALL_MODEL_NAME_FOR_TEST
+2 -2
View File
@@ -27,8 +27,8 @@ from sglang.test.test_utils import (
run_logprob_check,
)
register_cuda_ci(est_time=127, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=130, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=127, suite="stage-b-test-1-gpu-small")
register_amd_ci(est_time=130, suite="stage-b-test-1-gpu-small-amd")
class TestSRTEndpoint(CustomTestCase):
+2 -2
View File
@@ -22,8 +22,8 @@ from sglang.test.test_utils import (
CustomTestCase,
)
register_cuda_ci(est_time=252, suite="stage-b-test-large-1-gpu")
register_amd_ci(est_time=261, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=252, suite="stage-b-test-1-gpu-large")
register_amd_ci(est_time=261, suite="stage-b-test-1-gpu-small-amd")
class TestSRTEngine(CustomTestCase):
@@ -28,7 +28,7 @@ from sglang.srt.debug_utils.comparator.dims_spec import ParallelAxis, TokenLayou
from sglang.srt.debug_utils.comparator.utils import Pair
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=15, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=15, suite="stage-a-test-cpu", nightly=True)
class TestExecuteSubPlans:
@@ -25,7 +25,7 @@ from sglang.srt.debug_utils.comparator.dims_spec import TokenLayout
from sglang.srt.debug_utils.comparator.utils import Pair
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=15, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=15, suite="stage-a-test-cpu", nightly=True)
def _make_meta(
@@ -22,7 +22,7 @@ from sglang.srt.debug_utils.comparator.aligner.unsharder.types import (
from sglang.srt.debug_utils.comparator.dims_spec import ParallelAxis
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
def _zigzag_order(cp_size: int) -> list[int]:
@@ -24,7 +24,7 @@ from sglang.srt.debug_utils.comparator.dims_spec import (
)
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
class TestComputeReordererPlans:
@@ -13,7 +13,7 @@ from sglang.srt.debug_utils.comparator.log_sink import log_sink
from sglang.srt.debug_utils.comparator.utils import Pair
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=15, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=15, suite="stage-a-test-cpu", nightly=True)
class TestComputeAxisAlignerPlan:
@@ -19,7 +19,7 @@ from sglang.srt.debug_utils.comparator.log_sink import LogSink
from sglang.srt.debug_utils.comparator.output_types import ErrorLog, InfoLog
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=15, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=15, suite="stage-a-test-cpu", nightly=True)
_sglang_plugin = _SGLangPlugin()
_megatron_plugin = _MegatronPlugin()
@@ -16,7 +16,7 @@ from sglang.srt.debug_utils.comparator.aligner.token_aligner.smart.types import
from sglang.srt.debug_utils.comparator.dims_spec import TokenLayout
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=15, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=15, suite="stage-a-test-cpu", nightly=True)
_sglang_plugin = _SGLangPlugin()
_megatron_plugin = _MegatronPlugin()
@@ -9,7 +9,7 @@ from sglang.srt.debug_utils.comparator.aligner.token_aligner.concat_steps import
from sglang.srt.debug_utils.comparator.utils import Pair
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=15, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=15, suite="stage-a-test-cpu", nightly=True)
class TestExecuteConcat:
@@ -25,7 +25,7 @@ from sglang.srt.debug_utils.comparator.dims_spec import TokenLayout
from sglang.srt.debug_utils.comparator.utils import Pair
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=15, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=15, suite="stage-a-test-cpu", nightly=True)
def _named(tensor: torch.Tensor, names: list[str]) -> torch.Tensor:
@@ -23,7 +23,7 @@ from sglang.srt.debug_utils.comparator.dims_spec import TokenLayout
from sglang.srt.debug_utils.comparator.utils import Pair
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=30, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=30, suite="stage-a-test-cpu", nightly=True)
class TestBuildTokenIndexSGLangThd:
@@ -14,7 +14,7 @@ from sglang.srt.debug_utils.comparator.aligner.token_aligner.smart.aux_plugins i
)
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=15, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=15, suite="stage-a-test-cpu", nightly=True)
def _save_pt(
@@ -27,7 +27,7 @@ from sglang.srt.debug_utils.comparator.dims_spec import (
from sglang.srt.debug_utils.comparator.output_types import ReplicatedCheckResult
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
def _name_tensors(
@@ -9,7 +9,7 @@ from sglang.srt.debug_utils.comparator.aligner.unsharder.types import AxisInfo
from sglang.srt.debug_utils.comparator.dims_spec import ParallelAxis
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
class TestNormalizeParallelInfo:
@@ -19,7 +19,7 @@ from sglang.srt.debug_utils.comparator.aligner.unsharder.types import (
from sglang.srt.debug_utils.comparator.dims_spec import ParallelAxis, parse_dims
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
class TestComputeUnsharderPlan:
@@ -12,7 +12,7 @@ from sglang.srt.debug_utils.comparator.dims_spec import (
)
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=5, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=5, suite="stage-a-test-cpu", nightly=True)
class TestParseDim:
@@ -15,7 +15,7 @@ from sglang.srt.debug_utils.comparator.dims_spec import (
)
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=5, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=5, suite="stage-a-test-cpu", nightly=True)
class TestSingletonDimUtilFilterOut:
@@ -13,7 +13,7 @@ from sglang.srt.debug_utils.comparator.dims_spec import (
)
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=5, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=5, suite="stage-a-test-cpu", nightly=True)
class TestFindDimIndex:
@@ -9,7 +9,7 @@ from sglang.srt.debug_utils.comparator.dims_spec import (
)
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=5, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=5, suite="stage-a-test-cpu", nightly=True)
class TestDimConstants:
@@ -14,7 +14,7 @@ from sglang.srt.debug_utils.comparator.tensor_comparator.comparator import (
from sglang.srt.debug_utils.comparator.tensor_comparator.types import DiffInfo
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=20, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=20, suite="stage-a-test-cpu", nightly=True)
class TestComputeTensorInfo:
@@ -58,7 +58,7 @@ from sglang.srt.debug_utils.comparator.tensor_comparator.types import (
from sglang.srt.debug_utils.comparator.utils import Pair
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
_DEFAULT_PERCENTILE_LINES: list[str] = [
" [blue]p1 [/] -1.8000 -1.8000 [dim]+0.00e+00[/]",
@@ -21,7 +21,7 @@ from sglang.srt.debug_utils.comparator.tensor_comparator.types import (
)
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
def _make_stats(**overrides) -> TensorStats:
@@ -15,7 +15,7 @@ from sglang.srt.debug_utils.comparator.utils import Pair
from sglang.srt.debug_utils.dump_loader import ValueWithMeta
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=15, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=15, suite="stage-a-test-cpu", nightly=True)
def _save_tensor(
@@ -13,7 +13,7 @@ from sglang.srt.debug_utils.comparator.bundle_matcher import (
from sglang.srt.debug_utils.comparator.utils import Pair
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=15, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=15, suite="stage-a-test-cpu", nightly=True)
def _make_row(
@@ -21,7 +21,7 @@ from sglang.srt.debug_utils.comparator.output_types import (
)
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
def _render_rich(renderable: object) -> str:
@@ -12,7 +12,7 @@ from sglang.srt.debug_utils.comparator.dp_utils import (
from sglang.srt.debug_utils.dump_loader import ValueWithMeta
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=15, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=15, suite="stage-a-test-cpu", nightly=True)
def _make_sglang_meta(
@@ -7,7 +7,7 @@ import torch
from sglang.srt.debug_utils.dump_loader import read_tokenizer_path
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
def _save_pt(
@@ -30,7 +30,7 @@ from sglang.srt.debug_utils.comparator.output_types import (
from sglang.srt.debug_utils.dumper import DumperConfig, _Dumper, _RecomputeStatus
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=30, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=30, suite="stage-a-test-cpu", nightly=True)
_FIXED_EXP_NAME = "my_exp_name"
@@ -11,7 +11,7 @@ from sglang.srt.debug_utils.comparator.output_types import (
from sglang.srt.debug_utils.comparator.report_sink import report_sink
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
def _make_error_log(**overrides) -> ErrorLog:
@@ -23,7 +23,7 @@ import torch
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=60, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=60, suite="stage-a-test-cpu", nightly=True)
_PUBLISH_DIR: Path = Path("/tmp/comparator_manual_verify")
_PNG_MAGIC: bytes = b"\x89PNG"
@@ -16,7 +16,7 @@ from sglang.srt.debug_utils.comparator.meta_overrider import (
)
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
# ───────────────────── Unit: MetaOverrideRule ─────────────────────
@@ -44,7 +44,7 @@ from sglang.srt.debug_utils.comparator.tensor_comparator.types import (
from sglang.srt.debug_utils.comparator.utils import Pair, _check_equal_lengths
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
class TestCheckEqualLengths:
@@ -55,7 +55,7 @@ from sglang.srt.debug_utils.comparator.output_types import (
from sglang.srt.debug_utils.comparator.utils import Pair
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
def _render_rich(renderable: object) -> str:
@@ -15,7 +15,7 @@ from sglang.srt.debug_utils.comparator.tensor_comparator.comparator import (
)
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=30, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=30, suite="stage-a-test-cpu", nightly=True)
_PNG_MAGIC: bytes = b"\x89PNG"
@@ -3,7 +3,7 @@ import pytest
from sglang.srt.debug_utils.comparator.preset import PRESETS, expand_preset
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=5, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=5, suite="stage-a-test-cpu", nightly=True)
class TestExpandPreset:
@@ -17,7 +17,7 @@ from sglang.srt.debug_utils.comparator.utils import (
)
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
class TestCalcRelDiff:
@@ -10,7 +10,7 @@ from sglang.srt.debug_utils.comparator.visualizer.preprocessing import (
)
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=30, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=30, suite="stage-a-test-cpu", nightly=True)
class TestPreprocessTensor:
@@ -12,7 +12,7 @@ from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(
est_time=0,
suite="stage-a-cpu-only",
suite="stage-a-test-cpu",
nightly=True,
disabled="helper module, no tests",
)
@@ -10,7 +10,7 @@ from sglang.srt.debug_utils.source_patcher.code_patcher import (
from sglang.srt.debug_utils.source_patcher.types import EditSpec, PatchSpec
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
SAMPLE_MODULE_NAME = "_source_patcher_test_fixtures.sample_module"
@@ -8,7 +8,7 @@ import yaml
from sglang.srt.debug_utils.dumper import DumperConfig, _Dumper
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
SAMPLE_MODULE_NAME = "_source_patcher_test_fixtures.sample_module"
@@ -5,7 +5,7 @@ from sglang.srt.debug_utils.source_patcher.source_editor import apply_edits
from sglang.srt.debug_utils.source_patcher.types import EditSpec, PatchApplicationError
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=10, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=10, suite="stage-a-test-cpu", nightly=True)
class TestApplyEdits:
@@ -12,7 +12,7 @@ from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci(
est_time=10,
suite="stage-a-test-small-1-gpu",
suite="stage-a-test-1-gpu-small",
disabled="Manual only: triggers intentional CUDA crash for coredump verification",
)
@@ -14,7 +14,7 @@ from sglang.srt.debug_utils.dump_comparator import (
from sglang.srt.debug_utils.dumper import DumperConfig, _Dumper
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=30, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=30, suite="stage-a-test-cpu", nightly=True)
# ----------------------------- Unit tests -----------------------------
@@ -15,7 +15,7 @@ from sglang.srt.debug_utils.dump_loader import (
)
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=30, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=30, suite="stage-a-test-cpu", nightly=True)
class TestReadMeta:
@@ -25,7 +25,7 @@ from sglang.srt.debug_utils.schedule_simulator import (
from sglang.test.ci.ci_register import register_cpu_ci
from sglang.test.test_utils import CustomTestCase
register_cpu_ci(est_time=120, suite="stage-a-cpu-only", nightly=True)
register_cpu_ci(est_time=120, suite="stage-a-test-cpu", nightly=True)
# ==================== Non-E2E Tests ====================
@@ -19,12 +19,12 @@ from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
register_cuda_ci(
est_time=9,
suite="stage-b-test-small-1-gpu",
suite="stage-b-test-1-gpu-small",
disabled="Test uses pytest-style function without TestCase class - see #17145",
)
register_amd_ci(
est_time=15,
suite="stage-b-test-small-1-gpu-amd",
suite="stage-b-test-1-gpu-small-amd",
disabled="Test uses pytest-style function without TestCase class - see #17145",
)
@@ -20,7 +20,7 @@ from sglang.test.test_utils import (
popen_launch_pd_server,
)
register_cuda_ci(est_time=400, suite="stage-b-test-large-2-gpu")
register_cuda_ci(est_time=400, suite="stage-b-test-2-gpu-large")
class TestDisaggregationAccuracy(PDDisaggregationServerBase):
@@ -18,7 +18,7 @@ from sglang.test.test_utils import (
# Registering the test for CUDA CI with appropriate parameters
# Increasing estimated time since we run evaluation twice
register_cuda_ci(est_time=600, suite="stage-b-test-large-2-gpu")
register_cuda_ci(est_time=600, suite="stage-b-test-2-gpu-large")
@unittest.skipIf(is_in_ci(), "Temporarily disable the flaky test.")
@@ -17,7 +17,7 @@ from sglang.srt.disaggregation.decode_kvcache_offload_manager import (
)
from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci(est_time=10, suite="stage-b-test-small-1-gpu")
register_cuda_ci(est_time=10, suite="stage-b-test-1-gpu-small")
def _make_mock_req(
@@ -15,8 +15,8 @@ from sglang.test.test_utils import (
popen_launch_server,
)
register_cuda_ci(est_time=73, suite="stage-b-test-large-2-gpu")
register_amd_ci(est_time=73, suite="stage-b-test-large-2-gpu-amd")
register_cuda_ci(est_time=73, suite="stage-b-test-2-gpu-large")
register_amd_ci(est_time=73, suite="stage-b-test-2-gpu-large-amd")
class TestDataParallelism(CustomTestCase):
@@ -25,7 +25,7 @@ from sglang.test.test_utils import (
popen_launch_server,
)
register_cuda_ci(est_time=350, suite="stage-b-test-large-2-gpu")
register_cuda_ci(est_time=350, suite="stage-b-test-2-gpu-large")
class TestDPAttentionDP2TP2(
@@ -38,8 +38,8 @@ from sglang.utils import terminate_process
mp.set_start_method("spawn", force=True)
register_cuda_ci(est_time=72, suite="stage-b-test-large-2-gpu")
register_amd_ci(est_time=72, suite="stage-b-test-large-2-gpu-amd")
register_cuda_ci(est_time=72, suite="stage-b-test-2-gpu-large")
register_amd_ci(est_time=72, suite="stage-b-test-2-gpu-large-amd")
def verify_params_close(params1, params2, error_msg):
@@ -43,7 +43,7 @@ import pytest
from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci(est_time=5, suite="stage-b-test-small-1-gpu")
register_cuda_ci(est_time=5, suite="stage-b-test-1-gpu-small")
# Import the actual parallel_state module
parallel_state = pytest.importorskip("sglang.srt.distributed.parallel_state")
+2 -2
View File
@@ -1,7 +1,7 @@
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
register_cuda_ci(est_time=181, suite="stage-b-test-large-1-gpu")
register_amd_ci(est_time=330, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=181, suite="stage-b-test-1-gpu-large")
register_amd_ci(est_time=330, suite="stage-b-test-1-gpu-small-amd")
import unittest
from types import SimpleNamespace
+1 -1
View File
@@ -20,7 +20,7 @@ from sglang.test.test_utils import (
write_github_step_summary,
)
register_amd_ci(est_time=1000, suite="stage-b-test-small-1-gpu-amd")
register_amd_ci(est_time=1000, suite="stage-b-test-1-gpu-small-amd")
class TestLLaDA2MiniAMD(CustomTestCase):
@@ -32,10 +32,10 @@ from sglang.test.test_utils import (
# Embedding model tests
register_amd_ci(
est_time=73,
suite="stage-b-test-small-1-gpu-amd",
suite="stage-b-test-1-gpu-small-amd",
disabled="see https://github.com/sgl-project/sglang/issues/11127",
)
register_cuda_ci(est_time=73, suite="stage-b-test-small-1-gpu")
register_cuda_ci(est_time=73, suite="stage-b-test-1-gpu-small")
MODEL_TO_CONFIG = {
"Alibaba-NLP/gte-Qwen2-1.5B-instruct": (1, 1e-5),
@@ -29,7 +29,7 @@ from sglang.test.test_utils import CustomTestCase, get_similarities, is_in_ci
# python -m unittest test_encoder_embedding_models.TestEncoderEmbeddingModels.test_prefill_logits
register_cuda_ci(est_time=270, suite="stage-b-test-small-1-gpu")
register_cuda_ci(est_time=270, suite="stage-b-test-1-gpu-small")
MODELS = [("BAAI/bge-small-en", 1, 1e-5), ("BAAI/bge-m3", 1, 1e-5)]
@@ -16,8 +16,8 @@ from sglang.test.test_utils import (
popen_launch_server,
)
register_cuda_ci(est_time=38, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=38, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=38, suite="stage-b-test-1-gpu-small")
register_amd_ci(est_time=38, suite="stage-b-test-1-gpu-small-amd")
class TestInputEmbeds(CustomTestCase):
@@ -30,7 +30,7 @@ from sglang.test.test_utils import (
popen_launch_server,
)
register_cuda_ci(est_time=45, suite="stage-b-test-small-1-gpu")
register_cuda_ci(est_time=45, suite="stage-b-test-1-gpu-small")
CHUNKED_PREFILL_SIZE = 256
@@ -13,8 +13,8 @@ from sglang.test.test_utils import (
popen_launch_server,
)
register_cuda_ci(est_time=70, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=141, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=70, suite="stage-b-test-1-gpu-small")
register_amd_ci(est_time=141, suite="stage-b-test-1-gpu-small-amd")
class TestOpenAIEmbedding(CustomTestCase):
+1 -1
View File
@@ -16,7 +16,7 @@ from sglang.test.test_utils import (
popen_launch_server,
)
register_cuda_ci(est_time=531, suite="stage-c-test-deepep-4-gpu")
register_cuda_ci(est_time=531, suite="stage-c-test-deepep-4-gpu-h100")
class TestPureDP(CustomTestCase):
+1 -1
View File
@@ -15,7 +15,7 @@ from sglang.test.test_utils import (
popen_launch_server,
)
register_cuda_ci(est_time=660, suite="stage-c-test-deepep-4-gpu")
register_cuda_ci(est_time=660, suite="stage-c-test-deepep-4-gpu-h100")
ib_devices = get_rdma_devices_args()
@@ -20,8 +20,8 @@ from sglang.test.test_utils import (
write_github_step_summary,
)
register_cuda_ci(est_time=300, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=420, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=300, suite="stage-b-test-1-gpu-small")
register_amd_ci(est_time=420, suite="stage-b-test-1-gpu-small-amd")
class TestEvalAccuracyLarge(CustomTestCase):
@@ -21,8 +21,8 @@ from sglang.test.test_utils import (
write_github_step_summary,
)
register_cuda_ci(est_time=500, suite="stage-b-test-large-2-gpu")
register_amd_ci(est_time=500, suite="stage-b-test-large-2-gpu-amd")
register_cuda_ci(est_time=500, suite="stage-b-test-2-gpu-large")
register_amd_ci(est_time=500, suite="stage-b-test-2-gpu-large-amd")
class TestMoEEvalAccuracyLarge(CustomTestCase):
@@ -11,7 +11,7 @@ from sglang.srt.function_call.kimik2_detector import (
from sglang.srt.parser.reasoning_parser import KimiK2Detector as KimiK2ReasoningDetector
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(1.0, "stage-a-cpu-only")
register_cpu_ci(1.0, "stage-a-test-cpu")
def _make_tool(name, parameters=None):
@@ -1,7 +1,7 @@
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
register_cuda_ci(est_time=96, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=300, suite="stage-b-test-small-1-gpu-amd")
register_cuda_ci(est_time=96, suite="stage-b-test-1-gpu-small")
register_amd_ci(est_time=300, suite="stage-b-test-1-gpu-small-amd")
import time
import unittest
@@ -13,8 +13,8 @@ from test_hicache_storage_file_backend import HiCacheStorageBaseMixin
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.test_utils import CustomTestCase
register_cuda_ci(est_time=200, suite="stage-b-test-large-2-gpu")
register_amd_ci(est_time=300, suite="stage-b-test-large-2-gpu")
register_cuda_ci(est_time=200, suite="stage-b-test-2-gpu-large")
register_amd_ci(est_time=300, suite="stage-b-test-2-gpu-large")
class HiCacheStorage3FSBackendBaseMixin(HiCacheStorageBaseMixin):
@@ -32,8 +32,8 @@ from sglang.test.test_utils import (
)
from sglang.utils import wait_for_http_ready
register_cuda_ci(est_time=200, suite="stage-b-test-large-2-gpu")
register_amd_ci(est_time=526, suite="stage-b-test-large-2-gpu-amd")
register_cuda_ci(est_time=200, suite="stage-b-test-2-gpu-large")
register_amd_ci(est_time=526, suite="stage-b-test-2-gpu-large-amd")
class HiCacheStorageBaseMixin:
@@ -20,7 +20,7 @@ from sglang.test.test_utils import (
is_in_ci,
)
register_cuda_ci(est_time=300, suite="stage-b-test-large-2-gpu")
register_cuda_ci(est_time=300, suite="stage-b-test-2-gpu-large")
class HiCacheStorageMooncakeBackendBaseMixin(HiCacheStorageBaseMixin):

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