add gemma4 model#4725
Conversation
| if not hasattr(self, "num_experts_per_tok") or self.num_experts_per_tok == 2: | ||
| self.num_experts_per_tok = self.moe_router_topk |
There was a problem hiding this comment.
优先级:P1
这里从 Gemma4MoeConfig 加载后只把 num_experts 映射到了 n_routed_experts,但 provider 里的 num_moe_experts 仍保持类默认值 128;同样,shared expert 的 moe_shared_expert_intermediate_size 也会保持 2112。Gemma4TopKRouter 会优先按 num_moe_experts 创建 per_expert_scale,而 MoE 层/权重转换按 n_routed_experts 和 intermediate_size 工作,所以 tiny/random 配置或未来非 128 experts 的 Gemma4 checkpoint 会出现 router 参数、shared expert 参数与实际专家数/维度不一致。建议在 __post_init__ 中把这些派生字段同步到已加载的配置值。
| if not hasattr(self, "num_experts_per_tok") or self.num_experts_per_tok == 2: | |
| self.num_experts_per_tok = self.moe_router_topk | |
| if not hasattr(self, "num_experts_per_tok") or self.num_experts_per_tok == 2: | |
| self.num_experts_per_tok = self.moe_router_topk | |
| self.num_moe_experts = self.n_routed_experts | |
| self.moe_shared_expert_intermediate_size = self.intermediate_size |
There was a problem hiding this comment.
优先级:P1
补充当前 head 证据:10be004bec5f3a647f2fb70d0ac8d25bca46e03c 的 __post_init__ 仍只同步了 num_experts_per_tok,没有把 self.num_moe_experts 设置为 self.n_routed_experts,也没有把 self.moe_shared_expert_intermediate_size 设置为 self.intermediate_size。因此原问题在非默认 num_experts / intermediate_size 配置下仍会保留;请按原建议修复并提交新的 commit。
参考修复形态:
if not hasattr(self, "num_experts_per_tok") or self.num_experts_per_tok == 2:
self.num_experts_per_tok = self.moe_router_topk
self.num_moe_experts = self.n_routed_experts
self.moe_shared_expert_intermediate_size = self.intermediate_size处理要求:请针对该评论修复并提交新的 commit。
| from ...utils.lazy_import import _LazyModule | ||
|
|
||
| import_structure = { | ||
| "configuration": ["Gemma4MoeConfig"], |
There was a problem hiding this comment.
优先级:P2
新增子包自身配置了 lazy import,但还没有把 gemma4_moe 注册到 paddleformers/transformers/__init__.py 的顶层 import_structure 和 TYPE_CHECKING 导入分支。这样 AutoModel 的按模块加载可以工作,但仓库常用的 from paddleformers.transformers import Gemma4MoeConfig, Gemma4MoeForCausalLM 会找不到新类。请把新模块接入顶层导出,例如:
# paddleformers/transformers/__init__.py
"gemma4_moe.configuration": ["Gemma4MoeConfig"],
"gemma4_moe.modeling": ["Gemma4MoeForCausalLM"],
...
from .gemma4_moe import *
Before submitting
testsfolder. If there are codecov issues, please add tests cases first.PR types
New features
PR changes
Models
Description
add gemma4 model