Skip to content

[Dev] fix: restore PR #3219 fine-grained offload semantics after PR #… - #4757

Merged
lhb8125 merged 2 commits into
NVIDIA:devfrom
lhb8125:hongbinl/fix_3219_bulk_offload_group
May 13, 2026
Merged

[Dev] fix: restore PR #3219 fine-grained offload semantics after PR #…#4757
lhb8125 merged 2 commits into
NVIDIA:devfrom
lhb8125:hongbinl/fix_3219_bulk_offload_group

Conversation

@lhb8125

@lhb8125 lhb8125 commented May 12, 2026

Copy link
Copy Markdown
Contributor

…4291 sync

The main→dev sync in #4291 partially reverted #3219:

  1. bulk_offload_group() regained pre-[Dev][feat] Support CUDA Graph capture offloading modules #3219 semantics (group_to_offload = self._groups_to_offload[-1] + .pop()), silently overriding the parameter and making bulk_offload()'s find_group_with_name() result effectively dead. Restore [Dev][feat] Support CUDA Graph capture offloading modules #3219's intent: honor the passed group, and let the caller remove it by identity via .remove(group_to_offload).

  2. multi_latent_attention.py core_attn block was reverted to the old with off_interface(...) + off_interface.group_commit(...) API. Refactor to [Dev][feat] Support CUDA Graph capture offloading modules #3219's manager pattern: core_attn_manager = off_interface(...) once, then with core_attn_manager as query: and an unconditional core_attn_manager.group_offload(...) (no-op when offload flag is False). Matches the sibling qkv_linear / attn_proj blocks.

  3. Drop the FineGrainedActivationOffloadingInterface.group_commit static-method shim added during the sync — it existed only to keep MLA's reverted call site working and has no remaining callers after (2).

What does this PR do ?

⚠️ For major changes (either in lines of code or in its impact), please make sure to first share a design doc with the team. If you're unsure what's the best way to do so, contact the @mcore-oncall.

Issue tracking

For PRs from open-source community contributors:

  • New features: a linked issue is required. Please open a feature request and reference it here before submitting the PR.
  • Small updates (bug fixes, minor improvements): a linked issue is recommended and will accelerate the PR review process.

Linked issue:

Contribution process

Pre-checks

  • I have added relevant unit tests
  • I have added relevant functional tests
  • I have added proper typing to my code Typing guidelines
  • I have added relevant documentation
  • I have run the autoformatter.sh on my PR

Code review

Feel free to message or comment the @mcore-oncall to help accelerate your merge into main. The less complex your PR is, the faster it will be approved and merged!

All PRs start as draft. If you open a non-draft PR, it will be automatically converted to draft.

Step 1: Mark PR as "Ready for Review"

  1. When your PR is ready, click Ready for Review.
  2. An oncall reviewer is auto-assigned and expert reviewers are notified based on your changes.
    • Some PRs may jump straight to step 2. This is determined by .github/CODEOWNERS.

⚠️ Only mark as ready once merge-conflicts are resolved and the CI is passing.
Final Review might get declined if these requirements are not fulfilled.

Step 2: Final Review

For PRs that change megatron/core, once all expert reviewers have approved, the Final Review label is applied automatically and final reviewers are assigned.

For PRs outside megatron/core, this step is skipped.

Step 3: Approved

Once all required reviewers have approved, the Approved label is applied automatically.

Merge

Any member of mcore-engineers will be able to merge your PR.

For MRs into `dev` branch The proposed review process for `dev` branch is under active discussion.

MRs are mergable after one approval by either eharper@nvidia.com or zijiey@nvidia.com.

…r PR NVIDIA#4291 sync

The main→dev sync in NVIDIA#4291 partially reverted NVIDIA#3219:

1. bulk_offload_group() regained pre-NVIDIA#3219 semantics
   (`group_to_offload = self._groups_to_offload[-1]` + `.pop()`),
   silently overriding the parameter and making
   bulk_offload()'s find_group_with_name() result effectively dead.
   Restore NVIDIA#3219's intent: honor the passed group, and let the
   caller remove it by identity via .remove(group_to_offload).

2. multi_latent_attention.py core_attn block was reverted to
   the old `with off_interface(...)` + `off_interface.group_commit(...)`
   API. Refactor to NVIDIA#3219's manager pattern:
   `core_attn_manager = off_interface(...)` once, then
   `with core_attn_manager as query:` and an unconditional
   `core_attn_manager.group_offload(...)` (no-op when offload flag
   is False). Matches the sibling qkv_linear / attn_proj blocks.

3. Drop the FineGrainedActivationOffloadingInterface.group_commit
   static-method shim added during the sync — it existed only to
   keep MLA's reverted call site working and has no remaining
   callers after (2).

Signed-off-by: Hongbin Liu <hongbinl@nvidia.com>
@lhb8125
lhb8125 requested review from a team as code owners May 12, 2026 09:21
@copy-pr-bot

copy-pr-bot Bot commented May 12, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@lhb8125

lhb8125 commented May 12, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test c5fdbde

@lhb8125
lhb8125 added this pull request to the merge queue May 13, 2026
@svcnvidia-nemo-ci

Copy link
Copy Markdown
Contributor

🔄 Merge queue validation started!

You can track the progress here: https://github.com/NVIDIA/Megatron-LM/actions/runs/25777275054

Merged via the queue into NVIDIA:dev with commit 5b376fd May 13, 2026
66 checks passed
@lhb8125
lhb8125 deleted the hongbinl/fix_3219_bulk_offload_group branch May 13, 2026 07:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants