support sublayer and layer share weight with SharedLayerDesc#79336
support sublayer and layer share weight with SharedLayerDesc#79336AlAuAu wants to merge 1 commit into
Conversation
PaddlePaddle-bot
left a comment
There was a problem hiding this comment.
🤖 Paddle-CI-Agent | pr_review |
2026-06-18 23:38:20
📋 Review 摘要
PR 概述:为 SharedLayerDesc 增加 submodule 与 layer 共享权重能力,并补充 pipeline shared weight 测试。
变更范围:python/paddle/distributed/fleet/meta_parallel/parallel_layers/pp_layers.py、test/collective/fleet/
影响面 Tag:[Distributed Strategy] [Communication Library]
问题
| 级别 | 文件 | 概述 |
|---|---|---|
| 🔴 Bug | python/paddle/distributed/fleet/meta_parallel/parallel_layers/pp_layers.py:1084 |
shared_weight_attr 返回 named_parameters() 时未同步更新 PP sync_param/sync_moment 的 color 标记逻辑,开启同步配置会构造失败 |
📝 PR 规范检查
标题缺少官方 Tag;描述结构和精度变化字段符合模板。
标题建议(可直接复制):
[Distributed Strategy] support sublayer and layer share weight with SharedLayerDesc
PR 描述建议(点击展开,可直接复制)
### PR Category
Distributed Strategy
### PR Types
New features
### Description
Support sublayer and layer weight sharing with `SharedLayerDesc`: add `shared_submodule_weight_only`, allow `shared_weight_attr` to expose `named_parameters()` for a shared submodule, and add a collective pipeline test for the aliasing path.
### 是否引起精度变化
否总体评价
变更方向符合 Distributed Strategy 场景,但当前实现只在 broadcast/allreduce 路径适配了 iterable 参数,没有同步适配 PP 参数/optimizer 状态同步的 color 标记逻辑。该问题会在已有的 sync_param/sync_moment 配置下直接阻断新功能使用,建议修复后再合入。
| if isinstance(obj, paddle.Tensor): | ||
| obj.is_firstly_shared = True | ||
| else: | ||
| for _, param in obj: |
There was a problem hiding this comment.
🔴 Bug shared_submodule_weight_only 允许 shared_weight_attr 返回 named_parameters(),但 PP 参数/optimizer 状态同步路径仍按单个 Tensor 处理该属性。
这里把非 Tensor 的 obj 当成 (name, param) iterable 处理后,同一个 weight_attr 也会进入 _construct_shared_comm() 的 sync_param/sync_moment 分支:shared_param = getattr(..., weight_attr); shared_param.color = ...。Layer.named_parameters() 返回 generator,generator 不能设置 color,所以用户只要像现有 shared-weight 用例一样打开 strategy.hybrid_configs["pp_configs"].sync_param = True 或 sync_moment = True,模型构造阶段就会抛 AttributeError,后续 HybridParallelOptimizer 也拿不到 p.color["broadcast_group"]。
建议修复方式:
把 _construct_shared_comm() 中设置 color 的逻辑也抽成与这里一致的参数迭代 helper:Tensor 走单个 param,named_parameters() 走每个 param,并给每个参数设置包含唯一参数名的 shared_weight_name(例如 f"{weight_attr}.{name}")。同时在新增测试里覆盖 sync_param=True 或 sync_moment=True 的 shared_submodule_weight_only 场景。
CI报告基于以下代码生成(30分钟更新一次): 1 Required任务 : 45/48 通过
2 失败详情🔴 Coverage test — PR问题(置信度: 高)错误类型: PR问题 | 置信度: 高
关键日志:
修复建议:
关联变更: 🔴 Check — 环境问题(置信度: 高)错误类型: 环境问题 | 置信度: 高
关键日志:
修复建议:
关联变更: 无直接关联 🔴 Fleet Unit test (single card) — 不稳定问题(置信度: 中)错误类型: 不稳定问题 | 置信度: 中
关键日志:
修复建议:
关联变更: 未发现与本 PR 修改文件直接关联 |
Codecov Report❌ Patch coverage is
❌ Your patch status has failed because the patch coverage (73.17%) is below the target coverage (90.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## develop #79336 +/- ##
==========================================
Coverage ? 73.17%
==========================================
Files ? 1
Lines ? 82
Branches ? 0
==========================================
Hits ? 60
Misses ? 22
Partials ? 0 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
PR Category
Distributed Strategy
PR Types
New features
Description
support sublayer and layer share weight with SharedLayerDesc
是否引起精度变化
否