feat[Muon]: migrate slice logic to caller, support fused storage, and generalize color-group management#78716
Merged
GuoxiaWang merged 1 commit intoPaddlePaddle:developfrom Apr 21, 2026
Conversation
|
你的PR提交成功,感谢你对开源项目的贡献! |
GuoxiaWang
requested changes
Apr 18, 2026
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #78716 +/- ##
==========================================
Coverage ? 93.54%
==========================================
Files ? 3
Lines ? 62
Branches ? 0
==========================================
Hits ? 58
Misses ? 4
Partials ? 0 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
…mpatibility - muon_sharding_optimizer: replace hardcoded None/moe_expert color paths with generic _rank2params_2d_by_color iteration in step() and __init__ Step4; replace static _build_color_to_group_info(hcg) with dynamic _build_color_to_group_info_from_params(parameter_list, default_group) that scans param.color dicts at runtime; generalize reduce_gradients and _sharding_sync_parameters similarly; clean up comments (fix errors, translate Chinese to English, remove dead code and debug prints) - muon: remove built-in QKV/FFN split logic (QKVInfo, qkv_info, intermediate_size, muon_qkv_update_mode, muon_ffn_split) from the optimizer; callers now pass slice strategies via MuonParamInfo.slice_func, keeping model-specific split logic out of the optimizer core; add ns_matmul_dtype parameter to Muon.__init__ and _zeropower_via_newtonschulz5 with auto-detect (bfloat16 on Ampere+, float32 on V100 and older) to enable CI on V100 - optimizer: allow Muon class to skip incompatible base-class checks - test: update hybrid_parallel_sharding_muon_model and test_parallel_dygraph_muon to use current MuonParamInfo API (slice_func instead of deprecated qkv_info/ intermediate_size); remove GPU capability >= 8 skipIf guard so tests run on V100 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Contributor
Author
|
/re-run all-failed |
GuoxiaWang
approved these changes
Apr 21, 2026
This was referenced Apr 22, 2026
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.
PR Category
Execute Infrastructure
PR Types
Improvements
Description
This PR makes two sets of changes to the Muon distributed optimizer:
Previously, MuonShardingOptimizer hardcoded two color paths (None for the default sharding group and moe_expert for MoE experts). Adding any new parameter group required modifying the optimizer internals.
Replace _build_color_to_group_info(hcg) (static, hardcoded) with _build_color_to_group_info_from_params(parameter_list, default_group) that dynamically scans param.color dicts at runtime — any new color is picked up automatically without code changes
Generalize step(), init (local_opt_params), reduce_gradients, and _sharding_sync_parameters to iterate _rank2params_2d_by_color instead of separate hardcoded loops
Clean up comments: fix incorrect descriptions, translate Chinese to English, remove dead code and debug prints
2. Move QKV/FFN split logic out of the optimizer; add V100 fp32 matmul fallback
Remove built-in QKV/FFN split logic (QKVInfo, qkv_info, intermediate_size, muon_qkv_update_mode, muon_ffn_split) from the optimizer core; model-specific slice strategies are now passed via MuonParamInfo.slice_func by the caller
Add ns_matmul_dtype parameter to Muon.init and _zeropower_via_newtonschulz5: auto-detects bfloat16 on Ampere+ (capability ≥ 8.0) and falls back to float32 on V100 and older, enabling CI on V100
是否引起精度变化
否