Fix FP8 exclusions and MTP cache handling

#5
by iCavan - opened
Files changed (2) hide show
  1. config.json +2 -3
  2. modeling_bailing_moe_v3.py +13 -10
config.json CHANGED
@@ -130,8 +130,7 @@
130
  "modules_to_not_convert": [
131
  "lm_head",
132
  "model.word_embeddings",
133
- "b_proj",
134
- "mlp.gate",
135
  "model.layers.7.attention.g_proj",
136
  "model.layers.15.attention.g_proj",
137
  "model.layers.23.attention.g_proj",
@@ -251,4 +250,4 @@
251
  "vocab_size": 157184,
252
  "model_type": "bailing_hybrid",
253
  "torch_dtype": "bfloat16"
254
- }
 
130
  "modules_to_not_convert": [
131
  "lm_head",
132
  "model.word_embeddings",
133
+ "attention.b_proj",
 
134
  "model.layers.7.attention.g_proj",
135
  "model.layers.15.attention.g_proj",
136
  "model.layers.23.attention.g_proj",
 
250
  "vocab_size": 157184,
251
  "model_type": "bailing_hybrid",
252
  "torch_dtype": "bfloat16"
253
+ }
modeling_bailing_moe_v3.py CHANGED
@@ -1272,6 +1272,7 @@ class BailingMoeV3Model(BailingMoeV3PreTrainedModel):
1272
  output_attentions: Optional[bool] = None,
1273
  output_hidden_states: Optional[bool] = None,
1274
  output_router_logits: Optional[bool] = None,
 
1275
  return_dict: Optional[bool] = None,
1276
  **kwargs,
1277
  ) -> Union[Tuple, MoeV3ModelOutputWithPast]:
@@ -1412,7 +1413,7 @@ class BailingMoeV3Model(BailingMoeV3PreTrainedModel):
1412
 
1413
  mtp_hidden_states = None
1414
 
1415
- if mtp_layers:
1416
  for decoder_layer in mtp_layers:
1417
  input_ids, _ = roll_tensor(input_ids, shifts=-1, dims=-1)
1418
  inputs_embeds = self.word_embeddings(input_ids)
@@ -1424,10 +1425,10 @@ class BailingMoeV3Model(BailingMoeV3PreTrainedModel):
1424
  hidden_states,
1425
  attention_mask,
1426
  position_ids,
1427
- past_key_values,
1428
  output_attentions,
1429
  output_router_logits,
1430
- use_cache,
1431
  position_embeddings,
1432
  )
1433
  else:
@@ -1436,10 +1437,10 @@ class BailingMoeV3Model(BailingMoeV3PreTrainedModel):
1436
  hidden_states,
1437
  attention_mask=attention_mask,
1438
  position_ids=position_ids,
1439
- past_key_value=past_key_values,
1440
  output_attentions=output_attentions,
1441
  output_router_logits=output_router_logits,
1442
- use_cache=use_cache,
1443
  position_embeddings=position_embeddings,
1444
  )
1445
  if mtp_hidden_states is None:
@@ -1450,9 +1451,6 @@ class BailingMoeV3Model(BailingMoeV3PreTrainedModel):
1450
  if output_hidden_states:
1451
  all_hidden_states += (hidden_states,)
1452
 
1453
- if use_cache:
1454
- next_decoder_cache = layer_outputs[2 if output_attentions else 1]
1455
-
1456
  if output_attentions:
1457
  all_self_attns += (layer_outputs[1],)
1458
 
@@ -1554,6 +1552,10 @@ class BailingMoeV3ForCausalLM(BailingMoeV3PreTrainedModel, GenerationMixin):
1554
  output_router_logits if output_router_logits is not None else self.config.output_router_logits
1555
  )
1556
  return_dict = return_dict if return_dict is not None else self.config.use_return_dict
 
 
 
 
1557
  # decoder outputs consists of (dec_features, layer_state, dec_hidden, dec_attn)
