[CI] Bundle check-changes outputs + caller inputs into 2 JSON inputs (#25238)
This commit is contained in:
@@ -1,85 +1,63 @@
|
||||
name: PR Test Stage
|
||||
# Reusable workflow that owns one CUDA test stage. Caller (pr-test.yml) passes
|
||||
# (self_name, runner_config, runs_on, partitions, ...) and the
|
||||
# per-commit/target_stage gating + matrix fanout + setup/run/teardown all live
|
||||
# here. Only stage-a-test-cpu still lives inline in pr-test.yml (bespoke
|
||||
# uv pip / protoc / rust-cache install path).
|
||||
# Reusable workflow for one CUDA test stage. Caller pr-test.yml forwards
|
||||
# `check_changes` = toJson(needs.check-changes.outputs) and
|
||||
# `caller_inputs` = toJson(inputs) as bundles. `partitions` is forwarded
|
||||
# separately to keep matrix expressions single-fromJson — its value is itself
|
||||
# a JSON string, so reading it via `check_changes` would need double fromJson,
|
||||
# and matrix can't use step-resolved values. stage-a-test-cpu stays inline in
|
||||
# pr-test.yml (bespoke uv pip / protoc / rust-cache install).
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
self_name:
|
||||
description: 'Caller job key, used for $GITHUB_JOB-style gating + partitions[suite] lookup.'
|
||||
description: 'Caller job key; used for partitions[suite] lookup and target_stage gating.'
|
||||
type: string
|
||||
required: true
|
||||
runner_config:
|
||||
description: 'Looked up in scripts/ci/runner_configs.yml for install script / artifact version / install timeout.'
|
||||
description: 'Key in scripts/ci/runner_configs.yml (install script / artifact version / install timeout).'
|
||||
type: string
|
||||
required: true
|
||||
runs_on:
|
||||
description: 'Physical GHA runner label, e.g. "1-gpu-5090" or the b200_runner output from check-changes for B200 stages.'
|
||||
description: 'GHA runner label. B200 stages pass needs.check-changes.outputs.b200_runner for dynamic selection.'
|
||||
type: string
|
||||
required: true
|
||||
target_stage:
|
||||
description: 'Forwarded from pr-test.yml inputs.target_stage (used by /rerun-stage to skip everything except the targeted stage).'
|
||||
check_changes:
|
||||
description: 'toJson(needs.check-changes.outputs). Read via fromJson(...).main_package / sgl_kernel / continue_on_error etc.'
|
||||
type: string
|
||||
default: ''
|
||||
test_parallel_dispatch:
|
||||
description: 'Forwarded from pr-test.yml inputs.test_parallel_dispatch.'
|
||||
required: true
|
||||
caller_inputs:
|
||||
description: 'toJson(inputs) from pr-test.yml. Read via fromJson(...).target_stage / pr_head_sha / git_ref / skip_stage_health_check / test_parallel_dispatch.'
|
||||
type: string
|
||||
default: 'false'
|
||||
required: true
|
||||
partitions:
|
||||
description: 'JSON from check-changes (size, arr, max_parallel per suite).'
|
||||
description: 'check-changes.outputs.partitions raw — kept separate to avoid double-fromJson in matrix expressions.'
|
||||
type: string
|
||||
required: true
|
||||
main_package:
|
||||
description: 'check-changes.outputs.main_package — gates the default per-commit run.'
|
||||
type: string
|
||||
required: true
|
||||
sgl_kernel:
|
||||
description: 'check-changes.outputs.sgl_kernel — both gates the run and forwarded to the install/download steps.'
|
||||
type: string
|
||||
required: true
|
||||
continue_on_error_flag:
|
||||
description: 'Empty or `--continue-on-error`; forwarded to run_suite.py.'
|
||||
type: string
|
||||
default: ''
|
||||
run_timeout_minutes:
|
||||
description: 'Per-suite wall-clock cap (minutes), enforced via bash `timeout` around run_suite.py.'
|
||||
description: 'timeout-minutes for the Run test step.'
|
||||
type: string
|
||||
default: '30'
|
||||
timeout_per_file:
|
||||
description: 'Optional run_suite.py --timeout-per-file value.'
|
||||
description: 'run_suite.py --timeout-per-file value (empty = unset).'
|
||||
type: string
|
||||
default: ''
|
||||
warmup_deep_gemm_models:
|
||||
description: 'Space-separated `model:gpus` list. Empty = skip DeepGEMM warmup.'
|
||||
description: 'Space-separated `model:gpus` list; empty skips DeepGEMM warmup.'
|
||||
type: string
|
||||
default: ''
|
||||
warmup_server_models:
|
||||
description: 'Space-separated `model:gpus` list. Empty = skip server-CUDA-graph warmup.'
|
||||
description: 'Space-separated `model:gpus` list; empty skips server-CUDA-graph warmup.'
|
||||
type: string
|
||||
default: ''
|
||||
warmup_timeout_minutes:
|
||||
description: 'Wall-clock cap for each warmup step (DeepGEMM + server). Default 25min; bump for stages with large cold-cache warmup model lists.'
|
||||
description: 'timeout-minutes for each warmup step. Bump for stages with large cold-cache model lists.'
|
||||
type: string
|
||||
default: '25'
|
||||
extra_pytest_path:
|
||||
description: 'Optional pytest path to run after the suite (stage-b-test-4-gpu-b200 uses this for FA4 jit_kernel tests). Empty = skip.'
|
||||
description: 'pytest path to run after the suite (b200 FA4 jit_kernel tests). Empty skips.'
|
||||
type: string
|
||||
default: ''
|
||||
pr_head_sha:
|
||||
description: 'Forwarded from pr-test.yml inputs.pr_head_sha (for /rerun-stage on fork PRs).'
|
||||
type: string
|
||||
default: ''
|
||||
git_ref:
|
||||
description: 'Forwarded from pr-test.yml inputs.git_ref (for workflow_call from main).'
|
||||
type: string
|
||||
default: ''
|
||||
skip_stage_health_check:
|
||||
description: 'Forwarded from pr-test.yml inputs.skip_stage_health_check (release branch cut bypass).'
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
# Mirror pr-test.yml top-level env. Reusable workflows do NOT inherit caller's
|
||||
# workflow-level env across the workflow_call boundary, so anything pr-test.yml
|
||||
@@ -88,32 +66,30 @@ env:
|
||||
SGLANG_IS_IN_CI: true
|
||||
SGLANG_CUDA_COREDUMP: "1"
|
||||
SGLANG_JIT_DEEPGEMM_FAST_WARMUP: true
|
||||
SKIP_STAGE_HEALTH_CHECK: ${{ inputs.skip_stage_health_check && 'true' || 'false' }}
|
||||
SKIP_STAGE_HEALTH_CHECK: ${{ fromJson(inputs.caller_inputs).skip_stage_health_check && 'true' || 'false' }}
|
||||
FORCE_REBUILD_DEEPEP: '1'
|
||||
PR_TEST_BYPASS_MAINTENANCE_ON_MAIN: ${{ github.ref == 'refs/heads/main' && 'true' || 'false' }}
|
||||
USE_VENV: false
|
||||
|
||||
jobs:
|
||||
run:
|
||||
# Mirror the inline gating that used to live in pr-test.yml on every CUDA
|
||||
# stage job. target_stage takes precedence; otherwise default per-commit
|
||||
# gating runs the stage on schedule / parallel-dispatch / non-failed PR
|
||||
# with main_package or sgl_kernel changes.
|
||||
# target_stage takes precedence; otherwise default per-commit gating
|
||||
# runs on schedule / parallel-dispatch / non-failed PR with main_package
|
||||
# or sgl_kernel changes.
|
||||
if: |
|
||||
always() &&
|
||||
(
|
||||
(inputs.target_stage == inputs.self_name) ||
|
||||
(fromJson(inputs.caller_inputs).target_stage == inputs.self_name) ||
|
||||
(
|
||||
!inputs.target_stage &&
|
||||
((github.event_name == 'schedule' || inputs.test_parallel_dispatch == 'true') || (!failure() && !cancelled())) &&
|
||||
(inputs.main_package == 'true' || inputs.sgl_kernel == 'true')
|
||||
!fromJson(inputs.caller_inputs).target_stage &&
|
||||
((github.event_name == 'schedule' || fromJson(inputs.caller_inputs).test_parallel_dispatch == true) || (!failure() && !cancelled())) &&
|
||||
(fromJson(inputs.check_changes).main_package == 'true' || fromJson(inputs.check_changes).sgl_kernel == 'true')
|
||||
)
|
||||
)
|
||||
runs-on: ${{ inputs.runs_on }}
|
||||
timeout-minutes: 240
|
||||
env:
|
||||
# Only stage-c-test-8-gpu-h20 needs the RDMA device list. Empty for
|
||||
# everyone else (env var unset, harmless).
|
||||
# Only stage-c-test-8-gpu-h20 needs the RDMA device list.
|
||||
SGLANG_CI_RDMA_ALL_DEVICES: ${{ inputs.runner_config == '8-gpu-h20' && 'mlx5_1,mlx5_2,mlx5_3,mlx5_4' || '' }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@@ -123,7 +99,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ inputs.pr_head_sha || inputs.git_ref || github.sha }}
|
||||
ref: ${{ fromJson(inputs.caller_inputs).pr_head_sha || fromJson(inputs.caller_inputs).git_ref || github.sha }}
|
||||
|
||||
- name: Resolve runner_config
|
||||
id: rc
|
||||
@@ -134,7 +110,7 @@ jobs:
|
||||
- uses: ./.github/actions/check-maintenance
|
||||
|
||||
- name: Download artifacts (v4)
|
||||
if: ${{ inputs.sgl_kernel == 'true' && steps.rc.outputs.artifact_version == 'v4' }}
|
||||
if: ${{ fromJson(inputs.check_changes).sgl_kernel == 'true' && steps.rc.outputs.artifact_version == 'v4' }}
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: sgl-kernel/dist/
|
||||
@@ -142,7 +118,7 @@ jobs:
|
||||
pattern: wheel-python3.10-cuda*
|
||||
|
||||
- name: Download artifacts (v6)
|
||||
if: ${{ inputs.sgl_kernel == 'true' && steps.rc.outputs.artifact_version == 'v6' }}
|
||||
if: ${{ fromJson(inputs.check_changes).sgl_kernel == 'true' && steps.rc.outputs.artifact_version == 'v6' }}
|
||||
uses: actions/download-artifact@v6
|
||||
with:
|
||||
path: sgl-kernel/dist/
|
||||
@@ -152,7 +128,7 @@ jobs:
|
||||
- name: Install dependencies
|
||||
timeout-minutes: ${{ fromJson(steps.rc.outputs.install_timeout) }}
|
||||
run: |
|
||||
CUSTOM_BUILD_SGL_KERNEL=${{ inputs.sgl_kernel }} bash ${{ steps.rc.outputs.install }}
|
||||
CUSTOM_BUILD_SGL_KERNEL=${{ fromJson(inputs.check_changes).sgl_kernel }} bash ${{ steps.rc.outputs.install }}
|
||||
|
||||
- name: Warmup DeepGEMM JIT Compilation
|
||||
if: inputs.warmup_deep_gemm_models != ''
|
||||
@@ -174,7 +150,7 @@ jobs:
|
||||
- name: Run test
|
||||
timeout-minutes: ${{ fromJson(inputs.run_timeout_minutes) }}
|
||||
env:
|
||||
CONTINUE_ON_ERROR_FLAG: ${{ inputs.continue_on_error_flag }}
|
||||
CONTINUE_ON_ERROR_FLAG: ${{ fromJson(inputs.check_changes).continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
run: |
|
||||
cd test
|
||||
python3 run_suite.py --hw cuda --suite ${{ inputs.self_name }} \
|
||||
|
||||
+26
-104
@@ -283,16 +283,10 @@ jobs:
|
||||
self_name: stage-a-test-1-gpu-small
|
||||
runner_config: 1-gpu-small
|
||||
runs_on: 1-gpu-5090
|
||||
target_stage: ${{ inputs.target_stage || '' }}
|
||||
test_parallel_dispatch: ${{ inputs.test_parallel_dispatch == true && 'true' || 'false' }}
|
||||
check_changes: ${{ toJson(needs.check-changes.outputs) }}
|
||||
caller_inputs: ${{ toJson(inputs) }}
|
||||
partitions: ${{ needs.check-changes.outputs.partitions }}
|
||||
main_package: ${{ needs.check-changes.outputs.main_package }}
|
||||
sgl_kernel: ${{ needs.check-changes.outputs.sgl_kernel }}
|
||||
continue_on_error_flag: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
run_timeout_minutes: '10'
|
||||
pr_head_sha: ${{ inputs.pr_head_sha || '' }}
|
||||
git_ref: ${{ inputs.git_ref || '' }}
|
||||
skip_stage_health_check: ${{ inputs.skip_stage_health_check == true }}
|
||||
secrets: inherit
|
||||
|
||||
stage-a-test-cpu:
|
||||
@@ -375,15 +369,9 @@ jobs:
|
||||
self_name: stage-b-test-1-gpu-small
|
||||
runner_config: 1-gpu-small
|
||||
runs_on: 1-gpu-5090
|
||||
target_stage: ${{ inputs.target_stage || '' }}
|
||||
test_parallel_dispatch: ${{ inputs.test_parallel_dispatch == true && 'true' || 'false' }}
|
||||
check_changes: ${{ toJson(needs.check-changes.outputs) }}
|
||||
caller_inputs: ${{ toJson(inputs) }}
|
||||
partitions: ${{ needs.check-changes.outputs.partitions }}
|
||||
main_package: ${{ needs.check-changes.outputs.main_package }}
|
||||
sgl_kernel: ${{ needs.check-changes.outputs.sgl_kernel }}
|
||||
continue_on_error_flag: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
pr_head_sha: ${{ inputs.pr_head_sha || '' }}
|
||||
git_ref: ${{ inputs.git_ref || '' }}
|
||||
skip_stage_health_check: ${{ inputs.skip_stage_health_check == true }}
|
||||
secrets: inherit
|
||||
|
||||
# Runs on H100 (80GB, SM90) - tests that don't pass on 5090 (FA3, FP8, high VRAM, etc.)
|
||||
@@ -395,16 +383,10 @@ jobs:
|
||||
self_name: stage-b-test-1-gpu-large
|
||||
runner_config: 1-gpu-large
|
||||
runs_on: 1-gpu-h100
|
||||
target_stage: ${{ inputs.target_stage || '' }}
|
||||
test_parallel_dispatch: ${{ inputs.test_parallel_dispatch == true && 'true' || 'false' }}
|
||||
check_changes: ${{ toJson(needs.check-changes.outputs) }}
|
||||
caller_inputs: ${{ toJson(inputs) }}
|
||||
partitions: ${{ needs.check-changes.outputs.partitions }}
|
||||
main_package: ${{ needs.check-changes.outputs.main_package }}
|
||||
sgl_kernel: ${{ needs.check-changes.outputs.sgl_kernel }}
|
||||
continue_on_error_flag: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
timeout_per_file: '1800'
|
||||
pr_head_sha: ${{ inputs.pr_head_sha || '' }}
|
||||
git_ref: ${{ inputs.git_ref || '' }}
|
||||
skip_stage_health_check: ${{ inputs.skip_stage_health_check == true }}
|
||||
secrets: inherit
|
||||
|
||||
stage-b-test-2-gpu-large:
|
||||
@@ -415,15 +397,9 @@ jobs:
|
||||
self_name: stage-b-test-2-gpu-large
|
||||
runner_config: 2-gpu-large
|
||||
runs_on: 2-gpu-h100
|
||||
target_stage: ${{ inputs.target_stage || '' }}
|
||||
test_parallel_dispatch: ${{ inputs.test_parallel_dispatch == true && 'true' || 'false' }}
|
||||
check_changes: ${{ toJson(needs.check-changes.outputs) }}
|
||||
caller_inputs: ${{ toJson(inputs) }}
|
||||
partitions: ${{ needs.check-changes.outputs.partitions }}
|
||||
main_package: ${{ needs.check-changes.outputs.main_package }}
|
||||
sgl_kernel: ${{ needs.check-changes.outputs.sgl_kernel }}
|
||||
continue_on_error_flag: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
pr_head_sha: ${{ inputs.pr_head_sha || '' }}
|
||||
git_ref: ${{ inputs.git_ref || '' }}
|
||||
skip_stage_health_check: ${{ inputs.skip_stage_health_check == true }}
|
||||
secrets: inherit
|
||||
|
||||
stage-b-test-4-gpu-b200:
|
||||
@@ -434,17 +410,11 @@ jobs:
|
||||
self_name: stage-b-test-4-gpu-b200
|
||||
runner_config: 4-gpu-b200
|
||||
runs_on: ${{ needs.check-changes.outputs.b200_runner }}
|
||||
target_stage: ${{ inputs.target_stage || '' }}
|
||||
test_parallel_dispatch: ${{ inputs.test_parallel_dispatch == true && 'true' || 'false' }}
|
||||
check_changes: ${{ toJson(needs.check-changes.outputs) }}
|
||||
caller_inputs: ${{ toJson(inputs) }}
|
||||
partitions: ${{ needs.check-changes.outputs.partitions }}
|
||||
main_package: ${{ needs.check-changes.outputs.main_package }}
|
||||
sgl_kernel: ${{ needs.check-changes.outputs.sgl_kernel }}
|
||||
continue_on_error_flag: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
run_timeout_minutes: '40'
|
||||
extra_pytest_path: 'python/sglang/jit_kernel/tests/test_flash_attention_4.py'
|
||||
pr_head_sha: ${{ inputs.pr_head_sha || '' }}
|
||||
git_ref: ${{ inputs.git_ref || '' }}
|
||||
skip_stage_health_check: ${{ inputs.skip_stage_health_check == true }}
|
||||
secrets: inherit
|
||||
|
||||
call-multimodal-gen-tests:
|
||||
@@ -488,15 +458,9 @@ jobs:
|
||||
self_name: stage-c-test-4-gpu-h100
|
||||
runner_config: 4-gpu-h100
|
||||
runs_on: 4-gpu-h100
|
||||
target_stage: ${{ inputs.target_stage || '' }}
|
||||
test_parallel_dispatch: ${{ inputs.test_parallel_dispatch == true && 'true' || 'false' }}
|
||||
check_changes: ${{ toJson(needs.check-changes.outputs) }}
|
||||
caller_inputs: ${{ toJson(inputs) }}
|
||||
partitions: ${{ needs.check-changes.outputs.partitions }}
|
||||
main_package: ${{ needs.check-changes.outputs.main_package }}
|
||||
sgl_kernel: ${{ needs.check-changes.outputs.sgl_kernel }}
|
||||
continue_on_error_flag: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
pr_head_sha: ${{ inputs.pr_head_sha || '' }}
|
||||
git_ref: ${{ inputs.git_ref || '' }}
|
||||
skip_stage_health_check: ${{ inputs.skip_stage_health_check == true }}
|
||||
secrets: inherit
|
||||
|
||||
stage-c-test-8-gpu-h200:
|
||||
@@ -507,12 +471,9 @@ jobs:
|
||||
self_name: stage-c-test-8-gpu-h200
|
||||
runner_config: 8-gpu-h200
|
||||
runs_on: 8-gpu-h200
|
||||
target_stage: ${{ inputs.target_stage || '' }}
|
||||
test_parallel_dispatch: ${{ inputs.test_parallel_dispatch == true && 'true' || 'false' }}
|
||||
check_changes: ${{ toJson(needs.check-changes.outputs) }}
|
||||
caller_inputs: ${{ toJson(inputs) }}
|
||||
partitions: ${{ needs.check-changes.outputs.partitions }}
|
||||
main_package: ${{ needs.check-changes.outputs.main_package }}
|
||||
sgl_kernel: ${{ needs.check-changes.outputs.sgl_kernel }}
|
||||
continue_on_error_flag: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
# Per-model TP must match the test's launch in test/registered/ -- see
|
||||
# FALLBACK_ARGS in scripts/ci/cuda/warmup_deep_gemm.py for extra dp/ep
|
||||
# flags. Only models that actually invoke DeepGEMM kernels at runtime
|
||||
@@ -520,9 +481,6 @@ jobs:
|
||||
# Server CUDA Graph warmup is combined into this step (warmup_server_models unset).
|
||||
warmup_deep_gemm_models: 'deepseek-ai/DeepSeek-V3-0324:8 deepseek-ai/DeepSeek-V3.2:8 zai-org/GLM-5-FP8:8 XiaomiMiMo/MiMo-V2-Flash:4 XiaomiMiMo/MiMo-V2.5:8'
|
||||
warmup_timeout_minutes: '60'
|
||||
pr_head_sha: ${{ inputs.pr_head_sha || '' }}
|
||||
git_ref: ${{ inputs.git_ref || '' }}
|
||||
skip_stage_health_check: ${{ inputs.skip_stage_health_check == true }}
|
||||
secrets: inherit
|
||||
|
||||
stage-c-test-8-gpu-h20:
|
||||
@@ -533,15 +491,9 @@ jobs:
|
||||
self_name: stage-c-test-8-gpu-h20
|
||||
runner_config: 8-gpu-h20
|
||||
runs_on: 8-gpu-h20
|
||||
target_stage: ${{ inputs.target_stage || '' }}
|
||||
test_parallel_dispatch: ${{ inputs.test_parallel_dispatch == true && 'true' || 'false' }}
|
||||
check_changes: ${{ toJson(needs.check-changes.outputs) }}
|
||||
caller_inputs: ${{ toJson(inputs) }}
|
||||
partitions: ${{ needs.check-changes.outputs.partitions }}
|
||||
main_package: ${{ needs.check-changes.outputs.main_package }}
|
||||
sgl_kernel: ${{ needs.check-changes.outputs.sgl_kernel }}
|
||||
continue_on_error_flag: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
pr_head_sha: ${{ inputs.pr_head_sha || '' }}
|
||||
git_ref: ${{ inputs.git_ref || '' }}
|
||||
skip_stage_health_check: ${{ inputs.skip_stage_health_check == true }}
|
||||
secrets: inherit
|
||||
|
||||
stage-c-test-deepep-4-gpu-h100:
|
||||
@@ -552,17 +504,11 @@ jobs:
|
||||
self_name: stage-c-test-deepep-4-gpu-h100
|
||||
runner_config: deepep-4-gpu-h100
|
||||
runs_on: 4-gpu-h100
|
||||
target_stage: ${{ inputs.target_stage || '' }}
|
||||
test_parallel_dispatch: ${{ inputs.test_parallel_dispatch == true && 'true' || 'false' }}
|
||||
check_changes: ${{ toJson(needs.check-changes.outputs) }}
|
||||
caller_inputs: ${{ toJson(inputs) }}
|
||||
partitions: ${{ needs.check-changes.outputs.partitions }}
|
||||
main_package: ${{ needs.check-changes.outputs.main_package }}
|
||||
sgl_kernel: ${{ needs.check-changes.outputs.sgl_kernel }}
|
||||
continue_on_error_flag: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
warmup_deep_gemm_models: 'lmsys/sglang-ci-dsv3-test:4'
|
||||
warmup_server_models: 'lmsys/sglang-ci-dsv3-test:4'
|
||||
pr_head_sha: ${{ inputs.pr_head_sha || '' }}
|
||||
git_ref: ${{ inputs.git_ref || '' }}
|
||||
skip_stage_health_check: ${{ inputs.skip_stage_health_check == true }}
|
||||
secrets: inherit
|
||||
|
||||
stage-c-test-deepep-8-gpu-h200:
|
||||
@@ -573,18 +519,12 @@ jobs:
|
||||
self_name: stage-c-test-deepep-8-gpu-h200
|
||||
runner_config: deepep-8-gpu-h200
|
||||
runs_on: 8-gpu-h200-deepep
|
||||
target_stage: ${{ inputs.target_stage || '' }}
|
||||
test_parallel_dispatch: ${{ inputs.test_parallel_dispatch == true && 'true' || 'false' }}
|
||||
check_changes: ${{ toJson(needs.check-changes.outputs) }}
|
||||
caller_inputs: ${{ toJson(inputs) }}
|
||||
partitions: ${{ needs.check-changes.outputs.partitions }}
|
||||
main_package: ${{ needs.check-changes.outputs.main_package }}
|
||||
sgl_kernel: ${{ needs.check-changes.outputs.sgl_kernel }}
|
||||
continue_on_error_flag: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
run_timeout_minutes: '45'
|
||||
warmup_deep_gemm_models: 'deepseek-ai/DeepSeek-V3-0324:8 deepseek-ai/DeepSeek-V3.2:8'
|
||||
warmup_server_models: 'deepseek-ai/DeepSeek-V3-0324:8'
|
||||
pr_head_sha: ${{ inputs.pr_head_sha || '' }}
|
||||
git_ref: ${{ inputs.git_ref || '' }}
|
||||
skip_stage_health_check: ${{ inputs.skip_stage_health_check == true }}
|
||||
secrets: inherit
|
||||
|
||||
stage-c-test-4-gpu-b200:
|
||||
@@ -595,16 +535,10 @@ jobs:
|
||||
self_name: stage-c-test-4-gpu-b200
|
||||
runner_config: 4-gpu-b200
|
||||
runs_on: ${{ needs.check-changes.outputs.b200_runner }}
|
||||
target_stage: ${{ inputs.target_stage || '' }}
|
||||
test_parallel_dispatch: ${{ inputs.test_parallel_dispatch == true && 'true' || 'false' }}
|
||||
check_changes: ${{ toJson(needs.check-changes.outputs) }}
|
||||
caller_inputs: ${{ toJson(inputs) }}
|
||||
partitions: ${{ needs.check-changes.outputs.partitions }}
|
||||
main_package: ${{ needs.check-changes.outputs.main_package }}
|
||||
sgl_kernel: ${{ needs.check-changes.outputs.sgl_kernel }}
|
||||
continue_on_error_flag: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
timeout_per_file: '1800'
|
||||
pr_head_sha: ${{ inputs.pr_head_sha || '' }}
|
||||
git_ref: ${{ inputs.git_ref || '' }}
|
||||
skip_stage_health_check: ${{ inputs.skip_stage_health_check == true }}
|
||||
secrets: inherit
|
||||
|
||||
stage-c-test-dsv4-4-gpu-b200:
|
||||
@@ -615,16 +549,10 @@ jobs:
|
||||
self_name: stage-c-test-dsv4-4-gpu-b200
|
||||
runner_config: dsv4-4-gpu-b200
|
||||
runs_on: ${{ needs.check-changes.outputs.b200_runner }}
|
||||
target_stage: ${{ inputs.target_stage || '' }}
|
||||
test_parallel_dispatch: ${{ inputs.test_parallel_dispatch == true && 'true' || 'false' }}
|
||||
check_changes: ${{ toJson(needs.check-changes.outputs) }}
|
||||
caller_inputs: ${{ toJson(inputs) }}
|
||||
partitions: ${{ needs.check-changes.outputs.partitions }}
|
||||
main_package: ${{ needs.check-changes.outputs.main_package }}
|
||||
sgl_kernel: ${{ needs.check-changes.outputs.sgl_kernel }}
|
||||
continue_on_error_flag: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
timeout_per_file: '1800'
|
||||
pr_head_sha: ${{ inputs.pr_head_sha || '' }}
|
||||
git_ref: ${{ inputs.git_ref || '' }}
|
||||
skip_stage_health_check: ${{ inputs.skip_stage_health_check == true }}
|
||||
secrets: inherit
|
||||
|
||||
stage-c-test-dsv4-8-gpu-h200:
|
||||
@@ -635,16 +563,10 @@ jobs:
|
||||
self_name: stage-c-test-dsv4-8-gpu-h200
|
||||
runner_config: dsv4-8-gpu-h200
|
||||
runs_on: 8-gpu-h200
|
||||
target_stage: ${{ inputs.target_stage || '' }}
|
||||
test_parallel_dispatch: ${{ inputs.test_parallel_dispatch == true && 'true' || 'false' }}
|
||||
check_changes: ${{ toJson(needs.check-changes.outputs) }}
|
||||
caller_inputs: ${{ toJson(inputs) }}
|
||||
partitions: ${{ needs.check-changes.outputs.partitions }}
|
||||
main_package: ${{ needs.check-changes.outputs.main_package }}
|
||||
sgl_kernel: ${{ needs.check-changes.outputs.sgl_kernel }}
|
||||
continue_on_error_flag: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
|
||||
timeout_per_file: '1800'
|
||||
pr_head_sha: ${{ inputs.pr_head_sha || '' }}
|
||||
git_ref: ${{ inputs.git_ref || '' }}
|
||||
skip_stage_health_check: ${{ inputs.skip_stage_health_check == true }}
|
||||
secrets: inherit
|
||||
|
||||
pr-test-finish:
|
||||
|
||||
Reference in New Issue
Block a user