[NVBUG-6448152][perf] remove synchronous Python PP transfer rendezvous - #16645
[NVBUG-6448152][perf] remove synchronous Python PP transfer rendezvous#16645chienchunhung wants to merge 9 commits into
Conversation
482158f to
0f9acdd
Compare
68d251b to
bff176b
Compare
|
/bot run --disable-fail-fast |
|
PR_Github #61988 [ run ] triggered by Bot. Commit: |
|
PR_Github #61988 [ run ] completed with state
|
bff176b to
e31fca7
Compare
|
/bot run --disable-fail-fast --stage-list "A10-PyTorch-2,A10-PyTorch-3,DGX_H100-PyTorch-1,DGX_H100-PyTorch-2,DGX_H100-PyTorch-3,DGX_H100-PyTorch-4,DGX_H100-PyTorch-5,DGX_H100-PyTorch-6" |
|
PR_Github #62040 [ run ] triggered by Bot. Commit: |
|
PR_Github #62040 [ run ] completed with state
|
e31fca7 to
da03373
Compare
|
/bot run --disable-fail-fast --stage-list "A10-PyTorch-1,A10-PyTorch-2,A10-PyTorch-3,A100X-PyTorch-Post-Merge-1,DGX_H100-PyTorch-1,DGX_H100-PyTorch-2,DGX_H100-PyTorch-3,DGX_H100-PyTorch-4,DGX_H100-PyTorch-5,DGX_H100-PyTorch-6" |
|
PR_Github #62267 [ run ] triggered by Bot. Commit: |
|
PR_Github #62267 [ run ] completed with state
|
|
/bot run --disable-fail-fast --stage-list "DGX_H100-PyTorch-4,DGX_H100-PyTorch-5,DGX_H100-PyTorch-6" |
|
PR_Github #62332 [ run ] triggered by Bot. Commit: |
|
PR_Github #62332 [ run ] completed with state
|
|
/bot run --disable-fail-fast |
|
PR_Github #62653 [ run ] triggered by Bot. Commit: |
|
PR_Github #62653 [ run ] completed with state
|
|
/bot run --disable-fail-fast --stage-list "GB200-4_GPUs-PyTorch-1,A100X-PyTorch-Post-Merge-1" |
|
PR_Github #62810 [ run ] triggered by Bot. Commit: |
|
PR_Github #62810 [ run ] completed with state |
Focused validation at the current production headThe exact focused trigger is terminal and green at head
This validates the receiver-side rank-0 peer-registration correction together with the productionized generation-first metadata-window and idempotent readiness-lifecycle fixes. The final full CI merge gate and the retained-assertion audit against the serving-lifecycle draft remain pending; no additional focused rerun is needed. |
|
/bot run --disable-fail-fast |
|
PR_Github #62828 [ run ] triggered by Bot. Commit: |
|
PR_Github #62828 [ run ] completed with state
|
Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
…ness Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
61be245 to
c55d778
Compare
|
/bot run --disable-fail-fast |
|
PR_Github #63083 [ run ] triggered by Bot. Commit: |
|
PR_Github #63083 [ run ] completed with state
|
Summary
Remove synchronous pipeline-parallel rendezvous from the qualified Python NIXL transceiver path while preserving one authoritative cross-rank decision for every request transition.
This is the production merge vehicle for NVBUG-6448152. It was rebuilt from the validated production subset of the TEST ONLY Python validation draft. Performance harnesses and diagnostic instrumentation remain excluded.
The branch contains nine logical DCO-signed commits covering:
Problem
The existing Python path uses blocking collectives to reconcile rank-local readiness and terminal outcomes. Pipeline stages reach those calls at different times, so ordinary PP arrival skew becomes serialized waiting on the hot path. Publishing a local terminal result is also unsafe until native writes, callbacks, bounce scatters, and cancellation obligations can no longer touch request memory.
Generation-first validation exposed two additional defects in the production boundary:
max_batch_size=1topology that exposed only four of 256 independently ordered requests for peer-metadata association, so a complete four-rank cohort was rarely formed.prepare_context_requestsduring admission and again while polling schedulability. A READY event could move the same request from waiting to prepared between those calls; the second call then repinned and reinserted it as a new waiter. After epoch 0 completed, that stale waiter could publish epoch 1 for the already-active request and fail the authoritative schedule invariant.Generation-first startup had also exposed a separate endpoint-lifetime issue. Executor creation constructs an estimation transceiver before the final serving transceiver so KV capacity accounts for transfer registration and bounce memory. The temporary executor could nevertheless publish its endpoint through cached server metadata, leaving the router with a retired endpoint.
Full CI then exposed a receiver-owned bounce-planning issue: first-contact metadata was published GEN-to-CTX, but the receiving rank needed receiver-local CTX rank-0 metadata to derive the exact coalesced destination plan. The missing entry caused rank-0 lookup failure and fail-open per-fragment fallback.
Design
CacheTransceiverConfig.max_num_generation_first_pre_active_requests.Nonepreserves the compute-cap default; deployments with independently ordered high-concurrency CTX/GEN traffic can select a larger bounded window. Compute activation remains capped bymax_num_active_requests.Readiness is a separate factor from terminal agreement: a readiness vote is withdrawable until PREPARE and becomes active only through the scheduler, whereas a terminal vote is immutable and authorizes resource reclamation.
Initial scope
The asynchronous protocol is explicit opt-in and default off. Its qualified domain is:
Unsupported or flag-off configurations retain their existing runtime behavior. A mismatched explicit opt-in fails during startup negotiation before request traffic.
Validation
The instrumented generation-first E2E evidence is valid:
b_is_valid=true.This proves functional generation-first PP consensus for the integrated candidate. It does not demonstrate a raw throughput improvement: 454.92 output tok/s is 1.885% below the unmatched historical 463.66 context-first result, which used two rounds and no asynchronous flags or instrumentation. A matched same-head A/B is still required for a throughput claim.
Client completion is independent of the final CTX cleanup tail. Strict terminal consensus reached 251 commits on every rank before harness teardown; four remaining rounds lacked rank 3's nonblocking quiescence vote and one lacked all votes. There was no shutdown failure, but this description does not claim 256/256 terminal commits. A pre-teardown drain/assertion remains required for that stronger proof.
Prior exact-head focused CI evidence for the production boundary includes 9,583 passed, 8,557 skipped, and zero test failures across the allocated targeted stages. The real four-rank MPI agreement test passed. Two H100 shards repeatedly failed before allocation or pytest because the requested Slurm node configuration was unavailable; that is missing coverage, not a product failure.
The exact-head receiver-bounce and executor-lifetime proof is terminal green on the current production head:
[kv-bounce] coalescedmarker, all captured client responses were HTTP 200, and there was no exact-plan fallback,KeyError, or traceback.For the current production head:
Remaining merge gates
Before this draft is marked ready:
This pull request remains a draft until those gates are complete.