Update configuration_neollm.py
Browse files- configuration_neollm.py +39 -1
configuration_neollm.py
CHANGED
|
@@ -475,12 +475,23 @@ class NeoLLMConfig(PretrainedConfig):
|
|
| 475 |
jtokm_norm_eps=1e-6,
|
| 476 |
# ── Hadamard output projection (Aggarwal & Kumar, 2026) ───────────
|
| 477 |
use_hadamard_o_proj=True,
|
|
|
|
|
|
|
| 478 |
# ── Spelling Bee Embeddings (Rabe et al., 2026) ───────────────────
|
| 479 |
use_spelling_bee_embeddings=False,
|
| 480 |
# ── Context Re-Positioning (Li et al., 2026) ──────────────────────
|
| 481 |
-
use_repo=
|
| 482 |
repo_start_layer=None,
|
| 483 |
repo_d_p=None,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 484 |
**kwargs,
|
| 485 |
):
|
| 486 |
# ── Generator / tying consistency ─────────────────────────────────
|
|
@@ -529,6 +540,20 @@ class NeoLLMConfig(PretrainedConfig):
|
|
| 529 |
f"num_hidden_layers={num_hidden_layers}."
|
| 530 |
)
|
| 531 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 532 |
super().__init__(tie_word_embeddings=tie_word_embeddings, **kwargs)
|
| 533 |
|
| 534 |
# ── Core Transformer ──────────────────────────────────────────────
|
|
@@ -612,6 +637,9 @@ class NeoLLMConfig(PretrainedConfig):
|
|
| 612 |
# ── Hadamard output projection (Aggarwal & Kumar, 2026) ───────────
|
| 613 |
self.use_hadamard_o_proj = use_hadamard_o_proj
|
| 614 |
|
|
|
|
|
|
|
|
|
|
| 615 |
# ── Spelling Bee Embeddings (Rabe et al., 2026) ───────────────────
|
| 616 |
self.use_spelling_bee_embeddings = use_spelling_bee_embeddings
|
| 617 |
|
|
@@ -620,6 +648,16 @@ class NeoLLMConfig(PretrainedConfig):
|
|
| 620 |
self.repo_start_layer = repo_start_layer
|
| 621 |
self.repo_d_p = repo_d_p
|
| 622 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 623 |
self.auto_map = {
|
| 624 |
"AutoConfig": "configuration_neollm.NeoLLMConfig",
|
| 625 |
"AutoModel": "modeling_neollm.NeoLLMModel",
|
|
|
|
| 475 |
jtokm_norm_eps=1e-6,
|
| 476 |
# ── Hadamard output projection (Aggarwal & Kumar, 2026) ───────────
|
| 477 |
use_hadamard_o_proj=True,
|
| 478 |
+
# ── PolyNorm exclusivity ──────────────────────────────────────────
|
| 479 |
+
polynorm_exclusive=False,
|
| 480 |
# ── Spelling Bee Embeddings (Rabe et al., 2026) ───────────────────
|
| 481 |
use_spelling_bee_embeddings=False,
|
| 482 |
# ── Context Re-Positioning (Li et al., 2026) ──────────────────────
|
| 483 |
+
use_repo=False,
|
| 484 |
repo_start_layer=None,
|
| 485 |
repo_d_p=None,
|
| 486 |
+
# ── VersatileFFN (Nie et al., 2026) ───────────────────────────────
|
| 487 |
+
use_versatile_ffn=False,
|
| 488 |
+
versatile_total_experts=8,
|
| 489 |
+
versatile_active_experts=2,
|
| 490 |
+
versatile_max_depth=2,
|
| 491 |
+
versatile_gumbel_temp_start=5.0,
|
| 492 |
+
versatile_gumbel_temp_end=0.1,
|
| 493 |
+
versatile_gumbel_temp_decay=0.99984,
|
| 494 |
+
versatile_aux_loss_weight=1e-5,
|
| 495 |
**kwargs,
|
| 496 |
):
|
| 497 |
# ── Generator / tying consistency ─────────────────────────────────
|
|
|
|
| 540 |
f"num_hidden_layers={num_hidden_layers}."
|
| 541 |
)
|
| 542 |
|
| 543 |
+
# ── VersatileFFN: validate expert configuration ────────────────────
|
| 544 |
+
if use_versatile_ffn:
|
| 545 |
+
if not (1 <= versatile_active_experts < versatile_total_experts):
|
| 546 |
+
raise ValueError(
|
| 547 |
+
f"`versatile_active_experts` must satisfy "
|
| 548 |
+
f"1 <= versatile_active_experts < versatile_total_experts, "
|
| 549 |
+
f"got {versatile_active_experts} vs {versatile_total_experts}."
|
| 550 |
+
)
|
| 551 |
+
if intermediate_size % versatile_total_experts != 0:
|
| 552 |
+
raise ValueError(
|
| 553 |
+
f"`intermediate_size` ({intermediate_size}) must be divisible by "
|
| 554 |
+
f"`versatile_total_experts` ({versatile_total_experts})."
|
| 555 |
+
)
|
| 556 |
+
|
| 557 |
super().__init__(tie_word_embeddings=tie_word_embeddings, **kwargs)
|
| 558 |
|
| 559 |
# ── Core Transformer ──────────────────────────────────────────────
|
|
|
|
| 637 |
# ── Hadamard output projection (Aggarwal & Kumar, 2026) ───────────
|
| 638 |
self.use_hadamard_o_proj = use_hadamard_o_proj
|
| 639 |
|
| 640 |
+
# ── PolyNorm exclusivity ──────────────────────────────────────────
|
| 641 |
+
self.polynorm_exclusive = polynorm_exclusive
|
| 642 |
+
|
| 643 |
# ── Spelling Bee Embeddings (Rabe et al., 2026) ───────────────────
|
| 644 |
self.use_spelling_bee_embeddings = use_spelling_bee_embeddings
|
| 645 |
|
|
|
|
| 648 |
self.repo_start_layer = repo_start_layer
|
| 649 |
self.repo_d_p = repo_d_p
|
| 650 |
|
| 651 |
+
# ── VersatileFFN (Nie et al., 2026) ───────────────────────────────
|
| 652 |
+
self.use_versatile_ffn = use_versatile_ffn
|
| 653 |
+
self.versatile_total_experts = versatile_total_experts
|
| 654 |
+
self.versatile_active_experts = versatile_active_experts
|
| 655 |
+
self.versatile_max_depth = versatile_max_depth
|
| 656 |
+
self.versatile_gumbel_temp_start = versatile_gumbel_temp_start
|
| 657 |
+
self.versatile_gumbel_temp_end = versatile_gumbel_temp_end
|
| 658 |
+
self.versatile_gumbel_temp_decay = versatile_gumbel_temp_decay
|
| 659 |
+
self.versatile_aux_loss_weight = versatile_aux_loss_weight
|
| 660 |
+
|
| 661 |
self.auto_map = {
|
| 662 |
"AutoConfig": "configuration_neollm.NeoLLMConfig",
|
| 663 |
"AutoModel": "modeling_neollm.NeoLLMModel",
|