1558
  outputs = self.model(
1559
  input_ids=input_ids,
@@ -1565,7 +1567,8 @@ class BailingMoeV3ForCausalLM(BailingMoeV3PreTrainedModel, GenerationMixin):
1565
  output_attentions=output_attentions,
1566
  output_hidden_states=output_hidden_states,
1567
  output_router_logits=output_router_logits,
1568
- return_dict=return_dict,
 
1569
  **kwargs,
1570
  )
1571
 
@@ -1580,7 +1583,7 @@ class BailingMoeV3ForCausalLM(BailingMoeV3PreTrainedModel, GenerationMixin):
1580
  loss = self.loss_function(logits, labels, self.config.vocab_size, **kwargs)
1581
 
1582
  all_mtp_logits = None
1583
- if self.num_nextn_predict_layers > 0:
1584
  mtp_hidden_states = outputs.mtp_hidden_states
1585
  shift_labels_mtp = None
1586
  for i in range(self.num_nextn_predict_layers):
 
1272
  output_attentions: Optional[bool] = None,
1273
  output_hidden_states: Optional[bool] = None,
1274
  output_router_logits: Optional[bool] = None,
1275
+ output_mtp_hidden_states: Optional[bool] = False,
1276
  return_dict: Optional[bool] = None,
1277
  **kwargs,
1278
  ) -> Union[Tuple, MoeV3ModelOutputWithPast]:
 
1413
 
1414
  mtp_hidden_states = None
1415
 
1416
+ if mtp_layers and output_mtp_hidden_states:
1417
  for decoder_layer in mtp_layers:
1418
  input_ids, _ = roll_tensor(input_ids, shifts=-1, dims=-1)
1419
  inputs_embeds = self.word_embeddings(input_ids)
 
1425
  hidden_states,
1426
  attention_mask,
1427
  position_ids,
1428
+ None,
1429
  output_attentions,
1430
  output_router_logits,
1431
+ False,
1432
  position_embeddings,
1433
  )
1434
  else:
 
1437
  hidden_states,
1438
  attention_mask=attention_mask,
1439
  position_ids=position_ids,
1440
+ past_key_value=None,
1441
  output_attentions=output_attentions,
1442
  output_router_logits=output_router_logits,
1443
+ use_cache=False,
1444
  position_embeddings=position_embeddings,
1445
  )
1446
  if mtp_hidden_states is None:
 
1451
  if output_hidden_states:
1452
  all_hidden_states += (hidden_states,)
1453
 
 
 
 
1454
  if output_attentions:
1455
  all_self_attns += (layer_outputs[1],)
1456
 
 
1552
  output_router_logits if output_router_logits is not None else self.config.output_router_logits
1553
  )
1554
  return_dict = return_dict if return_dict is not None else self.config.use_return_dict
1555
+ compute_mtp_loss = labels is not None and self.num_nextn_predict_layers > 0
1556
+ # MTP hidden states are kept outside the tuple output, so retain the structured output while
1557
+ # computing its loss.
1558
+ model_return_dict = return_dict or compute_mtp_loss
1559
  # decoder outputs consists of (dec_features, layer_state, dec_hidden, dec_attn)
1560
  outputs = self.model(
1561
  input_ids=input_ids,
 
1567
  output_attentions=output_attentions,
1568
  output_hidden_states=output_hidden_states,
1569
  output_router_logits=output_router_logits,
1570
+ output_mtp_hidden_states=compute_mtp_loss,
1571
+ return_dict=model_return_dict,
1572
  **kwargs,
1573
  )
1574
 
 
1583
  loss = self.loss_function(logits, labels, self.config.vocab_size, **kwargs)
1584
 
1585
  all_mtp_logits = None
1586
+ if compute_mtp_loss and outputs.mtp_hidden_states is not None:
1587
  mtp_hidden_states = outputs.mtp_hidden_states
1588
  shift_labels_mtp = None
1589
  for i in range(self.num_nextn_predict_layers):