Repository navigation
TEST: Cover multi-prefill and multi-decode GPU routing - #5632
Merged
Merged
Conversation
rogercloud
approved these changes
Oct 4, 2026
rogercloud
left a comment
Contributor
There was a problem hiding this comment.
Minor
xinference/model/llm/vllm/xavier/test/test_pd_multi_gpu.py:54—chat()lacksenable_thinking: False; thinking-model overrides fail the answer assertion.xinference/model/llm/vllm/xavier/test/test_pd_gpu.py:43— undocumented log-level knob; any level above DEBUG breaks the evidence assertions.xinference/model/llm/vllm/xavier/test/test_pd_multi_gpu.py:180—MULTI_PD_RESULTis discarded on passing CI runs (no-rP/-sin.github/workflows/pd-gpu.yaml:50).
Blocking: no — recommended event: APPROVE
qinxuye
force-pushed
the
test/pd-multi-replica
branch
from
October 5, 2026 04:15
276b1b3 to
fac9941
Compare
Contributor
Author
|
Addressed all three review comments and resolved their threads. Rebased onto current main (including merged #5630); the conflict was only the duplicate vllm.ir.op logging comment, and the upstream version was retained. Current head: fac9941. Validation after rebase: 81 passed, 9 GPU cases skipped; changed-file pre-commit passed. Workflow YAML parses, and a passing pytest smoke case confirms -rP retains successful stdout. GPU model cases were not rerun for these harness-only fixes. The PR description now distinguishes the earlier GPU run from this follow-up validation. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The GPU PD regression currently covers only 1P1D. Add shared-GPU 2P1D, 1P2D and 2P2D cases for Xavier and native NIXL, checking request-specific answers, streaming, concurrency and real KV transfers. The 2P2D test rotates decoder registration to cover all four P→D pairs; this is route registration coverage, not process-failure recovery.
Each deployment now writes an isolated, non-rotating evidence log. This fixes lost phase counters caused by shared log rotation during concurrent test sessions. The manually triggered PD GPU workflow runs the new cases and uploads those logs. Production scheduling remains round robin; the only production-code addition is DEBUG route evidence.
Validation
7fcdf37a0): 24 requests, all four pairs, actual KV receive checks passed. The subsequent review fixes disable thinking in the test request, require DEBUG evidence logging and retain passing-test output with-rP; GPU cases were not rerun for those harness changes.Performance validation completed before opening
Qwen2.5-0.5B-Instruct FP16, vLLM 0.21.0, xoscar 0.11.1, NIXL 1.1; two RTX 3090 Ti 24 GiB GPUs connected by NVLink NV3. Two producers share GPU 0 and two decoders share GPU 1. Each replica uses a 0.35 GPU memory fraction, eager mode, disabled engine prefix caching, and 256 MiB Xavier GPU history. All P/D transfer pairs are warmed before measurement; output length is 16 tokens.
These compare Xavier round-robin routing against a prefix-affinity prototype, not Xavier against native vLLM NIXL.
Ranges show two repetitions per policy in ABBA order. The first two profiles each use 12 cold, 36 sequential repeated and 2,400 concurrent requests per deployment; the mixed profile follows fixed lengths without clearing history. Capacity pressure uses 20 cold, 60 repeated and 1,200 concurrent requests. Its roughly 430 MiB KV working set exceeds one producer's GPU-history budget but fits the combined budget.
24,704 accepted measurement requests succeeded, with no foreign GPU processes observed in 805 one-second samples, excluding explicitly recorded idle daemons. Interfered pressure cases were discarded and rerun; a retry also stopped before launch when GPUs were busy. The accepted pressure sequence remains ABBA but has extra gaps. Process sampling is not a hardware reservation. DEBUG evidence logging affects absolute rates, and colocated replicas do not establish four-GPU scaling.
Findings:
The earlier short runs also failed to establish a consistent concurrent benefit. Their shared-log rotation failure was a measurement issue despite successful responses; isolated logs fix that issue.
The experiment runner and prototype are preserved separately; the Xavier README on that branch describes reproduction settings. This PR's Xavier README records the completed sustained and capacity-pressure results. Rebased onto current main, including the now-merged hybrid-attention PR #5630.