已开启
[Bug]: 分片后的 Qwen GatedDeltaNet 参数初始化发生 shape mismatch #393
townwish4gitcode创建于  9月15日
townwish4gitcode
9月15日 创建

Checklist

🐛 Describe the bug

_materialize_and_load_model 在模型参数完成 sharding 后调用 Transformers
模型自身的初始化逻辑。

对于 Qwen3.5、Qwen3.5-MoE、Qwen3-Next 等包含 GatedDeltaNet 的模型,
A_log 和 dt_bias 已经是本地 shard,但 Transformers _init_weights
仍按照全局 num_v_heads 创建临时 Tensor。

例如:

init.copy_(
    module.A_log,
    torch.empty(module.num_v_heads, device=module.A_log.device)
        .uniform_(0.01, 16)
        .log_(),
)

此时目标参数使用 local shape,源 Tensor 使用 global shape,导致
copy_ 报 shape mismatch。

此外,不同 Transformers 版本包含的模型集合不同。例如项目依赖的
Transformers 5.13 尚不包含 Qwen4Exp,直接导入相关实现会在测试收集或
运行期间触发 ModuleNotFoundError。

Expected behavior

  • 默认模型继续使用 Transformers 原生权重初始化。
  • 存在分片初始化问题的模型可以注册 family-local、shard-aware 初始化函数。
  • 模型 adapter 声明最低 Transformers 版本。
  • 当前 Transformers 版本低于最低版本时,不注册该模型,也不加载其实现。
  • 最低版本及更高版本均应注册,即使用 installed >= minimum。

Additional context

自定义初始化实现应位于对应模型目录中,避免引入跨模型共享的初始化组件。

Environment info

  • Transformers: 5.13.0
  • PyTorch: 2.9.0
  • torch_npu: 2.9.0
  • Hardware: Ascend 910B3

Thanks for contributing 🎉!

likedislike
Ttownwish4gitcode
9月15日 关联了pull request:fix(models): gate adapters by Transformers version
Ttownwish4gitcode
9月15日 关联了pull request:fix(models): add shard-aware weight initialization