已关闭
[Bug]: GPT Pynative FSDP 参数第 0 维不能被 data_parallel_shard 整除时分片失败 #2322
hsshuai创建于  6月5日关闭于  6月5日
hsshuai成员
6月5日 创建

Checklist

🐞 问题详细描述

在 GPT Pynative 模型开启 FSDP 时,部分参数的第 0 维大小可能无法被 data_parallel_shard / parallel_dims.fsdp 整除。当前逻辑仍会尝试对这些参数应用 FSDP 分片,导致参数切分不合法,进而可能触发运行时报错或初始化失败。

触发条件示例:

# 参数 shape[0] 不能被 data_parallel_shard 整除
# 例如 shape[0] = 3, data_parallel_shard = 2
# 开启 GPT Pynative FSDP 后,该参数不应继续进行 FSDP shard

期望行为:

当参数 shape[0] % data_parallel_shard != 0 时,该参数应作为 replicate parameter 处理,不参与 FSDP 分片,并给出 warning 提示。

实际行为:

未识别此类参数,仍可能进入 FSDP 分片流程,导致 shard 失败。

详细的环境信息描述

  • MindFormers Pynative GPT 训练场景
  • 开启 FSDP / data parallel shard
  • 存在第 0 维不能被 data_parallel_shard 整除的参数
  • 具体硬件、驱动、MindSpore 版本以复现环境为准

其他辅助信息

相关模块:

mindformers/pynative/base_models/gpt/parallelize.py

修复思路:

在 _collect_layer_replicate_params 中传入 parallel_dims.fsdp,遍历 layer 参数,当参数第 0 维不能被 shard size 整除时,将其加入 replicate_params,避免继续 apply FSDP。

版本信息

master

Thanks for contributing 🎉!

likedislike
Hhsshuai成员
6月5日 添加了label:bug
Hhsshuai成员
6月5日 添加了label:bug
Hhsshuai成员
6月5日 问题后端类型 由 [] 改变为 [Ascend]
Hhsshuai成员
6月5日 关联组件 由 [] 改变为 [B-SIG-MindFormers-Train]
Hhsshuai成员
6月5日 关联分支 由 [] 改变为 [master]
MindSpore-BotMindSpore-Bot成员
6月5日 关闭了 issue
MindSpore-BotMindSpore-Bot成员
6月5日 issue状态由 TODO 改变为 DONE