[TRTLLM-12721][fix] Harden PyExecutor disagg cancellation lifecycle - #15795
Draft
chienchunhung wants to merge 2 commits into
Draft
[TRTLLM-12721][fix] Harden PyExecutor disagg cancellation lifecycle#15795chienchunhung wants to merge 2 commits into
chienchunhung wants to merge 2 commits into
Conversation
chienchunhung
force-pushed
the
codex/disagg-cancel-pyexecutor-lifecycle
branch
from
June 30, 2026 18:30
3d499a1 to
d85793b
Compare
Collaborator
Author
|
/bot run --disable-fail-fast |
Collaborator
|
PR_Github #56694 [ run ] triggered by Bot. Commit: |
chienchunhung
added a commit
to chienchunhung/TensorRT-LLM
that referenced
this pull request
Jun 30, 2026
Combine the current NVIDIA#15238, NVIDIA#15737, NVIDIA#15794, and NVIDIA#15795 snapshots into one parent commit for NVIDIA#15738. The source PRs remain independently reviewable and mergeable. Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
chienchunhung
added a commit
to chienchunhung/TensorRT-LLM
that referenced
this pull request
Jun 30, 2026
Combine the current NVIDIA#15238, NVIDIA#15737, NVIDIA#15794, and NVIDIA#15795 snapshots into one parent commit for NVIDIA#15738. The source PRs remain independently reviewable and mergeable. Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
chienchunhung
added a commit
to chienchunhung/TensorRT-LLM
that referenced
this pull request
Jun 30, 2026
Combine the current NVIDIA#15238, NVIDIA#15737, NVIDIA#15794, and NVIDIA#15795 snapshots into one parent commit for NVIDIA#15738. The source PRs remain independently reviewable and mergeable. Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
Collaborator
Author
|
/bot run --disable-fail-fast |
Collaborator
|
PR_Github #56711 [ run ] triggered by Bot. Commit: |
Collaborator
|
PR_Github #56694 [ run ] completed with state |
This was referenced Jun 30, 2026
chienchunhung
force-pushed
the
codex/disagg-cancel-pyexecutor-lifecycle
branch
from
June 30, 2026 22:23
d7ae0fa to
4c7ce2f
Compare
Collaborator
Author
|
/bot run --disable-fail-fast |
chienchunhung
force-pushed
the
codex/disagg-cancel-pyexecutor-lifecycle
branch
from
June 30, 2026 22:30
4c7ce2f to
198c2ef
Compare
Collaborator
Author
|
/bot run --disable-fail-fast |
Collaborator
|
PR_Github #56741 [ run ] triggered by Bot. Commit: |
Collaborator
|
PR_Github #56745 [ run ] triggered by Bot. Commit: |
Collaborator
|
PR_Github #56741 [ run ] completed with state |
Collaborator
|
PR_Github #56745 [ run ] completed with state
|
chienchunhung
added a commit
to chienchunhung/TensorRT-LLM
that referenced
this pull request
Jun 30, 2026
Combine the current NVIDIA#15238, NVIDIA#15737, NVIDIA#15794, and NVIDIA#15795 snapshots into one parent commit for NVIDIA#15738. The source PRs remain independently reviewable and mergeable. Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
…wnership Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
chienchunhung
force-pushed
the
codex/disagg-cancel-pyexecutor-lifecycle
branch
from
June 30, 2026 23:58
198c2ef to
f45ebae
Compare
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.
Summary
This draft adds the PyExecutor and IPC lifecycle support required by disaggregated in-flight KV-transfer cancellation. It depends on #15794 and keeps the feature disabled by default.
#15794 owns timeout detection, rank consensus, native cancellation, quiescence, and the topology-poison latch. This PR consumes that contract without rank-local cancellation, duplicate terminal responses, unsafe teardown, or hung proxy callers.
Changes
FinishReason.CANCELLEDresponse is emitted after native andAsyncTransferManagerowners release the request;WorkerFatalErrorand fail all proxy-owned results;worker_mainwithout cross-thread request-ZMQ access;FatalStopmessages;Activation scope
Opt-in is accepted only for standard PyTorch
PyExecutorwith the C++ transceiver, NIXL/UCX, asynchronous preallocated staging buffers, positive admission and timeout bounds, ordinary TP (PP=CP=1, no attention DP), no KV connector, and no layerwise or zero-copy transfer.The IPC executor must also own disposable
MpiPoolSessionworker processes so poison can be resolved by starting fresh processes. ReusableMpiCommSession, remote management-leader, Ray, RPC, and single-process paths fail opt-in preflight. With the flag unset, existing paths retain legacy behavior.Validation
Passed on
198c2efaac:git diff --checkand Python syntax compilation.Not available locally: focused pytest collection because
transformersis not installed, realMpiPoolSessionplus postprocess-parallel fatal IPC teardown, and distributed GPU poison fault injection.Stack follow-ups
#15798 and #15799 do not block this default-off PR. #15798 is required before #15738 enables the feature for qualified deployments. #15799 must be implemented unless an explicitly approved bounded fail/restart policy provides equivalent no-peer and ambiguous-transfer safety.
Dependency graph
Arrows point from prerequisite to dependent. #15238 and #15737 are parallel inputs to #15794. Stacked child diffs remain cumulative until their parents merge.
flowchart LR PR15238["#15238<br/>gated cancellation<br/>(default off)"] PR15737["#15737<br/>CacheSender lost-wakeup fix"] PR15794["#15794<br/>C++ protocol and buffer safety<br/>(default off)"] PR15795["#15795<br/>PyExecutor + IPC lifecycle safety<br/>(default off)"] PR15798["#15798<br/>CTX↔GEN protocol/mode negotiation"] PR15799["#15799<br/>peer cancel/terminal protocol<br/>(design scaffold)"] PR15738["#15738<br/>qualified default-on policy"] PR15238 --> PR15794 PR15737 --> PR15794 PR15794 --> PR15795 PR15794 --> PR15798 PR15798 --> PR15799 PR15795 --> PR15738 PR15798 --> PR15738 PR15799 -.->|or approved bounded fail/restart policy| PR15738