Repository navigation
test: split GDN/GDN2 CI and quarantine flaky GDN2 parallel tests - #8148
Merged
balasaajay merged 7 commits intoOct 14, 2026
Merged
Conversation
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
balasaajay
marked this pull request as ready for review
October 12, 2026 17:29
Phlip79
approved these changes
Oct 12, 2026
chtruong814
approved these changes
Oct 12, 2026
Phlip79
approved these changes
Oct 12, 2026
balasaajay
enabled auto-merge
October 12, 2026 23:57
github-merge-queue
Bot
removed this pull request from the merge queue due to a conflict with the base branch
Oct 13, 2026
Signed-off-by: Ajay Balasa <abalasa@nvidia.com>
Signed-off-by: Ajay Balasa <abalasa@nvidia.com>
Signed-off-by: Ajay Balasa <abalasa@nvidia.com>
Signed-off-by: Ajay Balasa <abalasa@nvidia.com>
Signed-off-by: Ajay Balasa <abalasa@nvidia.com>
Signed-off-by: Ajay Balasa <abalasa@nvidia.com>
Mark both copies flaky_in_dev after recurring TP4 and CP2 hangs. Preserve the six parameterizations for LTS and keep module coverage enabled. Track diagnosis and re-enabling in NVIDIA#7742. Signed-off-by: Ajay Balasa <abalasa@nvidia.com>
balasaajay
force-pushed
the
perf/gdn-unit-test-shards-20261012
branch
from
October 13, 2026 14:47
3f36656 to
5fc80b5
Compare
Contributor
Author
|
/ok to test 5fc80b5 |
|
🔄 Merge queue validation started! You can track the progress here: https://github.com/NVIDIA/Megatron-LM/actions/runs/38478361365 |
FDecaYed
added a commit
to FDecaYed/Megatron-LM
that referenced
this pull request
Oct 16, 2026
Follow main NVIDIA#8148 GDN/GDN2 organization with unchanged shared assertions and tolerances, without new quarantine markers. Replace the 96-case post-fusion product with 15 pair/triple-covering integration cases and keep cheap coverage guards in normal CI. Account for all dev-added tests, support multimodal Testmon identities, and add narrow compiled-kernel/Muon mappings. Keep GitLab H100 bucket count and time limits unchanged. Signed-off-by: Deyu Fu <deyuf@nvidia.com>
3 of 4 tasks
1 task done
3 of 7 tasks
This branch was previously deployed
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.
What does this PR do?
Split the combined GDN/GDN2 unit-test job into two independently scheduled buckets, with GDN running exclusively on one GB200 x4 runner and GDN2 on H100.
tests/unit_tests/ssm/test_gated_delta_net.py— all GDN module, FLA/TE parallel correctness, and remaining checkstest_gated_delta_net2.py— GDN2 module and parallel correctnessThe shared module-test bodies move into a non-collected helper. All 199 cases retain their assertions, shapes, seeds, TP/CP layouts, fixtures, parameter IDs, and existing skip/internal markers, except for the dev-only GDN2 parallel quarantine below. The GDN padding comparison adopts the established tolerance described below; other numerical bounds are unchanged. GDN2 cases change their file path; GDN retains its original node IDs and gains
launch_on_gb200. Its TP/CP layouts fit four workers. The original H100 run used all eight ranks, with additional ranks forming data-parallel replicas; moving GDN to four workers changes that replication. Production code is unchanged.The H100 recipe schedules GDN2 and the GB200 recipe schedules one dedicated GDN bucket. A scoped exclusion in
find_test_cases.pykeeps GDN out of H100 catch-all buckets; existing child-bucket exclusions prevent duplicate GB200 execution. Other tests markedlaunch_on_gb200retain their existing cross-platform behavior. Both buckets use the latest tag and existing per-platform settings. The pinned legacy suite has no GDN tests.Measured behavior
The original combined H100 job took 55m38s overall, including 52m17s in pytest. The GDN-only portion is approximately 32–33 minutes when reconstructed from its logs.
In run 38284519331, GDN on four GB200 GPUs took 37m48s overall, including 32m41s in pytest, with 118 passed and 21 skipped. GDN2 on H100 passed 44 cases and skipped 16 after an NCCL-timeout retry; its job took 45m30s excluding queue time. These observations do not establish a hardware speedup or a reduction in total workflow duration. Separate buckets allow scheduling independently; runner availability, compilation, and retries affect elapsed time.
GDN padding tolerance
Run 38305226282 exposed a stale tolerance in the shared
test_gpu_forward_thd_padding_correctness[1-False-1-gdn]case: rank 0 had 19/245,760 output elements outsideatol=rtol=3e-4, with maximum absolute difference 0.001953125. The other three ranks passed. Relevant source and the container image were unchanged from the prior passing GB200 execution; this was a numerical assertion failure, not a timeout.Set only this GDN padded SBHD-versus-THD comparison to
atol=rtol=5e-3, matching the existing standalone padding test. PR #6851's validation note documents intermittent BF16 differences of 0.001953125–0.00390625 and establishes this tolerance for the distinct FLA layouts. The code comment links that precedent. GDN2 keeps its1e-2tolerance, and ordinary GDN THD correctness keeps3e-4. This aligns duplicate test policy; it does not claim a kernel arithmetic fix.Temporary GDN2 parallel quarantine
Issue #7742 tracks intermittent H100 GDN2 hangs across TP4 and CP2 layouts. The latest occurrences exhausted three launcher attempts or GitHub's one-hour job limit. One captured rank stack waits for an Inductor asynchronous backward compilation; the underlying cause remains unresolved.
Mark
test_parallel_gated_delta_net2_correctnessasflaky_in_devin bothtest_gated_delta_net2.pyandtest_gated_delta_net2_parallel.py. This temporarily excludes all six parameterizations in each copy from dev CI; the standalone file previously excluded only its two TP4 cases. All six remain eligible in LTS. The other 54 GDN2 module cases and all 139 GDN cases retain their selection behavior. The existing empty-selection handling lets the standalone dev bucket complete successfully.This contains the known parallel-test stalls; it does not fix the compiler hang. The issue separately records a GDN2 module THD stall, which remains enabled, and the unrelated BF16 GDN padding mismatch addressed above. Re-enable the parallel test after an identified fix passes all six layouts on eight H100 GPUs across repeated cold-cache runs without launcher retries. No compiler setting or timeout is changed here.
Validation
git diff --checkpassed for the tolerance fix and quarantine. The autoformat script's optional mypy step was unavailable in the cached CI image.Issue tracking
GDN2 parallel quarantine and follow-up diagnostics: #7742 (kept open until the underlying hang is fixed).
Related: #7987 adds compiler-cache reuse for the separate
test_gdn_gated_output_norm_fusion.pybucket. It does not currently cache this GDN bucket.Contribution process
Pre-checks