Instructions to use inclusionAI/Ling-3.0-flash with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Inference
- HuggingChat
- Notebooks
- Google Colab
- Kaggle
Fix MTP cache overflow during generation
#19
by iCavan - opened
- modeling_bailing_moe_v3.py +14 -12
modeling_bailing_moe_v3.py
CHANGED
|
@@ -1273,6 +1273,7 @@ class BailingMoeV3Model(BailingMoeV3PreTrainedModel):
|
|
| 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]:
|
| 1278 |
output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions
|
|
@@ -1359,7 +1360,11 @@ class BailingMoeV3Model(BailingMoeV3PreTrainedModel):
|
|
| 1359 |
all_router_logits = () if output_router_logits else None
|
| 1360 |
next_decoder_cache = None
|
| 1361 |
layers = self.layers[: -self.num_nextn_predict_layers] if self.num_nextn_predict_layers > 0 else self.layers
|
| 1362 |
-
mtp_layers =
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1363 |
|
| 1364 |
# tptest miss causal_mask = create_causal_mask(
|
| 1365 |
|
|
@@ -1424,10 +1429,10 @@ class BailingMoeV3Model(BailingMoeV3PreTrainedModel):
|
|
| 1424 |
hidden_states,
|
| 1425 |
attention_mask,
|
| 1426 |
position_ids,
|
| 1427 |
-
|
| 1428 |
output_attentions,
|
| 1429 |
output_router_logits,
|
| 1430 |
-
|
| 1431 |
position_embeddings,
|
| 1432 |
)
|
| 1433 |
else:
|
|
@@ -1436,10 +1441,10 @@ class BailingMoeV3Model(BailingMoeV3PreTrainedModel):
|
|
| 1436 |
hidden_states,
|
| 1437 |
attention_mask=attention_mask,
|
| 1438 |
position_ids=position_ids,
|
| 1439 |
-
past_key_value=
|
| 1440 |
output_attentions=output_attentions,
|
| 1441 |
output_router_logits=output_router_logits,
|
| 1442 |
-
use_cache=
|
| 1443 |
position_embeddings=position_embeddings,
|
| 1444 |
)
|
| 1445 |
if mtp_hidden_states is None:
|
|
@@ -1450,9 +1455,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 +1556,7 @@ 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,
|
|
@@ -1566,6 +1569,7 @@ class BailingMoeV3ForCausalLM(BailingMoeV3PreTrainedModel, GenerationMixin):
|
|
| 1566 |
output_hidden_states=output_hidden_states,
|
| 1567 |
output_router_logits=output_router_logits,
|
| 1568 |
return_dict=return_dict,
|
|
|
|
| 1569 |
**kwargs,
|
| 1570 |
)
|
| 1571 |
|
|
@@ -1580,11 +1584,9 @@ class BailingMoeV3ForCausalLM(BailingMoeV3PreTrainedModel, GenerationMixin):
|
|
| 1580 |
loss = self.loss_function(logits, labels, self.config.vocab_size, **kwargs)
|
| 1581 |
|
| 1582 |
all_mtp_logits = None
|
| 1583 |
-
if
|
| 1584 |
-
mtp_hidden_states = outputs.mtp_hidden_states
|
| 1585 |
shift_labels_mtp = None
|
| 1586 |
-
for
|
| 1587 |
-
mtp_hidden_states = mtp_hidden_states[i]
|
| 1588 |
mtp_logits = self.lm_head(mtp_hidden_states).float()
|
| 1589 |
if all_mtp_logits is None:
|
| 1590 |
all_mtp_logits = []
|
|
|
|
| 1273 |
output_hidden_states: Optional[bool] = None,
|
| 1274 |
output_router_logits: Optional[bool] = None,
|
| 1275 |
return_dict: Optional[bool] = None,
|
| 1276 |
+
run_mtp: bool = False,
|
| 1277 |
**kwargs,
|
| 1278 |
) -> Union[Tuple, MoeV3ModelOutputWithPast]:
|
| 1279 |
output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions
|
|
|
|
| 1360 |
all_router_logits = () if output_router_logits else None
|
| 1361 |
next_decoder_cache = None
|
| 1362 |
layers = self.layers[: -self.num_nextn_predict_layers] if self.num_nextn_predict_layers > 0 else self.layers
|
| 1363 |
+
mtp_layers = (
|
| 1364 |
+
self.layers[-self.num_nextn_predict_layers :]
|
| 1365 |
+
if run_mtp and self.num_nextn_predict_layers > 0
|
| 1366 |
+
else None
|
| 1367 |
+
)
|
| 1368 |
|
| 1369 |
# tptest miss causal_mask = create_causal_mask(
|
| 1370 |
|
|
|
|
| 1429 |
hidden_states,
|
| 1430 |
attention_mask,
|
| 1431 |
position_ids,
|
| 1432 |
+
None,
|
| 1433 |
output_attentions,
|
| 1434 |
output_router_logits,
|
| 1435 |
+
False,
|
| 1436 |
position_embeddings,
|
| 1437 |
)
|
| 1438 |
else:
|
|
|
|
| 1441 |
hidden_states,
|
| 1442 |
attention_mask=attention_mask,
|
| 1443 |
position_ids=position_ids,
|
| 1444 |
+
past_key_value=None,
|
| 1445 |
output_attentions=output_attentions,
|
| 1446 |
output_router_logits=output_router_logits,
|
| 1447 |
+
use_cache=False,
|
| 1448 |
position_embeddings=position_embeddings,
|
| 1449 |
)
|
| 1450 |
if mtp_hidden_states is None:
|
|
|
|
| 1455 |
if output_hidden_states:
|
| 1456 |
all_hidden_states += (hidden_states,)
|
| 1457 |
|
|
|
|
|
|
|
|
|
|
| 1458 |
if output_attentions:
|
| 1459 |
all_self_attns += (layer_outputs[1],)
|
| 1460 |
|
|
|
|
| 1556 |
output_router_logits if output_router_logits is not None else self.config.output_router_logits
|
| 1557 |
)
|
| 1558 |
return_dict = return_dict if return_dict is not None else self.config.use_return_dict
|
| 1559 |
+
run_mtp = labels is not None and self.num_nextn_predict_layers > 0
|
| 1560 |
# decoder outputs consists of (dec_features, layer_state, dec_hidden, dec_attn)
|
| 1561 |
outputs = self.model(
|
| 1562 |
input_ids=input_ids,
|
|
|
|
| 1569 |
output_hidden_states=output_hidden_states,
|
| 1570 |
output_router_logits=output_router_logits,
|
| 1571 |
return_dict=return_dict,
|
| 1572 |
+
run_mtp=run_mtp,
|
| 1573 |
**kwargs,
|
| 1574 |
)
|
| 1575 |
|
|
|
|
| 1584 |
loss = self.loss_function(logits, labels, self.config.vocab_size, **kwargs)
|
| 1585 |
|
| 1586 |
all_mtp_logits = None
|
| 1587 |
+
if run_mtp:
|
|
|
|
| 1588 |
shift_labels_mtp = None
|
| 1589 |
+
for mtp_hidden_states in outputs.mtp_hidden_states:
|
|
|
|
| 1590 |
mtp_logits = self.lm_head(mtp_hidden_states).float()
|
| 1591 |
if all_mtp_logits is None:
|
| 1592 |
all_mtp_logits = []
|