[fix] Stabilize ATOM FP8 no-eager rollout weight sync and CUDA graph lifecycle#1612
Open
xysheng-AMD wants to merge 10 commits into
Open
[fix] Stabilize ATOM FP8 no-eager rollout weight sync and CUDA graph lifecycle#1612xysheng-AMD wants to merge 10 commits into
xysheng-AMD wants to merge 10 commits into
Conversation
Signed-off-by: Haoyang Li <lihaoyang0109@gmail.com>
Signed-off-by: Haoyang Li <lihaoyang0109@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Older aiter builds expose the MoE scale-shuffle helper as shuffle_scale rather than moe_shuffle_scale; import it with an ImportError fallback so ATOM loads across aiter versions.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
In no-eager mode, keep weights, KV cache, and CUDA graphs resident across sleep/wake and apply online weight updates in-place (copy_ + in-place shuffle) so captured graphs stay valid and never need a fault-prone recapture under expandable_segments.
Co-authored-by: Cursor <cursoragent@cursor.com>
Contributor
🏷️ CI GuideRuns automatically on every eligible PR before approval:
Heavy model tests:
|
Contributor
|
Please resolve conflicts, thanks. |
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.
Motivation
Improve ATOM FP8 rollout stability and correctness for LumenRL DAPO long-running training with no-eager + compilation level 3.
This PR addresses several issues seen during RL training:
Technical Details
This PR updates the ATOM FP8 rollout path to keep CUDA graph dependencies stable across RL weight updates and sleep/wake cycles.
Key changes:
shuffle_scaleinstead ofmoe_shuffle_scale.copy_.The main stability change is moving away from repeated CUDA graph recapture after weight updates. Instead, the rollout engine keeps weights/KV cache/graphs resident and refreshes values in-place, avoiding ROCm illegal memory accesses observed during long-running sleep/wake recapture.
Test Plan
Validated with LumenRL DAPO ATOM FP8 rollout runs using:
Test coverage included:
Test Result
Smoke validation runs completed successfully after the lifecycle and in-place update fixes.
The updated ATOM branch was used in a formal LumenRL DAPO run and successfully passed validation checkpoints after rollout sleep/wake. In particular, the run progressed past validation after step 20 without the previous CUDA graph recapture crash pattern.
Observed:
CUDA graph recapture failedafter the in-place update change.Submission Checklist