[TRTLLM-12199][feat] WideEP FT: add EPGroupHealth thread-safe rank mask (1a.1)#13302
Conversation
1e04363 to
86afc95
Compare
|
/bot run --disable-fail-fast |
|
PR_Github #45300 [ run ] triggered by Bot. Commit: |
|
PR_Github #45300 [ run ] completed with state
|
Cross-link NVIDIA#13302 (the EPGroupHealth implementation) from the 1a.1 row of the implementation plan so future readers can trace each plan item to its filed PR. Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com> Made-with: Cursor
86afc95 to
6823d55
Compare
|
/bot run --disable-fail-fast |
|
PR_Github #45436 [ run ] triggered by Bot. Commit: |
…move v1 files Final batch of the v2 rewrite. §0 executive summary — problem statement, approach, key MPI-vs-Ray decision, two failure modes named, the four TRT-LLM uniqueness properties, headline timeline numbers, and an explicit "what v2 changes vs v1" list for readers coming from the prior version. README — complete rewrite as navigation for v2. Section table with one-line summaries per section. In-flight PR table (NVIDIA#13302 and NVIDIA#13404 against this design). Consolidated terminology table including the rank/process/slot distinction that a reviewer flagged as missing. Scope & non-goals stated once, not repeated throughout. Removing v1 files: - 01-background.md → content folded into 01-user-journey-and-stack.md (§1.3) and 00-executive-summary.md - 02-current-state.md → folded into 01-user-journey-and-stack.md (§1.2) and 03-failure-modes-and-gaps.md - 03-competitive-landscape.md → folded into 02-stack-comparison-and-positioning.md - 04-two-phase-recovery.md → superseded by 04-architecture-overview.md (now three-phase) - 05-rank-masking.md → folded into 05-phase-1-immediate-survival.md §5.1 - 06-eplb-adaptation.md → folded into 05-phase-1-immediate-survival.md §5.2 - 07-failure-detection.md → folded into 05-phase-1-immediate-survival.md §5.3 and §5.4 - 08-mx-gms-integration.md → split between 05-phase-1 (PR NVIDIA#12718 integration in §5.3) and 06-phase-2 (MX-GMS in §6.3) - 09-implementation-plan.md → superseded by 08-implementation-plan.md - 10-risks.md → superseded by 09-risks-and-open-questions.md - COMBINED.md → superseded; single-file view can be regenerated from the split files if needed New v2 file set: README + §0-§9 (11 files) + 3 workflow artifacts (redesign-outline, redesign-research-pass, redesign-research-pass-report). Section count held at 10 numbered sections (§0-§9) but with cleaner phase boundaries — one section per phase. Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
|
PR_Github #45436 [ run ] completed with state
|
6823d55 to
0323d2f
Compare
…ype scaffold Adds PR NVIDIA#14198 (DO NOT SUBMIT — preview only) to the in-flight PRs table in the README and updates mvp-prototype-plan.md to reflect that the prototype scaffolding is now shipped on branch WideEP-FT/mvp-prototype: * README.md In-flight PRs table: new row for NVIDIA#14198 (status flagged as "Draft (DO NOT SUBMIT — preview only)" to distinguish from the MVP component PRs). * README.md prototype paragraph: links NVIDIA#14198 alongside the cherry-picked NVIDIA#13302 and NVIDIA#14160; notes the discardable prototypes/wide_ep_ft_mvp/ directory. * mvp-prototype-plan.md Status header: bumped to reflect scaffolding-shipped state. * mvp-prototype-plan.md §6 sequencing: new "Current status (2026-05-15)" paragraph documenting that both 1a.1 (NVIDIA#13302) and 1d.0 (NVIDIA#14160) are private cherry-picks on the prototype branch pending their merges to main, and that the kernel-side 1a.2 + 1a.3 work is deferred per prototypes/wide_ep_ft_mvp/kernel/README.md. Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
0323d2f to
09bdf4c
Compare
|
/bot run --disable-fail-fast |
|
PR_Github #53991 [ run ] triggered by Bot. Commit: |
|
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)
📝 WalkthroughWalkthroughThis PR introduces ChangesEP Group Health Implementation and Tests
🎯 3 (Moderate) | ⏱️ ~25 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
PR_Github #53991 [ run ] completed with state
|
|
/bot run --disable-fail-fast --stage-list "DGX_B200-8_GPUs-PyTorch-1,GB300-PyTorch-1" |
|
PR_Github #54147 [ run ] triggered by Bot. Commit: |
|
PR_Github #54147 [ run ] completed with state |
3255353 to
14e5491
Compare
|
/bot run |
|
PR_Github #54347 [ run ] completed with state |
EPGroupHealth is the process-local, thread-safe primitive that tracks which ranks in an EP group are alive vs. failed. It is the foundational data structure for WideEP fault tolerance (PR 1a.1 of the implementation plan), shared across the AlltoAll communication backends, the host-side watchdog, the MoE load balancer, and PyExecutor health reporting. Internally backed by an arbitrary-precision Python int bitmask; the uint64[N] format expected by the NVLink AlltoAll kernels is exposed via get_mask_words() (default 2 words covers the NVL72 72-rank case). mark_failed / mark_active are idempotent and bump a monotonic generation counter only on effective state change, so consumers can compare a cached generation to detect mask changes without diffing the full mask. Tests cover the single-threaded API surface plus three concurrent race scenarios (distinct-rank fan-out across 128 threads, same-rank idempotency under contention, mixed fail/reactivate pairs). Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
14e5491 to
9b76997
Compare
|
PR_Github #54350 [ run ] triggered by Bot. Commit: |
|
PR_Github #54350 [ run ] completed with state
|
|
/bot run --disable-fail-fast --stage-list "H100_PCIe-PyTorch-Ray-1" |
|
PR_Github #54373 [ run ] triggered by Bot. Commit: |
|
PR_Github #54373 [ run ] completed with state |
|
/bot run --disable-fail-fast |
|
PR_Github #54385 [ run ] triggered by Bot. Commit: |
|
PR_Github #54385 [ run ] completed with state
|
|
/bot run --disable-fail-fast --stage-list "DGX_B200-4_GPUs-PyTorch-Ray-1" |
|
PR_Github #54637 [ run ] triggered by Bot. Commit: |
|
PR_Github #54637 [ run ] completed with state |
|
/bot run --disable-fail-fast |
|
PR_Github #54666 [ run ] triggered by Bot. Commit: |
|
PR_Github #54666 [ run ] completed with state
|
|
/bot run --disable-fail-fast --stage-list "GB200-4_GPUs-PyTorch-1,GB200-4_GPUs-PyTorch-2,GB200-4_GPUs-PyTorch-3,GB200-4_GPUs-PyTorch-4,GB200-4_GPUs-PyTorch-5" |
|
PR_Github #54682 [ run ] triggered by Bot. Commit: |
|
PR_Github #54682 [ run ] completed with state
|
|
/bot run --disable-fail-fast |
1 similar comment
|
/bot run --disable-fail-fast |
|
PR_Github #54768 [ run ] triggered by Bot. Commit: |
|
PR_Github #54768 [ run ] completed with state |
…sk (1a.1) (NVIDIA#13302) Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com> Signed-off-by: GitLab CI Bot <gitlab-ci@nvidia.com>
…sk (1a.1) (NVIDIA#13302) Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com> Signed-off-by: GitLab CI Bot <gitlab-ci@nvidia.com>
Description
Adds
EPGroupHealth, a process-local, thread-safe rank-health primitive for WideEP fault tolerance (PR 1a.1).This PR has no runtime behavior change. It only adds the shared in-process state object that follow-up PRs will consume from the AlltoAll watchdog, NVLink rank-mask binding, EPLB reconfigure path, and PyExecutor health reporting.
EPGroupHealthprovides:mark_failed(rank)/mark_active(rank)mutators.is_active,get_active_count,get_failed_ranks, andall_activequeries.intand little-endianuint64words for the kernel ABI.generationcounter for cheap iteration-boundary change detection.snapshot()reads for consumers that need coherent multi-field state.Background
Phase 1 of WideEP FT needs one shared in-process answer to "which EP ranks are alive?" before later PRs can safely wire detection, kernel masking, EPLB remap, and health reporting. This PR intentionally limits scope to that primitive; cross-rank consensus, watchdog detection, kernel changes, and EPLB integration remain in follow-up PRs.
Test Coverage
Adds pure-Python unit coverage for:
Run:
pytest tests/unittest/_torch/modules/test_ep_group_health.py -vPR Checklist
Please review the following before submitting your PR:
PR description clearly explains what and why. If using CodeRabbit 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).
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.Summary by CodeRabbit
New Features
Tests