[Bugfix] Fix Ministral3 init argument forwarding (#29111)
This commit is contained in:
@@ -31,6 +31,7 @@ class Ministral3Attention(LlamaAttention):
|
|||||||
num_heads: int,
|
num_heads: int,
|
||||||
num_kv_heads: int,
|
num_kv_heads: int,
|
||||||
layer_id: int = 0,
|
layer_id: int = 0,
|
||||||
|
start_layer: int = 0,
|
||||||
rope_theta: float = 1000000.0,
|
rope_theta: float = 1000000.0,
|
||||||
rope_scaling: Optional[Dict[str, Any]] = {},
|
rope_scaling: Optional[Dict[str, Any]] = {},
|
||||||
rope_is_neox_style: bool = True,
|
rope_is_neox_style: bool = True,
|
||||||
@@ -40,18 +41,19 @@ class Ministral3Attention(LlamaAttention):
|
|||||||
bias: bool = False,
|
bias: bool = False,
|
||||||
) -> None:
|
) -> None:
|
||||||
super().__init__(
|
super().__init__(
|
||||||
config,
|
config=config,
|
||||||
hidden_size,
|
hidden_size=hidden_size,
|
||||||
num_heads,
|
num_heads=num_heads,
|
||||||
num_kv_heads,
|
num_kv_heads=num_kv_heads,
|
||||||
layer_id,
|
layer_id=layer_id,
|
||||||
rope_theta,
|
start_layer=start_layer,
|
||||||
rope_scaling,
|
rope_theta=rope_theta,
|
||||||
rope_is_neox_style,
|
rope_scaling=rope_scaling,
|
||||||
max_position_embeddings,
|
rope_is_neox_style=rope_is_neox_style,
|
||||||
quant_config,
|
max_position_embeddings=max_position_embeddings,
|
||||||
prefix,
|
quant_config=quant_config,
|
||||||
bias,
|
prefix=prefix,
|
||||||
|
bias=bias,
|
||||||
)
|
)
|
||||||
# Ministral3 specific: llama 4 style scaling beta
|
# Ministral3 specific: llama 4 style scaling beta
|
||||||
self.llama_4_scaling_beta = config.rope_parameters.get("llama_4_scaling_beta")
|
self.llama_4_scaling_beta = config.rope_parameters.get("llama_4_scaling_beta")
|
||||||
@@ -95,14 +97,28 @@ class Ministral3Attention(LlamaAttention):
|
|||||||
|
|
||||||
|
|
||||||
class Ministral3DecoderLayer(LlamaDecoderLayer):
|
class Ministral3DecoderLayer(LlamaDecoderLayer):
|
||||||
def __init__(self, config, layer_id=0, quant_config=None, prefix=""):
|
def __init__(
|
||||||
super().__init__(config, layer_id, quant_config, prefix)
|
self,
|
||||||
|
config,
|
||||||
|
layer_id=0,
|
||||||
|
start_layer=0,
|
||||||
|
quant_config=None,
|
||||||
|
prefix="",
|
||||||
|
):
|
||||||
|
super().__init__(
|
||||||
|
config=config,
|
||||||
|
layer_id=layer_id,
|
||||||
|
start_layer=start_layer,
|
||||||
|
quant_config=quant_config,
|
||||||
|
prefix=prefix,
|
||||||
|
)
|
||||||
self.self_attn = Ministral3Attention(
|
self.self_attn = Ministral3Attention(
|
||||||
config=config,
|
config=config,
|
||||||
hidden_size=self.hidden_size,
|
hidden_size=self.hidden_size,
|
||||||
num_heads=config.num_attention_heads,
|
num_heads=config.num_attention_heads,
|
||||||
num_kv_heads=config.num_key_value_heads,
|
num_kv_heads=config.num_key_value_heads,
|
||||||
layer_id=layer_id,
|
layer_id=layer_id,
|
||||||
|
start_layer=start_layer,
|
||||||
rope_theta=config.rope_parameters["rope_theta"],
|
rope_theta=config.rope_parameters["rope_theta"],
|
||||||
rope_scaling=config.rope_parameters, # rope_scaling is rope_parameters in Ministral3Config
|
rope_scaling=config.rope_parameters, # rope_scaling is rope_parameters in Ministral3Config
|
||||||
max_position_embeddings=getattr(
|
max_position_embeddings=getattr(
|
||||||
@@ -123,12 +139,16 @@ class Ministral3Model(LlamaModel):
|
|||||||
prefix: str = "",
|
prefix: str = "",
|
||||||
) -> None:
|
) -> None:
|
||||||
# Override layer creation to use Ministral3Attention
|
# Override layer creation to use Ministral3Attention
|
||||||
super().__init__(config, quant_config, prefix)
|
super().__init__(config=config, quant_config=quant_config, prefix=prefix)
|
||||||
|
|
||||||
self.layers, self.start_layer, self.end_layer = make_layers(
|
self.layers, self.start_layer, self.end_layer = make_layers(
|
||||||
config.num_hidden_layers,
|
config.num_hidden_layers,
|
||||||
lambda idx, prefix: Ministral3DecoderLayer(
|
lambda idx, prefix: Ministral3DecoderLayer(
|
||||||
config=config, quant_config=quant_config, layer_id=idx, prefix=prefix
|
config=config,
|
||||||
|
quant_config=quant_config,
|
||||||
|
layer_id=idx,
|
||||||
|
start_layer=self.start_layer,
|
||||||
|
prefix=prefix,
|
||||||
),
|
),
|
||||||
pp_rank=self.pp_group.rank_in_group,
|
pp_rank=self.pp_group.rank_in_group,
|
||||||
pp_size=self.pp_group.world_size,
|
pp_size=self.pp_group.world_size,
|
||||||
@@ -143,7 +163,7 @@ class Ministral3ForCausalLM(LlamaForCausalLM):
|
|||||||
quant_config: Optional[QuantizationConfig] = None,
|
quant_config: Optional[QuantizationConfig] = None,
|
||||||
prefix: str = "",
|
prefix: str = "",
|
||||||
):
|
):
|
||||||
return Ministral3Model(config, quant_config, prefix=prefix)
|
return Ministral3Model(config=config, quant_config=quant_config, prefix=prefix)
|
||||||
|
|
||||||
|
|
||||||
EntryClass = [Ministral3ForCausalLM]
|
EntryClass = [Ministral3ForCausalLM]
|
||||||
|
|||||||
Reference in New Issue
Block a user