[None][test] use skip_less_mpi_world_size instead of skip_less_device - #17405
[None][test] use skip_less_mpi_world_size instead of skip_less_device#17405crazydemo wants to merge 2 commits into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (2)
WalkthroughThe integration tests now check for eight MPI processes instead of eight local devices before running multi-GPU scenarios. Test logic remains unchanged. ChangesMPI test gating
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
nv-xtf
left a comment
There was a problem hiding this comment.
LGTM. Just a note: we should avoid putting these disagg tests into multi-node stages — launch_disaggregated_llm slices GPUs by local index
Thanks. Revert changes on test_disaggreagted_serving.py |
Signed-off-by: Ivy Zhang <25222398+crazydemo@users.noreply.github.com>
launch_disaggregated_llm slices GPUs by local index, so disagg tests must stay on single-node stages and use skip_less_device instead of skip_less_mpi_world_size. Signed-off-by: Ivy Zhang <25222398+crazydemo@users.noreply.github.com>
3a6fbae to
1fdde22
Compare
|
/bot run --disable-fail-fast |
|
PR_Github #64911 [ run ] triggered by Bot. Commit: |
fredricz-20070104
left a comment
There was a problem hiding this comment.
Review summary - CONCERNS
Verdict: Test-only marker swap; it is likely correct for multi-node stages but carries a real coverage-regression risk on single-node runs that should be confirmed before merge.
Concerns
- [MAJOR]
tests/integration/defs/accuracy/test_llm_api_pytorch.py:3324(and every other switched decorator) -skip_less_device(8)->skip_less_mpi_world_size(8)changes the gating semantics- What is wrong:
skip_less_device(N)gates on the number of visible/local CUDA devices;skip_less_mpi_world_size(N)gates on the MPI world size. These are not equivalent. Several of these LLM-API accuracy tests (e.g.TestDeepSeekV3tp=8,TestQwen3_235B_A22B.test_fp8,TestGLM52.test_nvfp4) run in a single process that internally spawns the tp workers, in which case the MPI world size is 1 even though 8 GPUs are present. - How it fails: on a single-node 8-GPU CI host launched without an 8-rank
mpirun,skip_less_mpi_world_size(8)seesworld_size(1) < 8and skips the test. Cases that previously ran underskip_less_device(8)then silently stop running with no failing signal — a coverage regression. It only keeps running if these tests are always launched under an 8-rank MPI world. - Suggested fix: confirm in the PR description that every touched test is executed via
trtllm-llmapi-launch/mpirunwithworld_size == device_countin the stage(s) that own it. Where a test genuinely runs single-process, keepskip_less_device.
- What is wrong:
Minor notes (non-blocking)
tests/integration/defs/accuracy/test_llm_api_pytorch.py:4137andtests/integration/defs/test_e2e.py:1456- mixed gating within one parametrize (4-GPU case keepsskip_less_device(4), 8-GPU case becomesskip_less_mpi_world_size(8)). Probably intentional, but add a one-line comment explaining why only the 8-way case uses world-size gating.
QA view
- Test coverage: unknown - this changes the skip predicate itself, not a production path. Whether the tests still execute depends on the launch mode (MPI world size vs local devices), which the diff does not reveal.
- SM coverage: architecture-independent - the
skip_pre_blackwell/skip_pre_hopper/skip_pre_adaguards are untouched; only the device/world-size predicate changed. - Test code: mixed gating within single parametrize blocks; also cannot confirm from the diff that
skip_less_mpi_world_sizeis a registered pytest marker (unregistered -> collection error). - Test time: unknown - no bodies/models/parametrisations changed; net effect depends on whether more environments now run (multi-node) or fewer run (single-node world_size=1).
- Needs
/qa-verify: yes - this is a test-infra gating change; QA should confirm the 8-way tests are launched with world_size==8 in their stages and are not silently skipped on single-node 8-GPU hosts.
Possible new issues
- Silent skip of 8-GPU tests on single-node hosts where MPI world size is 1.
- If
skip_less_mpi_world_sizeis not registered, pytest collection errors out. - Reviewer nv-xtf noted
launch_disaggregated_llmslices GPUs by local index in multi-node stages; moving these tests into multi-node stages could misplace GPUs (PR states disagg tests were excluded).
What I could not verify
- The definition of
skip_less_mpi_world_sizeand whether it is a registered marker. - The actual launch mechanism (single-process vs N-rank MPI) for each touched test in its CI stage - this is the crux of whether coverage is preserved or regressed.
Automated review by NVCortex Lite, run by @fredricz-20070104.
fredricz-20070104
left a comment
There was a problem hiding this comment.
Review summary - Approve (non-blocking)
Approving so this is not blocked on me. The points raised in my review comment above are non-blocking — please read them and address what you agree with before merging.
Worth doing before this is relied on: This modifies test infrastructure gating. QA must confirm the touched 8-way tests are actually launched with MPI world_size==8 in their CI stages (so they still run) and are not silently skipped on single-node 8-GPU hosts, and that skip_less_mpi_world_size is a registered marker.
Automated review by NVCortex Lite, run by @fredricz-20070104.
|
PR_Github #64911 [ run ] completed with state
|
Dev Engineer Review
skip_less_devicetoskip_less_mpi_world_size.QA Engineer Review
tests/integration/defs/accuracy/test_llm_api_pytorch.pytests/integration/defs/test_e2e.pyDescription
Test Coverage
PR Checklist
Please review the following before submitting your PR:
PR description clearly explains what and why. If using CodeRabbit's summary, please make sure it makes sense.
PR Follows TRT-LLM CODING GUIDELINES to the best of your knowledge.
Test cases are provided for new code paths (see test instructions)
If PR introduces API changes, an appropriate PR label is added - either
api-compatibleorapi-breaking. Forapi-breaking, includeBREAKINGin the PR title.Any new dependencies have been scanned for license and vulnerabilities
CODEOWNERS updated if ownership changes
Documentation updated as needed
Update tava architecture diagram if there is a significant design change in PR.
The reviewers assigned automatically/manually are appropriate for the PR.
Please check this after reviewing the above items as appropriate for this PR.
GitHub Bot Help
To see a list of available CI bot commands, please comment
/bot help.