Test-Subject-3 / README.md
CyanMonkey's picture
export step 6500 (22.55%)
2118e24 verified
|
Raw History Blame Contribute Delete
4.34 kB
metadata
library_name: transformers
license: apache-2.0
tags:
  - oleander
  - gdn2
  - gated-deltanet
  - gqa
  - muon
  - marimo
  - molab

Oleander-150M

Training checkpoint (export) β€” step 6,500 / 28,820 Β· 22.55% of the planned run.

steps    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘  22.55%   6,500 / 28,820
tokens   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘  22.93%   3.46B / 15.11B compute
phase    tst   (TST bag training ends at step 8,646)

Trained with the Oleander marimo trainer (molab): hybrid GDN2 (gated delta-rule, gated-delta-net-2) and gated GQA layers with block attention residuals, MuonEq-R + AdamW, WSD schedule.

Training progress

Step 6,500 / 28,820
% complete (steps) 22.55%
Compute tokens seen 3.46B / 15.11B (22.93%)
Raw tokens seen (TST bags unpacked) 20.79B / 37.77B
Cluster tokens (all 1 worker(s)) 3.46B / 15.11B compute
Phase tst
Val loss / ppl 5.5231 / 250.40
Train loss (latest) 5.2200
Throughput 77,100 compute tok/s Β· 0.145 steps/s
Session elapsed 0d 11h 23m Β· ETA 1d 18h 53m
Checkpoint written 2026-11-13T07:27:27Z

How to load

The repo is self-contained: config.json carries an auto_map that points at configuration_oleander.py and modeling_oleander.py (shipped here), so remote code is all you need.

from transformers import AutoModelForCausalLM, AutoTokenizer

repo = "CyanMonkey/Test-Subject-3"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, trust_remote_code=True)

prompt = "Once upon a time"
out = model.generate(**tok(prompt, return_tensors="pt"), max_new_tokens=64,
                     do_sample=True, temperature=0.8, top_k=50)
print(tok.decode(out[0], skip_special_tokens=True))

The GDN2 mixers use flash-linear-attention kernels when they are installed and you run in bf16 on a GPU (pip install --no-deps fla-core flash-linear-attention); otherwise a pure-PyTorch recurrent reference is used β€” the same math, but slower for long prompts. There is no KV cache (use_cache=False).

Architecture

Oleander-150M (28L = 7 x [GDN2 Β· GDN2 Β· GDN2 Β· GQA] Β· d=576 Β· SwiGLU(1600) Β· tied 32,770 vocab)
Parameters 149,976,139 (149.98 M)
Layers 28 = 7 x [gdn2, gdn2, gdn2, gqa]
Hidden size / FFN 576 / 1600 (SwiGLU)
Vocab / context 32,770 (tied embeddings) / 1,024
Features GDN2 (gated delta net 2) x21: 9h x 64, conv4, gated GQA x7: 9 Q / 3 KV heads, head_dim 64, QK-Norm (offset form), partial RoPE (rotary_dim 32, theta 100000), value residual (v_mix), SwiGLU, RMSNorm, AttnRes (block attention residuals), tied embeddings, TST (token superposition training, bag 6)

Training setup

Optimizer muoneq_r (Muon) + AdamW β€” muon_adamw
LR schedule WSD Β· warmup 100 Β· stable until 82.5% Β· 1-sqrt cooldown
Batch 524,288 compute tokens / step (32 x 16 x 1024)
TST True Β· bag 6 Β· first 30% of steps
Data CyanMonkey/NextGen-1-32-1024 (train), 14,753,933 rows x 1024 tokens
Precision bf16 autocast Β· weights exported as float32

Files

file what
model.safetensors weights, trainer parameter names
config.json auto_map -> AutoConfig / AutoModelForCausalLM remote-code entry points
configuration_oleander.py OleanderConfig
modeling_oleander.py OleanderForCausalLM (same math as the trainer)
tokenizer.json, tokenizer_config.json, special_tokens_map.json tokenizer
training_meta.json detailed run metadata (this checkpoint)
progress.json flat step / tokens / % summary
generation_config.json, train_config.json sampling defaults, full trainer config

Notes

  • This is a work-in-progress checkpoint at 22.55% of the planned run, not a finished model: expect repetition and incoherence, especially with few-shot prompts.
  • The tokenizer comes from the base model the run started from; the vocabulary is a plain BPE model and is not extended during training.
  • training_meta.json is regenerated on every push and is the authoritative record of how far training got.