PSSA / sparticle62ops
a plastic state-space architecture

A small language model
that is not a transformer.

PSSA reads text one token at a time through a recurrent state-space layer, keeps a bank of episodic memories it can look things up in, and rewrites part of its own weights while it runs. Written in Rust from scratch: no PyTorch, no TensorFlow, no ML framework underneath.

View on GitHub Weights on Hugging Face

How it differs from a transformer

A transformer scores every pair of tokens in the context, so its cost per step grows with the square of sequence length and the whole context is re-read at every step. PSSA carries one fixed-size state along the sequence in a single left-to-right pass, and looks things up in a memory bank instead of re-reading the context, so cost grows linearly with length.

tokens in t1t2 t3t4… PSSA block (per token) state-space layer memory read per-token update: g = sigmoid(w_gate · x) episodic memory bank slot k1slot k2 slot k3slot k4 keys on the Poincaré ball · values Euclidean read write next token
One pass per token: state carries forward, the memory bank is read and written every step, and a learned gate decides how much retrieved memory blends into the token stream.

Measured, on the same corpus, at matched parameters

PSSATransformer
Training cross-entropy3.984.43
Held-out cross-entropy3.9974.429
Held-out perplexity54.483.8
Generation speed, same CPU~12×1×
1.54M
parameters, trained from scratch in Rust
512
episodic memory slots, hyperbolic keys
0
ML frameworks underneath: raw Rust linear algebra
What this does not prove: these numbers come from one corpus and one training seed, measured by the author, at 1.5M-parameter scale. No third-party replication yet. A larger run is in progress. Full provenance: the README's comparison section, github.com/Sparticle62ops/pssa.

Get it

Source, training scripts, and the full README with benchmark tables live in the repository. Checkpoints are on Hugging Face.