support Llama4 with non uniformed intermediate size across layers for… (#10047)

This commit is contained in:
gongwei-130
2025-09-05 17:28:15 -07:00
committed by GitHub
parent 273b28344b
commit ab62b135c1
7 changed files with 123 additions and 13 deletions
+25
View File
@@ -961,5 +961,30 @@ class Llama4ForConditionalGeneration(nn.Module):
def set_embed(self, embed):
return self.language_model.set_embed(embed)
def get_hidden_dim(self, module_name, layer_idx):
# return input_dim, output_dim
if module_name == "qkv_proj":
return (
self.config.hidden_size,
self.config.head_dim
* (
self.config.num_attention_heads
+ self.config.num_key_value_heads * 2
),
)
elif module_name == "o_proj":
return (
self.config.head_dim * self.config.num_attention_heads,
self.config.hidden_size,
)
elif module_name == "gate_up_proj":
return self.config.hidden_size, self.config.intermediate_size * 2
elif module_name == "down_proj":
decoder_layer = self.language_model.get_layers()[layer_idx]
intermediate_size = decoder_layer.get_intermediate_size()
return intermediate_size, self.config.hidden_size
else:
raise NotImplementedError()
EntryClass = Llama4ForConditionalGeneration