Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
a316900
[Bugfix][Examples] Use --profiler-config flag in offline TTS examples…
Asthenia0412 Sep 8, 2026
7422a85
[Bugfix] Skip HWR store-size scans when no limit is configured (#7131)
hsliuustc0106 Sep 8, 2026
de1b070
[CI][ROCm] Route LTX2 Ulysses parity to two-GPU lane (#7234)
andyluo7 Sep 8, 2026
7a80b79
[Bugfix][Model] GR00T-N1.7: honor the per-request seed for flow-match…
liangmenghuang Sep 8, 2026
fdaf4e3
Add vLLM-Omni library info to Hugging Face Hub requests (#5381)
hmellor Sep 8, 2026
5e4baea
[Bugfix][NPU] Limit MiniMax H3 modulation grid size (#6794)
KrystalRay Sep 8, 2026
b3dd458
[Bugfix] Build the forced-aligner prompt without a chat template (wor…
twu3202 Sep 8, 2026
b6f4df3
[Refactor][Diffusion] Resolve offload topology through one plan resol…
specture724 Sep 9, 2026
f67cc52
[Doc] Add AI usage policy for contributions (#7305)
hsliuustc0106 Sep 9, 2026
5078c7a
[Bugfix][MiMo-Audio] Align code2wav decode with tokenizer device (#6539)
smartDream-chao Sep 9, 2026
d7678e2
[Bugfix][MiniCPM-o] Fix the audio_embeds input path (#5730)
eval-dev Sep 9, 2026
cdf0278
[Feat][OmniVoice]Support Varlen Attn, Request-Batch and Step-Executi…
sphinxkkkbc Sep 9, 2026
e74fe3c
[Model] Add Audio8 TTS Preview 0.6B (DualAR, 44.1 kHz codec) (#6157)
NancyFyong Sep 9, 2026
81c1c46
[Bugfix][Frontend] Accept the msgpack-numpy package's numpy markers o…
ZJLi2013 Sep 9, 2026
2bae550
[Frontend] Opt-in WebSocket TTS split_granularity and session seed (#…
rk9595 Sep 9, 2026
43b6975
[Bugfix][Frontend] Clear the P0 multimodal cache through the renderer…
ZenAlexa Sep 9, 2026
358b7d7
[Bugfix][Frontend] Enforce image pixel limits for video input referen…
BANANASJIM Sep 9, 2026
f2e30f4
[Bugfix][TTS] Isolate shared Higgs v3 reference encode from request c…
EchoHayate Sep 9, 2026
968f3e3
[Bugfix][CosyVoice3] Resolve hash snapshot pipeline (#6896)
XuTianle0101 Sep 9, 2026
09b720b
[CI] Skip Qwen3-Omni Server VAD multi-turn realtime test (#7279) (#7314)
yenuo26 Sep 9, 2026
e0d0879
[Bugfix][Magi2] Allow import without an active Triton driver (#7239)
andyluo7 Sep 9, 2026
5b00272
[Core] Split Omni connector model runner mixin (#6903)
natureofnature Sep 9, 2026
ab56148
[Bugfix] Make LTX vocoder decoding deterministic (#7231)
mglyn Sep 9, 2026
7712701
[Doc] [Recipe] Add FLUX.1-schnell recipe for RTX 5090 32GB (#7299)
Sparks-M Sep 9, 2026
c66df06
[Doc] Qwen3-TTS: add 0.6B on 1x A100 40GB (#7289)
chi030303 Sep 9, 2026
ffa991b
[Perf][Model] Add optimized LTX-2.5 DiffVAE operators (#7308)
mglyn Sep 9, 2026
ecdd762
[2/N] Add a minimal temporal chunk callback for MiniMax-H3 (#7017)
specture724 Sep 9, 2026
cdd4638
[Feature][Diffusion] Expose detailed pipeline timings (#6822)
bobboli Sep 9, 2026
038c9b9
[Bugfix] Resolve #6931 hub FA3 on torch 2.13 via kernels 0.16.1 (#7185)
NumberWan Sep 9, 2026
6e79d58
[Bugfix][Ascend] fix npu 310/a5 bugs (#6685)
zyz111222 Sep 9, 2026
7c1b1e4
[Bugfix][Engine] Group overlapping device stages into one sequential …
ZhengWG Sep 9, 2026
2f1845f
fix: reserve Qwen3-Omni NVFP4 backend fix (#7200)
kunkunblueberry Sep 9, 2026
0e60250
[BugFix] Add field validators for /v1/audio/generate request (#4741)
Shaun-Walsh Sep 9, 2026
c94cf4d
[CI][ROCm] Match CUDA/NPU L2/L3 label routing (#6966)
andyluo7 Sep 9, 2026
06f6769
[CI/Build] Avoid duplicate stage CLI deploy config (#7007)
CarrotSwordsman Sep 9, 2026
b9932aa
[CI/Build][ROCm] Normalize SenseNova paged-decode hardware markers (#…
andyluo7 Sep 9, 2026
6fb7b0a
[Model] Skip unused frame packing in Wan2.2 S2V (#7155)
yuweih205 Sep 9, 2026
504e5a6
[Doc] Add dual DGX Spark MiniMax-H3 results (#7343)
bojiang-li Sep 9, 2026
b02862b
[Model] Optimize MOSS-TTS Local batched execution and streaming codec…
Sy0307 Sep 9, 2026
51cf142
[Bugfix][XPU] Restore N-D output shape for W8A16 FP8 linear (#7301)
Joshna-Medisetty Sep 9, 2026
faad918
[Doc] Document num_outputs_per_prompt for /v1/videos (#7341)
Hiro208 Sep 10, 2026
0637454
[Skills] Add perf-evidence isolation, stage-attribution, and realtime…
hsliuustc0106 Sep 10, 2026
6e63ea8
[Bugfix] Allow LLM replicas on different GPUs to initialize concurren…
Gaohan123 Sep 10, 2026
3d71a2b
[CI/Build] Stabilize LTX2 vocoder autocast test on ROCm (#7336)
andyluo7 Sep 10, 2026
35a83a0
[NPU][CI] Add A5 and 310P CI support (#6875)
FayeSpica Sep 10, 2026
4b8dcac
[Kernel] Enable LTX DiffVAE fusions on SM100 and SM103 (#7350)
mglyn Sep 10, 2026
333f14e
[Bugfix][MiniCPM-o] Align structured chat content with native omni re…
Sy0307 Sep 10, 2026
aff7d64
[Rebase] Rebase to vLLM 0.29.0 (#7230)
tzhouam Sep 10, 2026
bbac4df
[Refactor] P0.2: Migrate API server helpers out of api_server (#5453)
herotai214 Sep 10, 2026
a7c295d
[CI] Stabilize Qwen3-Omni Server VAD E2E (#7356)
LHXuuu Sep 10, 2026
5b927b7
[CI/Build] Diff-aware source_file_dependencies for CUDA/NPU pipelines…
yenuo26 Sep 10, 2026
a2486dd
[Core][Diffusion] Add a typed pre-D2H video media contract (#6615)
NancyFyong Sep 10, 2026
7576c4c
[Bugfix] Bound HWR domain initialization lock waits (#7128)
hsliuustc0106 Sep 10, 2026
ce27ee6
[Bugfix] Escalate diffusion worker shutdown and retain survivors (#7126)
hsliuustc0106 Sep 10, 2026
f11bf1a
[Misc] Add standalone safetensors retention diagnostic (#7145)
hsliuustc0106 Sep 10, 2026
d8d4062
[CI] Isolate layerwise offload memory measurements (#6938)
andyluo7 Sep 10, 2026
43a476c
[Model] Add Cosmos3 mixed W8A8/W8A16 and W4A4/W4A16 denoising (#6560)
wkutak Sep 10, 2026
e540dfb
[Test] Use public render_jinja_template in MiniCPM-o native template …
tlysanhuo Sep 10, 2026
c8bef00
[Bugfix] Fix video prewarm cache retention and cancel-restart delay (…
psv666 Sep 10, 2026
05ab509
Cosmos3 action policy improvements (#6460)
MaciejBalaNV Sep 10, 2026
627630d
[BugFix][CI] Restore diff-aware source filtering for post-merge L3 (#…
yenuo26 Sep 10, 2026
ffcaaa9
[Bugfix] Fail when a diffusion LoRA adapter binds no layer (#7349)
Hiro208 Sep 10, 2026
5a386d7
[Bugfix] Fix host-memory leak on aborted /v1/images/generations (#646…
zhang-keliang Sep 11, 2026
5c69fc2
[Refactor] Declare model-local KV held outside the paged manager (#6171)
linyueqian Sep 11, 2026
498c41b
[Realtime] Emit current (non-beta) OpenAI audio/transcript event name…
NickCao Sep 11, 2026
44fed17
[Bugfix][Core] Clean up failed HWR atomic metadata writes (#6956)
BANANASJIM Sep 11, 2026
3d952d1
[Bugfix] Keep MiniMax-H3 reference audio budgets separate (#7281)
david6666666 Sep 11, 2026
bad5098
[Bugfix] Fix Helios USP: per-component split for correct sequence par…
yancaocn Sep 11, 2026
96360cc
[Perf][Diffusion] Optimize HSDP startup via Rank-0 shared weight load…
SamitHuang Sep 11, 2026
a7ab91f
[Example] Migrate HunyuanImage-3.0 to model_extras + shared task exam…
suyanli220 Sep 11, 2026
3f7c217
[Model] Avoid scalar synchronizations in GLM-Image preparation (#7172)
yuweih205 Sep 11, 2026
f62d4ad
[Model][ERNIE-Image] Delay AdaLN modulation broadcast (#7171)
yuweih205 Sep 11, 2026
43b8de9
[Kernel][MiniMax-H3] Run Q/K RMSNorm-RoPE in one launch (#7167)
yuweih205 Sep 11, 2026
dff8f8f
[CI][ROCm] Align AMD image with vLLM 0.29 (#7395)
andyluo7 Sep 11, 2026
de9a133
[Bugfix] Add embed_multimodal to MiniCPM-o 4.5 omni LLM class (#7384)
Hiro208 Sep 11, 2026
02aaa34
[Model] Add LingBot World Ulysses sequence parallelism (#6841)
wtz2333 Sep 11, 2026
33fff21
[Feature][TTS] Add Speech API streaming metrics (#6853)
gxxx-hum Sep 11, 2026
78e1a0a
[Bugfix][Model] Fix FLUX.2 Klein multi-image edit metadata (#7430)
kuafou Sep 11, 2026
d349338
[BugFix] Fix leftovers of the legacy OpenAI realtime API event names …
NickCao Sep 11, 2026
c111f3a
[Model] Add Tencent AuK speech generation and editing (encoder + diff…
linyueqian Sep 11, 2026
6fcab74
[XPU][Docker] Align XPU image and CI with vLLM v0.29.0 (#7441)
Joshna-Medisetty Sep 11, 2026
13b85c5
[Bugfix] Add explicit error when using CFGP with distilled Cosmos3 mo…
MaciejBalaNV Sep 11, 2026
220366d
[Perf][Diffusion] Run MammothModa2 DiT attention through the shared a…
MrlixiangWE Sep 12, 2026
4a7a845
[Bugfix] Give model CLI flags typed owners in the Omni config (#7390)
Hiro208 Sep 12, 2026
6829406
[Bugfix] Require a model for `vllm serve --omni` (fixes #4158) (#4167)
abinggo Sep 12, 2026
9ef9fc4
[Bugfix] Send a downstream terminal chunk when a parked stage ends (#…
psv666 Sep 12, 2026
b3ba67d
[NPU] upgrade to v0.29.0 (#7433)
FayeSpica Sep 12, 2026
bc0c9f4
[Bugfix][Model][Lance] Support decoded video frames in video editing …
junpengw67-max Sep 12, 2026
28291df
[Refactor][Diffusion] Remove model-specific names from LoRA and Model…
congw729 Sep 12, 2026
9edc1b4
Optimize CosyVoice3 Stage1 flow batching (#4876)
gerayking Sep 12, 2026
7e520f9
[3/N] Encode streamed video on the worker with bounded batching (#7018)
specture724 Sep 12, 2026
f7d9deb
[Kernel][Boogu-Image] Fuse Q/K RMSNorm + interleaved RoPE via fused_q…
Holworth Sep 13, 2026
01a2f93
[Bugfix][Frontend] Honor output_compression on the image generations …
hsliuustc0106 Sep 13, 2026
68c4e79
chore: resolve current upstream conflicts for Qwen3 duplex
JoseCarlosGarcia95 Sep 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
166 changes: 78 additions & 88 deletions .buildkite/amd/scripts/bootstrap-amd-omni.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ set -euo pipefail
# shellcheck disable=SC1091
source .buildkite/common/scripts/resolve_skip_ci.sh

AMD_SUITE_SELECTOR=".buildkite/amd/scripts/select_test_suites.py"

if [[ -z "${RUN_ALL:-}" ]]; then
RUN_ALL=0
fi
Expand All @@ -30,31 +32,20 @@ if [[ -z "${AMD_MIRROR_HW:-}" ]]; then
AMD_MIRROR_HW="amdproduction"
fi

fail_fast() {
DISABLE_LABEL="ci-no-fail-fast"
# If BUILDKITE_PULL_REQUEST != "false", then we check the PR labels using curl and jq
if [ "$BUILDKITE_PULL_REQUEST" != "false" ]; then
PR_LABELS=$(curl -s "https://api.github.com/repos/vllm-project/vllm-omni/pulls/$BUILDKITE_PULL_REQUEST" | jq -r '.labels[].name')
if [[ $PR_LABELS == *"$DISABLE_LABEL"* ]]; then
echo false
else
echo true
fi
else
echo false # not a PR or BUILDKITE_PULL_REQUEST not set
PR_LABELS=""
# Explicit debug suites do not depend on PR labels.
if [[ "${BUILDKITE_PULL_REQUEST:-false}" != "false" && -z "${DEBUG_TEST_YAML:-}" ]]; then
if ! PR_LABELS=$(curl -fsSL \
"https://api.github.com/repos/vllm-project/vllm-omni/pulls/$BUILDKITE_PULL_REQUEST" \
| jq -r '.labels[].name'); then
echo "ERROR: Could not read PR labels; refusing to select an incorrect AMD test tier." >&2
exit 1
fi
}
fi

check_run_all_label() {
RUN_ALL_LABEL="ready-run-all-tests"
# If BUILDKITE_PULL_REQUEST != "false", then we check the PR labels using curl and jq
if [ "$BUILDKITE_PULL_REQUEST" != "false" ]; then
PR_LABELS=$(curl -s "https://api.github.com/repos/vllm-project/vllm-omni/pulls/$BUILDKITE_PULL_REQUEST" | jq -r '.labels[].name')
if [[ $PR_LABELS == *"$RUN_ALL_LABEL"* ]]; then
echo true
else
echo false
fi
fail_fast() {
if [[ "${BUILDKITE_PULL_REQUEST:-false}" != "false" ]]; then
echo true
else
echo false # not a PR or BUILDKITE_PULL_REQUEST not set
fi
Expand All @@ -64,6 +55,57 @@ if [[ -z "${COV_ENABLED:-}" ]]; then
COV_ENABLED=0
fi

resolve_test_specs() {
local selected_specs
if ! selected_specs=$(python3 "$AMD_SUITE_SELECTOR" \
--branch "$BUILDKITE_BRANCH" \
--labels "$PR_LABELS" \
--debug-test-yaml "${DEBUG_TEST_YAML:-}"); then
exit 1
fi

TEST_SPECS=()
while IFS= read -r suite_spec; do
[[ -z "$suite_spec" ]] && continue
TEST_SPECS+=("$suite_spec")
done <<< "$selected_specs"
}

filter_test_specs_by_skip_ci() {
local suite_spec level decision
local skip_all=0
local -a runnable_specs=()

for suite_spec in "${TEST_SPECS[@]}"; do
case "$suite_spec" in
READY_TESTS:*) level="l2" ;;
MERGE_TESTS:*) level="l3" ;;
*)
echo "ERROR: unknown AMD test suite spec '$suite_spec'" >&2
exit 1
;;
esac

if decision=$(python3 "$SKIP_CI_PY" gate amd "$level"); then
echo "Skipping AMD $level suite due to $decision decision."
[[ "$decision" == "skip-all" ]] && skip_all=1
else
runnable_specs+=("$suite_spec")
fi
done

TEST_SPECS=("${runnable_specs[@]}")
if [[ ${#TEST_SPECS[@]} -eq 0 ]]; then
if [[ $skip_all -eq 1 ]]; then
buildkite-agent annotate \
":memo: CI skipped — docs or pytest skip-mark changes only" \
--style "info" 2>/dev/null || true
fi
echo "No AMD L2/L3 suites remain after skip-ci filtering."
exit 0
fi
}

upload_pipeline() {
echo "Uploading pipeline..."
# Install minijinja
Expand All @@ -84,7 +126,7 @@ upload_pipeline() {
# (WIP) Use pipeline generator instead of jinja template
if [ -e ".buildkite/amd/pipeline_generator/pipeline_generator.py" ]; then
python -m pip install click pydantic
python .buildkite/amd/pipeline_generator/pipeline_generator.py --run_all=$RUN_ALL --list_file_diff="$LIST_FILE_DIFF" --nightly="$NIGHTLY" --mirror_hw="$AMD_MIRROR_HW"
python .buildkite/amd/pipeline_generator/pipeline_generator.py --run_all="$RUN_ALL" --list_file_diff="$LIST_FILE_DIFF" --nightly="$NIGHTLY" --mirror_hw="$AMD_MIRROR_HW"
buildkite-agent pipeline upload .buildkite/amd/pipeline.yaml
exit 0
fi
Expand All @@ -97,49 +139,12 @@ upload_pipeline() {

cd .buildkite/amd

# Select test definition file: merge suite for main, ready suite for PRs.
# For debugging, DEBUG_TEST_YAML accepts a comma-separated list containing
# "merge" and/or "ready" (case-insensitive). Multiple suites are combined
# before rendering so they share one amd-build step.
if [[ -n "${DEBUG_TEST_YAML:-}" ]]; then
declare -a DEBUG_TEST_SPECS=()
declare -A SEEN_DEBUG_TESTS=()
IFS=',' read -ra REQUESTED_DEBUG_TESTS <<< "${DEBUG_TEST_YAML,,}"

for requested_test in "${REQUESTED_DEBUG_TESTS[@]}"; do
# Permit readable values such as "ready, merge," and ignore the
# empty item produced by a trailing comma.
requested_test="${requested_test//[[:space:]]/}"
[[ -z "$requested_test" ]] && continue

if [[ -n "${SEEN_DEBUG_TESTS[$requested_test]:-}" ]]; then
echo "ERROR: duplicate DEBUG_TEST_YAML suite '$requested_test'" >&2
exit 1
fi
SEEN_DEBUG_TESTS[$requested_test]=1

case "$requested_test" in
ready)
DEBUG_TEST_SPECS+=("READY_TESTS:test-amd-ready.yml")
;;
merge)
DEBUG_TEST_SPECS+=("MERGE_TESTS:test-amd-merge.yml")
;;
*)
echo "ERROR: DEBUG_TEST_YAML entries must be 'merge' or 'ready', got '$requested_test'" >&2
exit 1
;;
esac
done

if [[ ${#DEBUG_TEST_SPECS[@]} -eq 0 ]]; then
echo "ERROR: DEBUG_TEST_YAML did not contain a test suite" >&2
exit 1
elif [[ ${#DEBUG_TEST_SPECS[@]} -eq 1 ]]; then
TEST_YAML="${DEBUG_TEST_SPECS[0]#*:}"
else
TEST_YAML=$(mktemp "${TMPDIR:-/tmp}/amd-debug-tests.XXXXXX.yml")
python - "$TEST_YAML" "${DEBUG_TEST_SPECS[@]}" <<'PY'
# Multiple label-selected or debug-selected suites share one image build.
if [[ ${#TEST_SPECS[@]} -eq 1 ]]; then
TEST_YAML="${TEST_SPECS[0]#*:}"
else
TEST_YAML=$(mktemp "${TMPDIR:-/tmp}/amd-selected-tests.XXXXXX.yml")
python - "$TEST_YAML" "${TEST_SPECS[@]}" <<'PY'
import sys

import yaml
Expand Down Expand Up @@ -172,13 +177,8 @@ for suite_spec in suite_specs:
with open(output_path, "w", encoding="utf-8") as output_file:
yaml.safe_dump(combined, output_file, sort_keys=False)
PY
fi
echo "DEBUG_TEST_YAML override: using ${DEBUG_TEST_SPECS[*]}"
elif [[ $BUILDKITE_BRANCH == "main" ]]; then
TEST_YAML="test-amd-merge.yml"
else
TEST_YAML="test-amd-ready.yml"
fi
echo "AMD test suites: ${TEST_SPECS[*]}"

(
set -x
Expand All @@ -198,7 +198,7 @@ PY
> pipeline.yaml
)
cat pipeline.yaml
if [[ "$TEST_YAML" == "${TMPDIR:-/tmp}/amd-debug-tests."*.yml ]]; then
if [[ "$TEST_YAML" == "${TMPDIR:-/tmp}/amd-selected-tests."*.yml ]]; then
rm -f -- "$TEST_YAML"
fi
buildkite-agent artifact upload pipeline.yaml
Expand All @@ -219,12 +219,10 @@ if [[ $BUILDKITE_BRANCH == "main" ]]; then
file_diff=$(get_diff_main)
fi

# Early exit: unified skip-ci (docs / skip marks) and CI-yaml-only level targeting.
if [[ $BUILDKITE_BRANCH == "main" ]]; then
gate_bootstrap_ci amd l3
else
gate_bootstrap_ci amd l2
fi
# Resolve PR tier labels before skip-ci so ready and merge suites can be
# filtered independently for CI-YAML-only changes.
resolve_test_specs
filter_test_specs_by_skip_ci

patterns=(
"docker/Dockerfile"
Expand Down Expand Up @@ -274,14 +272,6 @@ for file in $file_diff; do
fi
done

# Check for ready-run-all-tests label
LABEL_RUN_ALL=$(check_run_all_label)
if [[ $LABEL_RUN_ALL == true ]]; then
RUN_ALL=1
NIGHTLY=1
echo "Found 'ready-run-all-tests' label. Running all tests including optional tests."
fi

# Decide whether to use precompiled wheels
# Relies on existing patterns array as a basis.
if [[ -n "${VLLM_USE_PRECOMPILED:-}" ]]; then
Expand Down
93 changes: 93 additions & 0 deletions .buildkite/amd/scripts/select_test_suites.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
#!/usr/bin/env python3
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright contributors to the vLLM-Omni project
"""Select AMD L2/L3 suites after Buildkite has created an AMD build.

This repository-side selector does not decide which GitHub label events start
the external ``vllm-omni-amd-ci`` pipeline. Its Buildkite PR build condition
must admit the relevant label event before this code can inspect the labels.
"""

from __future__ import annotations

import argparse
import sys
from collections.abc import Iterable

SUITE_SPECS = {
"ready": "READY_TESTS:test-amd-ready.yml",
"merge": "MERGE_TESTS:test-amd-merge.yml",
}


def _parse_debug_suites(value: str) -> tuple[str, ...]:
suites = tuple(item.strip().lower() for item in value.split(",") if item.strip())
if not suites:
raise ValueError("DEBUG_TEST_YAML did not contain a test suite")

seen: set[str] = set()
for suite in suites:
if suite not in SUITE_SPECS:
raise ValueError(f"DEBUG_TEST_YAML entries must be 'merge' or 'ready', got {suite!r}")
if suite in seen:
raise ValueError(f"duplicate DEBUG_TEST_YAML suite {suite!r}")
seen.add(suite)
return suites


def select_amd_test_suites(
*,
branch: str,
labels: Iterable[str],
debug_test_yaml: str = "",
) -> tuple[str, ...]:
"""Return ordered suite names while preserving legacy unlabeled PRs."""

if debug_test_yaml:
return _parse_debug_suites(debug_test_yaml)
if branch == "main":
return ("merge",)

label_set = {label.strip() for label in labels if label.strip()}
selected = tuple(suite for label, suite in (("ready", "ready"), ("merge-test", "merge")) if label in label_set)
# AMD historically uploaded L2 for every PR build. Keep that behavior for
# triggers such as amd-test while adding tier selection for ready/merge-test.
return selected or ("ready",)


def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument("--branch", required=True)
parser.add_argument("--labels", default="")
parser.add_argument("--debug-test-yaml", default="")
args = parser.parse_args()

labels = tuple(args.labels.splitlines())
try:
suites = select_amd_test_suites(
branch=args.branch,
labels=labels,
debug_test_yaml=args.debug_test_yaml,
)
except ValueError as exc:
parser.error(str(exc))

label_set = {label.strip() for label in labels if label.strip()}
if not args.debug_test_yaml and args.branch != "main" and not ({"ready", "merge-test"} & label_set):
print(
"No AMD L2/L3 tier label found; preserving the legacy ready-suite fallback.",
file=sys.stderr,
)
if "nightly-test" in label_set:
print(
"AMD nightly-test has no suite yet and does not affect L2/L3 selection.",
file=sys.stderr,
)

for suite in suites:
print(SUITE_SPECS[suite])
return 0


if __name__ == "__main__":
raise SystemExit(main())
13 changes: 12 additions & 1 deletion .buildkite/amd/test-amd-ready.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,11 @@ steps:
- export VLLM_LOGGING_LEVEL=DEBUG
- export VLLM_WORKER_MULTIPROC_METHOD=spawn
- timeout 20m pytest -s -v tests/diffusion/distributed/test_sequence_parallel.py -m core_model
- >-
timeout 20m pytest -s -v
tests/diffusion/models/ltx2/test_ltx2_transformer_ulysses.py
-m 'core_model and rocm and cards_2'
--run-level "core_model"

- label: "Diffusion GPU Worker Test"
agent_pool: mi300_2
Expand All @@ -122,7 +127,13 @@ steps:
mirror_hardwares: [amdproduction]
grade: Blocking
commands:
- timeout 15m pytest -sv tests/diffusion/models/ -m 'core_model and cuda' --run-level "core_model"
# Preserve legacy one-GPU tests without cards_1 while excluding every
# registered multi-GPU marker from this one-GPU job.
- >-
timeout 15m pytest -sv tests/diffusion/models/
-m 'core_model and cuda and not
(cards_2 or cards_3 or cards_4 or cards_5 or cards_6 or cards_7 or cards_8)'
--run-level "core_model"

- label: "Diffusion · Wan22 Test"
agent_pool: mi300_1
Expand Down
Loading