| --- |
| language: en |
| license: apache-2.0 |
| tags: |
| - causal-lm |
| - research |
| - fp8 |
| - attention |
| - normalization |
| - neollm |
| - pace |
| datasets: |
| - HuggingFaceFW/fineweb-edu |
| --- |
| |
| # NeoLLM |
|
|
| NeoLLM is a **135 M parameter** decoder-only language model trained from scratch on |
| [FineWeb-Edu](https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu) in **FP8** |
| precision, completing training in approximately **6 hours** on a single NVIDIA RTX 5090. |
| It integrates a collection of recently published attention and normalization techniques |
| into a single architecture, with the goal of studying how they interact during |
| pretraining. The model is actively being developed and the current checkpoint represents |
| an intermediate training state. |
|
|
| > **Author / contact:** [@Kyokopom](https://x.com/Kyokopom) on X |
| > **Repository:** [KitsuVp/NeoLLM](https://huggingface.co/KitsuVp/NeoLLM) |
|
|
| --- |
|
|
| ## Architecture |
|
|
| NeoLLM is a decoder-only transformer with the following configuration: |
|
|
| | Parameter | Value | |
| |---|---| |
| | Hidden size | 512 | |
| | Layers | 12 | |
| | Attention heads | 8 | |
| | KV heads (GQA) | 4 | |
| | Head dim | 64 | |
| | Intermediate size | 1536 | |
| | Vocabulary | Qwen3 tokenizer (64,402 tokens) | |
| | Context length | 512 tokens | |
|
|
| ### Parameter breakdown |
|
|
| | Parameter bucket | Count | |
| |---|---| |
| | **Total parameters** | 84.70M (84,700,504) | |
| | **Embedding parameters** (tied) | 32.97M (32,973,824) | |
| | **Non-embedding parameters** | 51.73M (51,726,680) | |
| | **Effective trainable parameters** | 84.70M (84,700,504) | |
|
|
| > Weight tying is **enabled**: the input embedding matrix and the language-model head |
| > share the same parameters, so the effective trainable budget is |
| > `total − embed = 51.73M`. |
|
|
| ### Integrated techniques |
|
|
| NeoLLM combines architecture modules, optional auxiliary objectives, and |
| training-time optimizer/stability components from the following papers. |
|
|
| **Embedding and token representation** |
|
|
| - **Learnable Multipliers** ([arXiv:2601.04890](https://arxiv.org/abs/2601.04890)) — Adds |
| per-row and per-column learnable scalar parameters to selected matrix layers and, when |
| enabled, embeddings. |
| - **Leviathan** ([arXiv:2601.22040](https://arxiv.org/abs/2601.22040)) — Optional |
| continuous token embedding generator that can replace the discrete input lookup table. |
| - **KHRONOS** ([arXiv:2505.13315](https://arxiv.org/abs/2505.13315)) — Kernel/basis |
| reference used by the Leviathan continuous token generator implementation. |
| - **Spelling Bee Embeddings** ([arXiv:2601.18030](https://arxiv.org/abs/2601.18030)) — |
| Augments token embeddings with character-level spelling information. |
| - **Token Embedding Manifold analysis** ([arXiv:2504.01002](https://arxiv.org/abs/2504.01002)) — |
| Reference motivation for treating token embeddings as structured objects rather than |
| unconstrained lookup rows. |
|
|
| **Attention, positions, and output projection** |
|
|
| - **FAN** ([arXiv:2502.21309](https://arxiv.org/abs/2502.21309)) — Fourier Analysis Networks. |
| A portion of the projection channels are dedicated to periodic cosine/sine features. |
| - **MEA** ([arXiv:2601.19611](https://arxiv.org/abs/2601.19611)) — Explicit Multi-head |
| Attention. Adds small learnable interaction matrices between attention heads for K and V. |
| - **LUCID** ([arXiv:2602.10410](https://arxiv.org/abs/2602.10410)) — Applies a learned |
| lower-triangular preconditioner to V before attention, decorrelating value representations |
| across positions. |
| - **Affine-Scaled Attention** ([arXiv:2602.23057](https://arxiv.org/abs/2602.23057)) — Adds |
| two learnable per-head scalars (α and β) to the softmax weights: |
| `[α·softmax(QKᵀ) + β]·V`. |
| - **XSA** ([arXiv:2603.09078](https://arxiv.org/abs/2603.09078)) — Exclusive Self Attention. |
| After computing attention, removes the component of the output aligned with the token's |
| own value vector. |
| - **Directional Routing** ([arXiv:2603.14923](https://arxiv.org/abs/2603.14923)) — Each head |
| learns K=4 directions in the output space; a learned router suppresses the attention output |
| along each direction per input. |
| - **Gated Attention** ([arXiv:2505.06708](https://arxiv.org/abs/2505.06708)) — A sigmoid gate |
| is applied to the attention output before the output projection, introducing non-linearity |
| and preventing attention sinks. |
| - **Momentum Attention** ([arXiv:2411.03884](https://arxiv.org/abs/2411.03884)) — Modifies Q |
| and K by subtracting a fraction of the previous position's Q and K values (causal |
| first-difference). |
| - **Interleaved Head Attention / IHA** ([arXiv:2602.21371](https://arxiv.org/abs/2602.21371)) — |
| Builds pseudo-heads from learned cross-head mixtures to create multiple attention patterns |
| per original head. |
| - **REPO** ([arXiv:2512.14391](https://arxiv.org/abs/2512.14391)) — Context re-positioning |
| module that learns contextual position coordinates above a configurable start layer. |
| - **GRAPE** ([arXiv:2512.07805](https://arxiv.org/abs/2512.07805)) — Group representational |
| position encoding used by the REPO-GRAPE positional path. |
| - **GOAT priors** ([arXiv:2601.15380](https://arxiv.org/abs/2601.15380)) — Optional |
| factorized attention log-prior channels inspired by trainable attention priors. |
| - **Hadamard output projection** ([arXiv:2603.08343](https://arxiv.org/abs/2603.08343)) — |
| Replaces dense attention output projection with a structured Hadamard transform plus |
| lightweight scaling. |
|
|
| **Normalization, residual flow, and MLP** |
|
|
| - **SeeDNorm** ([arXiv:2510.22777](https://arxiv.org/abs/2510.22777)) — Applied to Q and K |
| projections. Dynamically rescales normalization from the input's own statistics. |
| - **LayerNorm Scaling / LNS** ([arXiv:2502.05795](https://arxiv.org/abs/2502.05795)) — Each |
| layer's output is scaled by 1/√ℓ where ℓ is the layer index. |
| - **GPAS** ([arXiv:2506.22049](https://arxiv.org/abs/2506.22049)) — Gradient-Preserving |
| Activation Scaling for residual junctions. |
| - **PolyNorm** ([arXiv:2602.04902](https://arxiv.org/abs/2602.04902)) — Replaces the standard |
| MLP activation with normalized linear, quadratic, and cubic branches. |
| - **SimpleGPT** ([arXiv:2602.01212](https://arxiv.org/abs/2602.01212)) — Second-order |
| geometry-inspired normalization strategy applied inside MLP projections. |
| - **StackMemory / STACKTRANS** ([NeurIPS 2025](https://openreview.net/forum?id=2bbDg587uh)) — |
| Optional differentiable hidden-state stack between decoder layers. |
| - **Attention Residuals / AttnRes** ([arXiv:2603.15031](https://arxiv.org/abs/2603.15031)) — |
| Optional learned depth-wise aggregation over previous layer outputs or block summaries. |
| - **LAUREL** ([arXiv:2411.07501](https://arxiv.org/abs/2411.07501)) — Optional learned |
| augmented residual layer with residual-weight and low-rank variants. |
|
|
| **Training objectives and training-time regularizers** |
|
|
| - **Cut Cross Entropy** ([Apple repository](https://github.com/apple/ml-cross-entropy)) — |
| Memory-efficient next-token loss that avoids materializing the full token-by-vocabulary |
| logits tensor. NeoLLM remains compatible with the upstream package when the extensions |
| below are disabled. |
| - **MiLe Loss** ([arXiv:2310.19531](https://arxiv.org/abs/2310.19531)) — Optional detached, |
| mean-normalized predictive-entropy weighting of token losses, implemented inside the |
| extended CCE path. |
| - **Output Embedding Centering / mu-loss** |
| ([arXiv:2601.02031](https://arxiv.org/abs/2601.02031)) — Optional |
| `lambda * ||mean(output_embeddings)||^2` regularizer for output-logit stability. |
| - **MEAP** ([arXiv:2502.07490](https://arxiv.org/abs/2502.07490)) — Optional training-only |
| input corruption that masks a fixed fraction of eligible tokens while preserving clean |
| next-token labels, causal attention, and the inference path. |
| - **TWEO** ([arXiv:2511.23225](https://arxiv.org/abs/2511.23225)) — Optional |
| Transformers Without Extreme Outliers activation regularizer for FP8/low-bit-friendly |
| training. |
| - **NITP** ([arXiv:2605.24956](https://arxiv.org/abs/2605.24956)) — Optional Next Implicit |
| Token Prediction auxiliary objective using shallow-layer implicit token targets and a |
| cosine loss. |
| - **NextLat** ([arXiv:2511.05963](https://arxiv.org/abs/2511.05963)) — Optional next-latent |
| prediction objective using latent dynamics, Smooth L1 supervision, and frozen-head KL. |
|
|
| ### Optional extended-CCE configuration |
|
|
| | Feature | Enabled | Value | |
| |---|---:|---:| |
| | MiLe Loss | True | gamma=1.0 | |
| | mu-loss | True | lambda=0.0001 | |
| | MEAP | True | ratio=0.15 | |
|
|
| MiLe, mu-loss, and MEAP require the extended |
| [`Kitsunp/ml-cross-entropy`](https://github.com/Kitsunp/ml-cross-entropy) package only when |
| their corresponding flags are enabled. With all flags disabled, NeoLLM calls upstream CCE |
| without extension-specific arguments. When any extension is active, CCE reports three compact |
| scalars: unweighted NTP cross entropy, the MiLe reweighting delta, and the mu-loss penalty. |
| Their sum reconstructs `ntp_loss` exactly. MEAP reports its eligible and selected counts from |
| the masking kernel; the trainer logs the selected count and exact fraction. No diagnostic path |
| materializes full-vocabulary logits or a token mask outside the kernels. |
|
|
| **Optimizer and training stability** |
|
|
| - **Conda** ([arXiv:2509.24218](https://arxiv.org/abs/2509.24218)) — |
| Column-Normalized Adam optimizer path used by the training script. |
| - **Cautious Weight Decay** ([arXiv:2510.12402](https://arxiv.org/abs/2510.12402)) — |
| Sign-selective weight decay variant used by the custom optimizer logic. |
| - **Correction of Decoupled Weight Decay** ([arXiv:2512.08217](https://arxiv.org/abs/2512.08217)) — |
| Adapts decoupled weight decay during learning-rate decay. |
| - **AdamHD** ([arXiv:2511.14721](https://arxiv.org/abs/2511.14721)) — |
| Decoupled Huber decay regularization reference used by the optimizer. |
| - **GradientStabilizer** ([arXiv:2502.17055](https://arxiv.org/abs/2502.17055)) — |
| Optional threshold-free gradient magnitude stabilizer. |
| - **PACE** ([arXiv:2606.25086](https://arxiv.org/abs/2606.25086)) — |
| Optional iterate-average controller that trains for the EMA model returned at evaluation |
| and final serialization. The Conda-basis adaptation and its difference from AdamW are |
| documented below. |
|
|
| --- |
|
|
| ### PACE integration and AdamW-reference differences |
|
|
| PACE follows Au and Block's returned-model objective: the live weights are pulled toward a |
| power-law EMA with a clipped per-coordinate gain, and evaluation/final serialization use that |
| EMA estimator. |
|
|
| - **Reference AdamW rule:** the gain uses AdamW's original-coordinate diagonal |
| second moment, `eta * c * (1+t)^(-kappa) / (sqrt(v_hat) + eps)`. |
| - **NeoLLM Conda rule (`mode=conda`):** for projected 2-D tensors, both the EMA |
| displacement and `v_hat` are represented in Conda's cached SVD basis. The control is |
| projected back after applying the diagonal gain. This is a deliberate change from AdamW |
| required to avoid mixing incompatible coordinate systems. |
| - **Optional exact AdamW pullback geometry (`mode=adamw`):** an additional |
| original-coordinate second moment is maintained for projected matrices. The live optimizer |
| step remains Conda. |
| - **Conda scale:** in `mode=conda`, Conda's matrix-update scale multiplies the unsaturated |
| gain automatically because it is part of the effective Conda preconditioner. AdamW has no |
| corresponding scale. |
| - **Fixed algorithm internals:** the EMA is stored in FP32, the gain is clipped at `1`, and PACE |
| reuses each Conda group’s numerical epsilon. These are not exposed as independent switches. |
| - **Minimal modes:** `use_pace=False` is plain Conda; `use_pace=True, c=0` is Conda+EMA; |
| `use_pace=True, c>0` is complete PACE. |
| - **Ordering:** PACE runs only after Conda, CWD/CHD, and weight-decay correction have fully |
| updated the live weights. |
| - **Disabled guarantee:** with `use_pace=False`, no PACE state is allocated and no existing |
| Conda arithmetic or parameter update is changed. |
| - **Checkpoint policy:** resumable internal checkpoints retain live weights and complete optimizer |
| state, while evaluation and the final returned/Hub model always use the EMA when PACE is active. |
|
|
| Current run: **disabled; no EMA state, auxiliary moment, or pullback is allocated**. |
|
|
| --- |
|
|
| ## Training |
|
|
| | Setting | Value | |
| |---|---| |
| | Dataset | FineWeb-Edu (sample-10BT) | |
| | Tokens seen | ~1.54B (46,875 steps × batch 64 × length 512) | |
| | Precision | FP8 native (E4M3 weights/activations, E5M2 gradients) + BF16 fallback | |
| | Optimizer | Conda (PACE disabled) | |
| | PACE | disabled; no EMA state, auxiliary moment, or pullback is allocated | |
| | Learning rate | 6e-04 with linear warmup (10 % of steps) | |
| | Weight decay | 0.1 | |
| | Training time | ~4h 13m | |
| | Hardware | NVIDIA RTX 5090 (single GPU) | |
|
|
| ### Training curve |
|
|
| | Step | Train Loss | Val Loss | |
| |---|---|---| |
| | 5,000 | 5.697 | 5.222 | |
| | 10,000 | 5.646 | 5.180 | |
| | 15,000 | 5.554 | 5.068 | |
| | 20,000 | 5.909 | 5.434 | |
| | 25,000 | 5.749 | 5.275 | |
| | 30,000 | 5.791 | 5.281 | |
| | 35,000 | 6.426 | 5.953 | |
| | 40,000 | 6.062 | 5.616 | |
| | 45,000 | 5.900 | 5.432 | |
| | 46,875 | — | 5.343 | |
|
|
| --- |
|
|
| ## Limitations |
|
|
| - **Token budget** — ~1.5 B tokens seen; below estimated optimum. Knowledge-intensive tasks |
| will improve with more training. |
| - **Gradient spike at step 40k** — Reorganized the attention pattern in layer 9 that |
| previously captured long-range token correlations. A checkpoint from ~step 38k is expected |
| to have better aggregate benchmark scores. |
| - **PolyNorm exclusivity** — The quadratic branch has become partially redundant with the |
| linear branch. Will be corrected in the next training run. |
| - **Base model only** — Not instruction-tuned or aligned; purely a next-token-prediction |
| base model. |
|
|
| --- |
|
|
| ## References |
|
|
| All papers whose techniques are integrated into NeoLLM's architecture, |
| training objective, or training stack: |
|
|
| | Area | Technique | Paper title | Reference | |
| |---|---|---|---| |
| | Embeddings | Learnable Multipliers | Freeing the Scale of Language Model Matrix Layers | [arXiv:2601.04890](https://arxiv.org/abs/2601.04890) | |
| | Embeddings | Leviathan | A Separable Architecture for Continuous Token Representation in Language Models | [arXiv:2601.22040](https://arxiv.org/abs/2601.22040) | |
| | Embeddings | KHRONOS | KHRONOS: a Kernel-Based Neural Architecture for Rapid, Resource-Efficient Scientific Computation | [arXiv:2505.13315](https://arxiv.org/abs/2505.13315) | |
| | Embeddings | Spelling Bee | Spelling Bee Embeddings for Language Modeling | [arXiv:2601.18030](https://arxiv.org/abs/2601.18030) | |
| | Embeddings | Token embedding analysis | Token Embeddings Violate the Manifold Hypothesis | [arXiv:2504.01002](https://arxiv.org/abs/2504.01002) | |
| | Attention / positions | FAN | Fourier Analysis Networks | [arXiv:2502.21309](https://arxiv.org/abs/2502.21309) | |
| | Attention / positions | MEA | Explicit Multi-head Attention for Inter-head Interaction in Large Language Models | [arXiv:2601.19611](https://arxiv.org/abs/2601.19611) | |
| | Attention / positions | LUCID | Attention with Preconditioned Representations | [arXiv:2602.10410](https://arxiv.org/abs/2602.10410) | |
| | Attention / positions | Affine-Scaled Attention | Affine-Scaled Attention: Towards Flexible and Stable Transformer Attention | [arXiv:2602.23057](https://arxiv.org/abs/2602.23057) | |
| | Attention / positions | XSA | Exclusive Self Attention | [arXiv:2603.09078](https://arxiv.org/abs/2603.09078) | |
| | Attention / positions | Directional Routing | Directional Routing in Transformers | [arXiv:2603.14923](https://arxiv.org/abs/2603.14923) | |
| | Attention / positions | Gated Attention | Gated Attention for Large Language Models: Non-linearity, Sparsity, and Attention-Sink-Free | [arXiv:2505.06708](https://arxiv.org/abs/2505.06708) | |
| | Attention / positions | Momentum Attention | Momentum Attention | [arXiv:2411.03884](https://arxiv.org/abs/2411.03884) | |
| | Attention / positions | IHA | Interleaved Head Attention | [arXiv:2602.21371](https://arxiv.org/abs/2602.21371) | |
| | Attention / positions | REPO | Language Models with Context Re-Positioning | [arXiv:2512.14391](https://arxiv.org/abs/2512.14391) | |
| | Attention / positions | GRAPE | Group Representational Position Encoding | [arXiv:2512.07805](https://arxiv.org/abs/2512.07805) | |
| | Attention / positions | GOAT priors | You Need Better Attention Priors | [arXiv:2601.15380](https://arxiv.org/abs/2601.15380) | |
| | Attention / positions | Hadamard o_proj | Rethinking Attention Output Projection: Structured Hadamard Transforms for Efficient Transformers | [arXiv:2603.08343](https://arxiv.org/abs/2603.08343) | |
| | Residual / normalization | SeeDNorm | Self-Rescaled Dynamic Normalization | [arXiv:2510.22777](https://arxiv.org/abs/2510.22777) | |
| | Residual / normalization | LNS | The Curse of Depth in LLMs | [arXiv:2502.05795](https://arxiv.org/abs/2502.05795) | |
| | Residual / normalization | GPAS | Gradient-Preserving Activation Scaling | [arXiv:2506.22049](https://arxiv.org/abs/2506.22049) | |
| | Residual / normalization | PolyNorm | PolyNorm / PolyCom | [arXiv:2602.04902](https://arxiv.org/abs/2602.04902) | |
| | Residual / normalization | SimpleGPT | SimpleGPT | [arXiv:2602.01212](https://arxiv.org/abs/2602.01212) | |
| | Residual / normalization | StackMemory / STACKTRANS | Recursive Transformer: Boosting Reasoning Ability with State Stack | [NeurIPS 2025](https://openreview.net/forum?id=2bbDg587uh) | |
| | Residual / normalization | Attention Residuals | Attention Residuals | [arXiv:2603.15031](https://arxiv.org/abs/2603.15031) | |
| | Residual / normalization | LAUREL | LAUREL: Learned Augmented Residual Layer | [arXiv:2411.07501](https://arxiv.org/abs/2411.07501) | |
| | Objectives | TWEO | Transformers Without Extreme Outliers Enables FP8 Training And Quantization For Dummies | [arXiv:2511.23225](https://arxiv.org/abs/2511.23225) | |
| | Objectives | NITP | Next Implicit Token Prediction for LLM Pre-training | [arXiv:2605.24956](https://arxiv.org/abs/2605.24956) | |
| | Objectives | NextLat | Next-Latent Prediction Transformers Learn Compact World Models | [arXiv:2511.05963](https://arxiv.org/abs/2511.05963) | |
| | Optimizer / training | Conda | Column-Normalized Adam for Training Large Language Models Faster | [arXiv:2509.24218](https://arxiv.org/abs/2509.24218) | |
| | Optimizer / training | CWD | Cautious Weight Decay | [arXiv:2510.12402](https://arxiv.org/abs/2510.12402) | |
| | Optimizer / training | WD correction | Correction of Decoupled Weight Decay | [arXiv:2512.08217](https://arxiv.org/abs/2512.08217) | |
| | Optimizer / training | AdamHD | AdamHD: Decoupled Huber Decay Regularization for Language Model Pre-Training | [arXiv:2511.14721](https://arxiv.org/abs/2511.14721) | |
| | Optimizer / training | GradientStabilizer | GradientStabilizer | [arXiv:2502.17055](https://arxiv.org/abs/2502.17055) | |
| | Optimizer / training | PACE | Training for the Model You Return: Improving Optimization for Iterate-Averaged Language Models | [arXiv:2606.25086](https://arxiv.org/abs/2606.25086) | |
| |
| --- |
| |
| ## Citation |
| |
| ```bibtex |
| @misc{neollm2026, |
| title = {NeoLLM: A Research Language Model Integrating Recent Attention and Normalization Techniques}, |
| author = {KitsuVp}, |
| year = {2026}, |
| url = {https://huggingface.co/KitsuVp/NeoLLM} |
| } |
| ``` |
| |
| --- |
| |
| ## Author |
| |
| [@Kyokopom](https://x.com/Kyokopom) on X |
| |
| --- |
| |
| ## License |
| |
| Apache 2.0 |
| |