| --- |
| license: apache-2.0 |
| language: |
| - en |
| library_name: pytorch |
| tags: |
| - research |
| - transformer |
| - attention-residuals |
| - muon-optimizer |
| - nca-pretraining |
| - geometric-monitoring |
| - causal-lm |
| datasets: |
| - allenai/peS2o |
| - open-web-math/open-web-math |
| - HuggingFaceTB/finemath |
| - bigcode/the-stack |
| - deepmind/pg19 |
| - pile-of-law/pile-of-law |
| - OpenAssistant/oasst2 |
| pipeline_tag: text-generation |
| model-index: |
| - name: kotodama-108m-base |
| results: |
| - task: |
| type: text-generation |
| name: Language Modeling |
| dataset: |
| type: wikitext |
| name: WikiText-2 |
| metrics: |
| - name: Word Perplexity (fc-base) |
| type: perplexity |
| value: 41.76 |
| - name: Word Perplexity (bcpt-base) |
| type: perplexity |
| value: 52.09 |
| - task: |
| type: multiple-choice |
| name: ARC-Easy |
| dataset: |
| type: ai2_arc |
| name: ARC-Easy |
| metrics: |
| - name: Accuracy (fc-base) |
| type: accuracy |
| value: 0.455 |
| - name: Accuracy (bcpt-base) |
| type: accuracy |
| value: 0.445 |
| --- |
| |
| # Kotodama 108M Base |
|
|
| A 108M parameter decoder-only transformer trained as a **proxy model** for validating architectural and optimizer choices before scaling to 3B parameters. This is a research artifact, not a production model. |
|
|
| The model combines three techniques not previously studied together at this scale: |
|
|
| - **Block Attention Residuals (AttnRes)** -- learned residual connections across transformer blocks that prevent BOS-sink attention collapse and produce 4x gradient uniformity across depth. |
| - **NCA pre-pretraining** -- bootstrapping attention circuits using Neural Cellular Automata trajectories before language training, which trains attention patterns (not MLPs) and creates an L14 attractor basin in the representation manifold. |
| - **Muon optimizer** -- spectral-norm steepest descent via Newton-Schulz orthogonalization, producing 2-4x higher stable rank than AdamW at matched loss, with Gram-NS optimized coefficients. |
|
|
| **Organization:** [aethera-gp](https://huggingface.co/aethera-gp) |
| **Training code:** [github.com/LuxiaSL/kotodama](https://github.com/LuxiaSL/kotodama) |
|
|
| ## Architecture |
|
|
| The model uses a Llama-family architecture with QK-norm and Block Attention Residuals. |
|
|
| | Parameter | Value | |
| |-----------|-------| |
| | Parameters | 107.8M (+ 58.4K AttnRes) | |
| | Hidden size | 512 | |
| | Layers | 28 | |
| | Query heads | 4 | |
| | KV heads | 2 (GQA ratio 2:1) | |
| | Head dim | 128 | |
| | Intermediate size (SwiGLU) | 1408 | |
| | Vocabulary | 49,152 (SmolLM2 tokenizer) | |
| | Max context | 4,096 tokens | |
| | Positional encoding | RoPE (theta=500,000) | |
| | Normalization | Pre-RMSNorm + QK-norm | |
| | Embeddings | Tied input/output | |
| | Bias | None | |
| | z-loss | 1e-5 | |
| | AttnRes block boundaries | [0, 3, 7, 12, 21, 25] (DD-v1) | |
|
|
| ### Block Attention Residuals (DD-v1) |
|
|
| AttnRes adds per-layer learned pseudo-queries and key norms that create residual connections between block boundaries. The DD-v1 configuration divides the 28-layer network into 6 variable-size blocks at layers [0, 3, 7, 12, 21, 25]. This adds only 58.4K parameters (0.05% overhead) but has substantial effects on training dynamics. |
|
|
| Each transformer block stores: |
| - `attn_res_query` / `attn_res_norm`: attention sub-block residual |
| - `mlp_res_query` / `mlp_res_norm`: MLP sub-block residual |
|
|
| A final `final_res_query` / `final_res_norm` aggregates block outputs before the LM head. |
|
|
| ### Differences from stock Llama |
|
|
| - **QK-norm**: RMSNorm on Q and K projections after linear projection, enabling higher learning rates |
| - **z-loss**: LSE-squared regularization preventing logit explosion |
| - **Smaller vocab** (49K vs 128K): reduces the Godey gradient bottleneck (~94% destruction at 3072/49K vs ~98% at 3072/128K for the 3B target) |
| - **Block AttnRes**: cross-block residual connections (see above) |
|
|
| ## Training |
|
|
| ### Optimizer Configuration |
|
|
| Hybrid Muon + AdamW: Muon handles 2D weight matrices (Q/K/V/O projections, FFN gate/up/down -- ~77% of parameters), AdamW handles everything else (embeddings, norms). |
|
|
| | Parameter | Muon (2D weights) | AdamW (embeddings, norms) | |
| |-----------|-------------------|---------------------------| |
| | Learning rate | 0.02 | 6e-4 | |
| | Momentum / betas | 0.95 (Nesterov) | (0.9, 0.95) | |
| | Weight decay | 0.01 | 0.1 | |
| | NS iterations | 5 (Gram-NS coefficients) | -- | |
|
|
| **Schedule:** WSD (Warmup-Stable-Decay). 5,000 step warmup (~6%), stable plateau to 90% of training, cosine decay over final 10%. |
|
|
| **Gradient clipping:** 1.0 |
|
|
| **Precision:** BF16 autocast with FP8 compute (FP32 optimizer states). |
|
|
| ### NCA Pre-Pretraining |
|
|
| Before language training, attention weights were bootstrapped using NCA (Neural Cellular Automata) pre-pretraining following Han et al. (2026). An NCA checkpoint co-trained with AttnRes DD-v1 (seed-17, 852M tokens) was used as initialization. After NCA, embeddings were reinitialized to the language vocabulary while attention weights, MLPs, and norms from NCA training were preserved (embed-only reinit). |
|
|
| ### Data Mix (Fullcorpus) |
|
|
| 170.4B tokens from 13 sources, shuffled with seed 42, sequence length 4096. |
|
|
| | Source | Tokens | % | Category | |
| |--------|--------|---|----------| |
| | peS2o | 60.7B | 35.6% | Academic papers (Semantic Scholar) | |
| | OpenCoderReasoning | 35.7B | 21.0% | Code reasoning (R1 + QwQ, Python/C++) | |
| | Pile of Law | 18.8B | 11.0% | Legal (court opinions, congressional) | |
| | StackExchange | 15.7B | 9.2% | Q&A (22 high-value sites) | |
| | OpenWebMath | 14.1B | 8.2% | Math web pages | |
| | FineMath | 10.8B | 6.4% | Quality-scored math (4+ score) | |
| | PG-19 | 7.5B | 4.4% | Books (Project Gutenberg, 71K) | |
| | Wikipedia | 5.0B | 3.0% | English Wikipedia | |
| | SmolTalk | 0.9B | 0.6% | Synthetic multi-turn dialogue | |
| | WildChat | 0.5B | 0.3% | Real user-GPT conversations | |
| | SODA | 0.3B | 0.2% | Synthetic social dialogue | |
| | Enron | 0.3B | 0.2% | Corporate email | |
| | OASST2 | 0.01B | <0.1% | Human multi-turn conversations | |
|
|
| **Category breakdown:** Academic/knowledge 38.6%, code reasoning 21.0%, math 14.6%, legal 11.0%, Q&A 9.2%, books 4.4%, conversation 1.1%. |
|
|
| ### Hardware and Compute |
|
|
| - **Hardware:** 8x NVIDIA B200 (single node, NVLink) |
| - **Parallelism:** DDP (DistributedDataParallel) |
| - **Throughput:** ~1.96M tokens/sec average |
| - **Micro batch size:** 16 per GPU |
| - **Global batch size:** 2,097,152 tokens (16 * 4096 * 8 GPUs * gradient accumulation) |
| - **torch.compile:** enabled (4x throughput vs eager) |
|
|
| ## Model Variants |
|
|
| This repository contains two checkpoints from the same model lineage: |
|
|
| ### fc-base (fullcorpus) |
|
|
| **File:** `fc-base.pt.zst` |
|
|
| The primary pretraining run. 170.4B tokens over 81,252 steps on the full 13-source data mix described above. Initialized from NCA+AttnRes checkpoint (seed-17, 852M NCA tokens). WSD schedule with cosine decay in the final 10%. |
|
|
| | Metric | Value | |
| |--------|-------| |
| | Final loss | 2.081 | |
| | Min loss | 1.982 (step 80,200) | |
| | Final perplexity | 8.01 | |
| | Tokens seen | 170.4B | |
| | Tokens/param ratio | ~1,581x | |
|
|
| ### bcpt-base (books-CPT) |
|
|
| **File:** `bcpt-base.pt.zst` |
|
|
| Continued pretraining of the fullcorpus model on 36.2B tokens of book data from three Common Pile sources not present in the original data mix. Resumed from fullcorpus step 72,000 (pre-decay, 151B tokens seen) with fresh optimizer state and a new WSD schedule (500-step warmup, 90% stable, 10% cosine decay). |
|
|
| | Source | Tokens | % | |
| |--------|--------|---| |
| | Pre-1929 Books (Internet Archive/HathiTrust) | 19.1B | 52.8% | |
| | Library of Congress | 14.0B | 38.7% | |
| | DOAB (Open Access Books) | 3.1B | 8.6% | |
|
|
| OCR quality filter applied: documents with >5% garbage characters dropped. |
|
|
| | Metric | Value | |
| |--------|-------| |
| | Final loss | 2.342 | |
| | Min loss | 2.230 (step 17,260) | |
| | Final perplexity | 10.40 | |
| | Additional tokens | 36.4B (17,337 steps) | |
| | Total tokens seen | ~187.4B (resumed from step 72K / 151B tokens) | |
|
|
| The higher loss/perplexity relative to fullcorpus reflects the domain shift to OCR book text, not regression. The books-CPT variant trades general benchmark performance for improved performance on literary and long-form text. |
|
|
| ## Evaluation |
|
|
| ### LM-Eval Benchmarks |
|
|
| All benchmarks run zero-shot via lm-evaluation-harness. |
|
|
| | Benchmark | Metric | fc-base | bcpt-base | |
| |-----------|--------|---------|-----------| |
| | ARC-Easy | acc | 0.455 | 0.445 | |
| | ARC-Easy | acc_norm | 0.387 | 0.388 | |
| | BoolQ | acc | 0.559 | 0.499 | |
| | COPA | acc | 0.590 | 0.590 | |
| | HellaSwag | acc | 0.277 | 0.280 | |
| | HellaSwag | acc_norm | 0.297 | 0.295 | |
| | LAMBADA | acc | 0.281 | 0.297 | |
| | LAMBADA | ppl | 83.3 | 85.5 | |
| | PIQA | acc | 0.577 | 0.588 | |
| | PIQA | acc_norm | 0.569 | 0.571 | |
| | SciQ | acc | 0.783 | 0.779 | |
| | SciQ | acc_norm | 0.700 | 0.685 | |
| | WikiText | word_ppl | 41.76 | 52.09 | |
| | WikiText | bits/byte | 1.007 | 1.066 | |
| | Winogrande | acc | 0.508 | 0.515 | |
| |
| **Notes:** These are proxy-scale (108M) results. Performance is expected at this scale -- the model was not designed to maximize benchmarks. The books-CPT variant shows slight improvements on commonsense/physical reasoning (PIQA, Winogrande, LAMBADA accuracy) and slight degradation on knowledge-heavy tasks (BoolQ, WikiText perplexity), consistent with the domain shift toward literary text. |
| |
| ## Analysis Highlights |
| |
| The primary value of this model as a research artifact is the geometric monitoring data collected during training. The analysis packages in `fc-analysis/` and `bcpt-analysis/` contain activation geometry, concept geometry, and full metric histories. |
| |
| ### Geometric Health (Final Checkpoint) |
| |
| Monitored at layers [0, 7, 14, 21, 27] throughout training. |
| |
| | Metric | Value | Interpretation | |
| |--------|-------|----------------| |
| | RankMe (embedding) | 440.5 | High effective dimensionality (out of 512) | |
| | RankMe rebound ratio | 15.9x | Strong recovery from early collapse (min 27.7 at step 150) | |
| | WeightWatcher alpha | 7.71 | Within Muon-healthy range (see notes) | |
| | TwoNN intrinsic dim | 5.76 | Representation manifold dimensionality | |
| | Dead units | 0.0% | No dead neurons at any monitored layer | |
| |
| ### Stable Rank Profiles Across Depth |
| |
| Stable rank (effective rank of weight matrices) remains high across all layers throughout training, a signature of Muon's balanced spectral updates. Representative values from the final checkpoint (step 81,225): |
| |
| | Layer | Q proj | K proj | O proj | Gate proj | Down proj | |
| |-------|--------|--------|--------|-----------|-----------| |
| | 0 | 18.7 | 15.7 | 46.3 | 127.0 | 56.8 | |
| | 7 | 42.5 | 40.0 | 87.9 | 76.8 | 140.4 | |
| | 14 | 49.1 | 41.5 | 43.1 | 70.2 | 125.0 | |
| | 21 | 39.4 | 30.0 | 67.9 | 62.9 | 49.2 | |
| | 27 | 43.8 | 32.3 | 115.3 | 76.2 | 127.8 | |
| |
| Key observations: |
| - **No low-rank collapse:** All weight matrices maintain high stable rank through 170B tokens. Under AdamW, these values would typically be 2-4x lower. |
| - **Depth utilization:** Non-monotonic stable rank profile indicates all layers are actively contributing (not degenerating into near-identity transformations). |
| - **Zero dead units:** No layer shows any dead neurons, even after extreme overtraining (1,581x tokens/parameter). |
| |
| ### Attention Entropy Across Depth |
| |
| | Layer | Mean Entropy | Std | Interpretation | |
| |-------|-------------|-----|----------------| |
| | 0 | 6.13 | 0.43 | Broad attention (early feature mixing) | |
| | 7 | 4.64 | 0.77 | Selective attention with variance | |
| | 14 | 5.49 | 0.41 | Moderate selectivity | |
| | 21 | 5.68 | 0.29 | Moderate, low variance | |
| | 27 | 4.14 | 0.79 | Most selective (prediction heads) | |
| |
| This gradient -- broad at the bottom, selective at the top -- is the healthy pattern. Crucially, **the deep layers (L27) maintain diverse attention patterns** (std=0.79) rather than collapsing to BOS-sink. In baseline models without AttnRes, layers 21-27 develop 89-90% BOS attention concentration by this training stage. |
| |
| ### Anisotropy Profile |
| |
| | Layer | Anisotropy | |
| |-------|-----------| |
| | 0 | 0.066 | |
| | 7 | 0.452 | |
| | 14 | 0.413 | |
| | 21 | 0.148 | |
| | 27 | 0.090 | |
| |
| The inverted-U anisotropy profile (low at edges, peaking at middle layers) indicates structured representational geometry rather than isotropy collapse or extreme anisotropy. |
| |
| ### AttnRes Effects (from Proxy Phase Ablations) |
| |
| These findings come from the 5-run optimizer sweep at 6B tokens and the full 170B run: |
| |
| - **BOS-sink prevention:** Baseline models develop 89-90% BOS attention at deep layers by 6B tokens. DD-v1 AttnRes prevents this entirely, maintaining diverse attention patterns at all depths. |
| - **4x gradient uniformity:** Gradient norm variance across layers is ~4x lower with AttnRes, enabling more uniform learning across depth. |
| - **Full depth utilization:** Without AttnRes, deep layers tend toward near-identity transformations. With AttnRes, stable rank and attention entropy remain diverse at all depths. |
| - **DD-v2 fragility:** Shifting even one block boundary (L12 to L14) produced 12/16 geometric metrics outside the range of all other configurations. Variable-size blocks cascade nonlinearly. |
| |
| ### NCA Pre-Pretraining Effects |
| |
| - **Trains attention, not MLPs:** NCA pre-pretraining primarily structures attention weight matrices. MLP weights show minimal structured change, confirming that MLP reinit after NCA is correct. |
| - **L14 attractor basin:** NCA creates a distinctive geometric signature at layer 14 that persists through full language training. This basin is present regardless of AttnRes configuration. |
| - **Sub-additive with AttnRes:** NCA + AttnRes produces only +0.008 nats over the better of either alone, but preserves geometric properties from both techniques everywhere in the network. |
| |
| ## Key Findings (Proxy Phase) |
| |
| 1. **Muon lr=0.02 is the Pareto optimum** for 108M: matches AdamW final loss while maintaining 2-4x higher stable rank across all weight matrices. |
| 2. **torch.compile is the dominant throughput optimization**, providing 4x improvement. Liger kernels without FusedLinearCE hurt compile by 13%. |
| 3. **Extreme overtraining (1,581x tokens/param) does not cause geometric collapse** with Muon + AttnRes. Stable rank, attention entropy, and dead unit counts all remain healthy at 170B tokens. |
| 4. **WW alpha healthy range is higher for Muon than AdamW.** Alpha values of 7-8 are normal for Muon-trained models; do not apply AdamW-calibrated thresholds (which would flag these as unhealthy). |
| |
| ## Usage |
| |
| The checkpoints are stored as compressed PyTorch state dicts (`.pt.zst`). To load: |
| |
| ```python |
| import torch |
| import zstandard as zstd |
| import io |
| |
| # Decompress |
| with open("fc-base.pt.zst", "rb") as f: |
| dctx = zstd.ZstdDecompressor() |
| decompressed = dctx.decompress(f.read()) |
| |
| # Load state dict |
| state_dict = torch.load(io.BytesIO(decompressed), map_location="cpu", weights_only=True) |
|
|
| # Initialize model (requires the kotodama training code) |
| from src.model.llama import LuxiaBaseModel, LuxiaModelConfig |
|
|
| config = LuxiaModelConfig( |
| hidden_size=512, |
| num_layers=28, |
| num_attention_heads=4, |
| num_kv_heads=2, |
| head_dim=128, |
| intermediate_size=1408, |
| vocab_size=49152, |
| max_position_embeddings=4096, |
| rope_theta=500000.0, |
| qk_norm=True, |
| tie_word_embeddings=True, |
| z_loss_weight=1e-5, |
| attn_res=True, |
| attn_res_boundaries=[0, 3, 7, 12, 21, 25], |
| ) |
| |
| model = LuxiaBaseModel(config) |
| model.load_state_dict(state_dict) |
| ``` |
| |
| **Tokenizer:** `HuggingFaceTB/SmolLM2-135M` (49,152 vocab, byte-fallback). |
| |
| ## Repository Contents |
| |
| ``` |
| fc-base.pt.zst # Fullcorpus final checkpoint (81,252 steps, 170.4B tokens) |
| bcpt-base.pt.zst # Books-CPT checkpoint (17,337 additional steps, 36.4B tokens) |
| fc-analysis/ # Fullcorpus analysis package |
| activation_geometry/ # Per-layer activation extractions |
| concept_geometry/ # Concept-level geometric analysis |
| lm_eval/ # Full lm-evaluation-harness results |
| report.html # Analysis report |
| bcpt-analysis/ # Books-CPT analysis package (same structure) |
| fc-metrics.jsonl # Fullcorpus training metrics (loss, LR, throughput) |
| fc-geo_metrics.jsonl # Fullcorpus geometric monitoring (stable rank, entropy, etc.) |
| bcpt-metrics.jsonl # Books-CPT training metrics |
| bcpt-geo_metrics.jsonl # Books-CPT geometric monitoring |
| ``` |
| |
| ## Limitations |
| |
| - **108M proxy scale.** This model exists to validate architecture and optimizer choices, not to be useful for downstream tasks. Benchmark performance reflects this. |
| - **No raw code in training data.** The 645GB cleaned stack_v1 JSONL (~126B tokens, 130 languages) was never tokenized and is absent from the data mix. The model sees code only through reasoning traces (OpenCoderReasoning) and Q&A (StackExchange). |
| - **Conversational data < 1.2%.** The original spec targeted 25% conversational data. The actual mix is dominated by academic text (35.6%) and code reasoning (21.0%). |
| - **OCR noise in books-CPT.** Despite filtering documents with >5% garbage characters, the books-CPT data (pre-1929 scans, Library of Congress) contains residual OCR artifacts. |
| - **No deduplication** was applied to the books-CPT data (estimated minimal cross-source overlap between digitization projects, but not verified). |
| - **Eval methodology:** Top-p sampling catastrophically degrades generation quality at 108M scale. All evaluation uses pure temperature sampling only. |
| |
| ## Citation |
| |
| ```bibtex |
| @misc{kotodama2026, |
| title={Kotodama: Block Attention Residuals and NCA Pre-Pretraining for Transformer Language Models}, |
| author={Aethera GP}, |
| year={2026}, |
| url={https://huggingface.co/aethera-gp/kotodama-108m-base} |
| } |
| ``` |
| |
| ### References |
| |
| - Block Attention Residuals: see `Attention_Residuals.pdf` in the training repo |
| - NCA Pre-Pretraining: [Han et al., 2026](https://arxiv.org/abs/2603.10055) |
| - Muon Optimizer: [MoonshotAI/Muon](https://github.com/MoonshotAI/Muon); [Moonlight: Muon is Scalable for LLM Training](https://arxiv.org/abs/2502.16982) |
| - Gram-Newton-Schulz: [Dao-AILab/Gram-Newton-Schulz](https://github.com/Dao-AILab/Gram-Newton-Schulz) |
| - WeightWatcher: [Martin et al.](https://arxiv.org/abs/2102.11258) |
| |