M2-2B / README.md
EverestAn's picture
Card: fix t2b_200k.pt formatting + status (200K safetensors export landed 09-29)
7e321e4 verified
|
Raw History Blame Contribute Delete
2.98 kB
---
language:
- en
license: mit
tags:
- awareliquid
- mt-lnn
- liquid-neural-network
- research
pipeline_tag: text-generation
---
# M2-2B
**1.93B-parameter AwareLiquid M2 preset** (2080 width × 34 layers × 16 heads),
the M2 experimental line's 2b configuration trained via `m2_training`.
Byte-level tokenizer (UTF-8 bytes, vocab 256).
**Status at upload:** research milestone — 200,000-step FINAL checkpoint (val PPL 2.4106). `model.safetensors` holds the 200K weights; the raw resumable PyTorch checkpoint is `t2b_200k.pt`.
**Training status (2026-09-28):** the baseline run COMPLETED at 200,000 steps,
final val PPL 2.4106. Full milestone table below; the 200K weights live in the
M2 repo (docs/RESULTS_2B_30K.md) and on the training server
(/root/M2/runs/t2b_30k.pt, 3.86GB bf16). **The 200K raw checkpoint
is now in this repo as `t2b_200k.pt`** (PyTorch bf16, weight-tied; the matching 200K-weight `model.safetensors` export is in this repo since 2026-09-29).
## Measured
| Milestone | val PPL (byte-level, WikiText-103) |
|---|---|
| 10K steps (feasibility) | 4.53 |
| 30K steps | 2.73 |
| 60K steps | 2.556 |
| 90K steps | 2.482 |
| 150K steps | 2.413 |
| **200K steps (final, 09-28)** | **2.4106** |
Convergence: 30K→60K −6.4%, 60K→90K −2.9%, 90K→150K −2.8%, 150K→200K
−0.1% (saturated).
Context-flat: PPL 2.72 / 2.72 / 2.68 at seq 128 / 256 / 512 (no length degradation).
Training: bf16 model, AdamW8bit, lr 1e-4, seq 128,
batch 8 × grad_accum 4, on a single A100-PCIE-40GB.
## Boundaries (honest)
- **Byte-level, not a subword model** — PPL is on UTF-8 byte tokens; NOT
comparable to gpt2-vocab models. Serve with byte tokenization.
- **Not an instruct/chat model** — raw next-token pretraining only.
- **Research checkpoint** — bf16 safetensors (weight-tied embedding; the tied
`lm_head.weight` is omitted, standard HF re-tie on load). No optimizer state:
not exactly resumable.
- The M2 line's verdict so far is honest-null on reasoning mechanisms; this
checkpoint is the language-line scaling artifact, not a capability claim.
## SFT checkpoints (post-training experiments, 2026-10)
| file | recipe | val PPL | JevBench public (official harness) |
|---|---|---|---|
| `t2b_sft_v1.pt` | alpaca-short 5.4k pairs (<=128B), 3 epochs, lr 1e-4 | 3.95 | - |
| `t2b_sft_v2.pt` | alpaca-short512 19.6k pairs (<=512B), 1+5k steps, lr 2e-5, rope_scale 4 | **3.20** | raw 31.3% (48 easy + 72 original decisions) |
Boundaries: instruction-SFT on **short** pairs; held-out generation went from
0/8 (base) to 4/8 format-correct, but decision-task accuracy remains the open
problem (best family configuration: 2B frozen core + decision head, 39.6%
easy-tier raw / ECE 0.20 / 0.168 s - see github.com/AwareLiquid/O1-Flash).
Serving interface for all of the above: byte-level, `max_seq_len` per config.
## Config
`config.json` carries the full MTLNNConfig (d_model 2080, 34 layers, 16 heads,
gwtb_n_heads=1, vocab 256, max_seq_len 129).