Repository navigation
[CI][ROCm] Add non-blocking engine and model executor GPU coverage - #7397
hsliuustc0106 merged 5 commits into
Conversation
d3e98ef to
6efb4ae
Compare
d8de48e to
818221e
Compare
|
R2-01's hardware promotion gate is satisfied on exact head
Both runs uploaded the four required artifacts: The visible Intel failure is from accidentally launched Intel #8115, not from this AMD-only change. Its XPU job exited during collection against stale Intel vLLM APIs (including missing Marking the PR ready and requesting review from @yenuo26, @NickCao, and @congw729. |
|
This PR was classified as CI work. CI owner: @yenuo26 @congw729 @NickCao Routing: @yenuo26 via semantic router, CI owner, CODEOWNERS; @congw729 via CODEOWNERS; @NickCao via CODEOWNERS @andyluo7, please review your own changes and leave a short self-review comment describing what you checked. PRs without author self-review may not be assigned a reviewer. Please take a look when you have a chance. If you would like an automated review, mention @vllm-omni-review-bot in a comment. |
|
Author self-review completed on exact head
No blocking concerns found in self-review. @vllm-omni-review-bot, please review. |
Omni ReviewBot routing recordAssigned Direct under experiment |
vllm-omni-review-bot
left a comment
There was a problem hiding this comment.
Omni ReviewBot review
PR description
This PR adds a NonBlocking AMD ready job (R2-01) on mi300_1 that runs GPU-marked tests/engine/ and tests/model_executor/ coverage while excluding multi-GPU cards_2–cards_8 cases. It writes collection/result artifacts under the Buildkite checkout path so native-pod runs can upload them, and fails closed when pytest collects zero tests (no VLLM_CI_ALLOW_NO_TESTS). CUDA pipelines are untouched; omitting tests/worker/test_batched_omni_output.py is an explicit first-slice scope choice, pinned by a new Buildkite invariant test.
Change flow
flowchart TD
A["[EXISTING] AMD ready pipeline<br/>mi300_1 + run-amd-test.sh"]:::existing --> B["[CHANGED] test-amd-ready.yml<br/>R2-01 NonBlocking job"]:::changed
B --> C["[NEW] collect+run pytest<br/>engine + model_executor<br/>exclude cards_2..8"]:::new
C --> D["[EXISTING] pipefail runner<br/>preserves pytest exit / exit 5"]:::existing
B --> E["[NEW] test_amd_ready_r2_01.py<br/>grade/pool/marker/artifact pins"]:::new
C --> F["[CHANGED] checkout artifacts<br/>nodeids/log/junit/summary"]:::changed
classDef existing fill:#e5e7eb,stroke:#6b7280,color:#111827
classDef changed fill:#fef3c7,stroke:#d97706,color:#451a03,stroke-width:2px
classDef new fill:#dcfce7,stroke:#16a34a,color:#052e16,stroke-width:2px
classDef removed fill:#fee2e2,stroke:#dc2626,color:#450a0a,stroke-width:2px
See inline comments below.
|
Addressed the runtime-bound finding in |
vllm-omni-review-bot
left a comment
There was a problem hiding this comment.
Omni ReviewBot review
PR description
This PR adds a NonBlocking AMD ready burn-in job (R2-01) on mi300_1 that collects and runs GPU-marked tests/engine/ and tests/model_executor/ coverage while excluding multi-GPU cards_2–cards_8. Artifacts are written under BUILDKITE_BUILD_CHECKOUT_PATH so native-pod uploads work, zero collection stays fail-closed via unset VLLM_CI_ALLOW_NO_TESTS plus the existing pipefail runner, and the step is bounded with timeout_in_minutes: 20. CUDA pipelines are unchanged; omitting the CUDA worker batched-output test is an explicit first-slice choice pinned by a new Buildkite invariant test.
Change flow
flowchart TD
A["[EXISTING] AMD ready upload<br/>run-amd-test.sh pipefail"]:::existing --> B["[CHANGED] test-amd-ready.yml"]:::changed
B --> C["[NEW] R2-01 NonBlocking job<br/>mi300_1 + timeout_in_minutes 20"]:::new
C --> D["[NEW] collect+run pytest<br/>engine + model_executor<br/>exclude cards_2..8"]:::new
C --> E["[NEW] checkout artifacts<br/>nodeids/log/junit/summary"]:::new
B --> F["[NEW] test_amd_ready_r2_01.py<br/>grade/marker/artifact pins"]:::new
D --> G["[EXISTING] exit 5 fail-closed<br/>without ALLOW_NO_TESTS"]:::existing
classDef existing fill:#e5e7eb,stroke:#6b7280,color:#111827
classDef changed fill:#fef3c7,stroke:#d97706,color:#451a03,stroke-width:2px
classDef new fill:#dcfce7,stroke:#16a34a,color:#052e16,stroke-width:2px
classDef removed fill:#fee2e2,stroke:#dc2626,color:#450a0a,stroke-width:2px
No actionable findings.
|
R2-01's promotion gate is satisfied on exact head
Both exact-head runs completed without failures, timeouts, or soft failures, and each uploaded four readable artifacts: ReviewBot's exact-head re-review reported no actionable findings. The diff remains AMD-only with no CUDA-path change. The remaining gate is maintainer review. |
Signed-off-by: andyluo7 <andy.luo@amd.com>
Signed-off-by: andyluo7 <andy.luo@amd.com>
Signed-off-by: andyluo7 <andy.luo@amd.com>
Signed-off-by: andyluo7 <andy.luo@amd.com>
a3d17b0 to
c978fb7
Compare
|
Refresh complete on exact head
The prior AMD runs are now historical evidence. The promotion gate is reset to 0/2 for this head. @vllm-omni-review-bot, please re-review the current exact head. |
vllm-omni-review-bot
left a comment
There was a problem hiding this comment.
Omni ReviewBot review
PR description
Adds a NonBlocking AMD ready burn-in step (R2-01) on mi300_1 that runs one GPU-scoped pytest pass over tests/engine/ and tests/model_executor/, excluding multi-GPU cards_2–cards_8, with a 20-minute step timeout. The job writes checkout-relative pytest.log, JUnit, and a short summary under artifacts/rocm-r2-01/, and relies on the existing native AMD pipefail runner plus unset VLLM_CI_ALLOW_NO_TESTS to fail closed on zero collection. CUDA pipelines are untouched; a new Buildkite contract test pins grade, pool, timeout, single invocation, marker selection, and artifact paths.
Change flow
flowchart TD
A["[EXISTING] run-amd-test.sh<br/>pipefail + exit-5 gate"]:::existing --> B["[CHANGED] test-amd-ready.yml"]:::changed
B --> C["[NEW] R2-01 NonBlocking job<br/>mi300_1 timeout_in_minutes 20"]:::new
C --> D["[NEW] single pytest -s -v -ra<br/>engine + model_executor<br/>exclude cards_2..8"]:::new
C --> E["[NEW] artifacts/rocm-r2-01<br/>log + junit + summary"]:::new
B --> F["[NEW] test_amd_ready_r2_01.py<br/>contract pins"]:::new
D --> G["[EXISTING] soft_fail NonBlocking<br/>AMD ready upload"]:::existing
classDef existing fill:#e5e7eb,stroke:#6b7280,color:#111827
classDef changed fill:#fef3c7,stroke:#d97706,color:#451a03,stroke-width:2px
classDef new fill:#dcfce7,stroke:#16a34a,color:#052e16,stroke-width:2px
classDef removed fill:#fee2e2,stroke:#dc2626,color:#450a0a,stroke-width:2px
No actionable findings.
Signed-off-by: andyluo7 <andy.luo@amd.com>
|
Follow-up published on exact head AMD #11797 completed successfully at the aggregate level because R2-01 is non-blocking, but the R2-01 target itself timed out after 20 minutes:
That test was the sole newly selected item relative to the prior 578-test passes, came from upstream commit Local validation on the new head:
The exact-head hardware gate is reset to 0/2. @vllm-omni-review-bot, please review the current exact head. |
vllm-omni-review-bot
left a comment
There was a problem hiding this comment.
Omni ReviewBot review
PR description
This PR adds a NonBlocking AMD ready burn-in job (R2-01) on mi300_1 that runs a single GPU-scoped pytest over tests/engine/ and tests/model_executor/, excluding multi-GPU cards_2–cards_8 and one CUDA/L4 CosyVoice3 ragged-flow parity test that previously blew the 20-minute bound while cold-JITing AITER kernels. Results go to checkout-relative artifacts/rocm-r2-01/ (pytest.log, JUnit, summary); zero collection stays fail-closed via the native AMD pipefail runner and unset VLLM_CI_ALLOW_NO_TESTS. CUDA pipelines are unchanged; a new Buildkite contract test pins grade, pool, timeout, single invocation, selection, and artifacts.
Change flow
flowchart TD
A["[EXISTING] run-amd-test.sh<br/>pipefail + exit-5 gate"]:::existing --> B["[CHANGED] test-amd-ready.yml"]:::changed
B --> C["[NEW] R2-01 NonBlocking job<br/>mi300_1 timeout_in_minutes 20"]:::new
C --> D["[NEW] single pytest -s -v -ra<br/>engine + model_executor<br/>exclude cards_2..8 + CosyVoice3 -k"]:::new
C --> E["[NEW] artifacts/rocm-r2-01<br/>log + junit + summary"]:::new
B --> F["[NEW] test_amd_ready_r2_01.py<br/>contract pins"]:::new
D --> G["[EXISTING] soft_fail NonBlocking<br/>AMD ready upload"]:::existing
classDef existing fill:#e5e7eb,stroke:#6b7280,color:#111827
classDef changed fill:#fef3c7,stroke:#d97706,color:#451a03,stroke-width:2px
classDef new fill:#dcfce7,stroke:#16a34a,color:#052e16,stroke-width:2px
classDef removed fill:#fee2e2,stroke:#dc2626,color:#450a0a,stroke-width:2px
No actionable findings.
Exact-head AMD promotion evidenceExact head:
Gate: 2 of 2 exact-head passes complete. R2-01 remains @congw729 @NickCao, the exact-head gate is complete and all current checks are green. Please provide human approval when ready. |
…llm-project#7397) Signed-off-by: andyluo7 <andy.luo@amd.com> Signed-off-by: Matthieu Laneuville <matthieu.laneuville@surf.nl>
…llm-project#7397) Signed-off-by: andyluo7 <andy.luo@amd.com>
Summary
tests/engine/andtests/model_executor/coverage onmi300_1NonBlocking, bound it to 20 minutes, and explicitly excludecards_2throughcards_8The CUDA ready job also includes
tests/worker/test_batched_omni_output.py. This first ROCm burn-in is intentionally limited to the two R2-01 directories; the worker test remains a documented follow-up rather than an implicit parity claim.Validation
Base:
58adeec05f151e18542323cb4644b009b83cfef3(includes merged #6978 and #7395)Exact head:
6d8615f7e51af8e8e5b2468d4ecf059e4124b978git range-diffconfirms that the original three-commit R2-01 series is unchanged by the rebase onto currentmainc978fb70removes the separate--collect-onlyinvocation, so the GPU-backed tree is collected only once6d8615f7excludes onlytest_code2wav_streaming_batch_matches_ragged_flow_numerics; that test declares CUDA/L4 hardware and remains covered by the CUDA readyEngine&Model Executor Testpytest -s -v -rarun retains node IDs inpytest.logand JUnit while preserving zero-collection failure, skip reporting, per-test durations, and the 20-minute step bound2 passedtests/buildkitesuite with the Torch-dependent package-discovery test excluded:137 passedgit diff --check: passedtests/buildkiteExact-head ReviewBot re-review completed on
6d8615f7with no actionable findings.AMD hardware burn-in
The following builds are retained as historical evidence but do not count for the new exact head:
6efb4aed: 578 selected tests passed, but native-pod artifacts were not uploaded.818221ed: 578 passed with 2,814 deselected; required artifacts uploaded.a3d17b0e: two clean passes, 578 passed with 2,814 deselected, within the 20-minute bound.c978fb70: the aggregate build passed because R2-01 is non-blocking, but R2-01 itself timed out after selecting 579 tests. It logged 372 passes and no test failures before a newly introduced CUDA/L4-only CosyVoice3 test spent the remaining budget cold-JITing AITER kernels; onlypytest.logwas uploaded.Current burn-in status: 2 of 2 exact-head passes complete.
6d8615f7e51af8e8e5b2468d4ecf059e4124b978: R2-01 exited0with no timeout or soft failure;578 passed,2,851 deselected,18 warningsin501.52s(8m21s); JUnit reports 578 tests with zero failures, errors, or skips.0with no timeout or soft failure;578 passed,2,851 deselected,18 warningsin493.07s(8m13s); JUnit reports 578 tests with zero failures, errors, or skips.Both aggregate builds passed. Each target retained readable
pytest.log,pytest.xml, andpytest-summary.txtartifacts; the verbose log and JUnit carry the selected node IDs without a duplicate collection pass.Rollout gate
Promotion-ready evidence is complete:
6d8615f7e51af8e8e5b2468d4ecf059e4124b978passed the R2-01 target;The job remains
NonBlocking; any later blocking-grade promotion should follow the broader ROCm CI burn-in policy.Tracking: #5731