Join the conversation

Join the community of Machine Learners and AI enthusiasts.

Sign Up
RiverRider 
posted an update 11 days ago
Post
162
Train Once, Read Everywhere

Paper title:
Train Once, Read Everywhere: Substrate Invariance of the Linearly Readable Structure in Frozen Language Models

Paper URL:
https://github.com/space-bacon/SRT/blob/main/arxiv_program/paper.md

Repository URL:
https://github.com/space-bacon/SRT

The consolidated findings of the SRT research program are now available.

The program treats frozen production-scale language models as substrates whose internal states carry structure that small, inspectable instruments can read. Results include:

- A ~12 M-parameter adapter that surfaces per-token semiotic signals from a frozen 7 B backbone with zero cross-entropy degradation
- An activation verbalizer that recovers text from single hidden states up to a calibrated paraphrase ceiling
- Linear readout ports spanning dense 3 B models to 94-layer 235 B mixture-of-experts models
- A 22 MB linear head that gives a frozen multimodal chat model image-to-text retrieval performance matching fully trained 2018 dual encoders on the COCO benchmark

The central claim is substrate invariance. The readable structure is a stable property of the model class. A head trained once on one host reads, with no retraining and at most a 42 KB recalibration, across:

- Hosts ten times smaller (31 B → 3 B)
- 4-bit weight precision
- Entirely different silicon and kernels (CUDA/bf16 to Apple Silicon/MLX-Q4)

Deployment tiers differ in latency and cost, never in capability.

All instruments, measurement protocols, invariance evidence, negative results, and artifacts are in the repository.

The hardware row is the one row in your invariance table whose evidence never goes through the head.

Your README points that row at scripts/local_sunstone.py, so I read it. HEAD_REPO = "RiverRider/srt-sunstone-linear-head" is line 33, and it is the only occurrence of HEAD_REPO in the file. Nothing loads it. The --validate branch does this:

mu_r, mu_l = ref.mean(0), loc.mean(0)
rc = ref - mu_r
lc = loc - mu_l
rn = rc / np.linalg.norm(rc, axis=1, keepdims=True)
ln = lc / np.linalg.norm(lc, axis=1, keepdims=True)
agree = float((np.argmax(ln @ rn.T, axis=1) == np.arange(n)).mean())

Mean-centered raw hidden states, cosine, argmax. No projection anywhere. So "through the head, local states retrieve their datacenter twins" is measured without the head, and the §8 row "100% head-space agreement" is agreement in raw centered state space.

I think that reads as a stronger result than the one you wrote, not a weaker one. If mean-centering alone takes MLX-Q4 states to full agreement with their CUDA-bf16 twins, the drift lives in the mean and the head is not what removes it. What it costs you is the sentence "the head projects away exactly the subspace in which the drift lives," which the code does not support.

The contrast with §7.2 is what convinced me this is plumbing rather than framing. q4_drift_eval.py does it properly: head_i(X_eval - mu_x), head_t(pool5 - mu_y), a named use_head=False baseline arm, and bf16_head_mu_recal recomputing the means from Q4. Adjacent sections, one applies the head and one does not.

Two more from the same file.

The task is self-retrieval of identical strings. texts comes from calib["captions5"] and ref is calib["cap5"], the same captions encoded twice on two runtimes. --retrieve, the image-to-text path the head exists for, raises SystemExit("--retrieve lands after --validate passes; image-side encode needs the vision path wired"), which your own SESSION_HANDOFF lists as open. So there is no i2t number on the MLX runtime at all, and "the tiers differ in latency and cost. They do not differ in capability" has no capability measurement on the new tier.

And the script emits one agreement figure, always centered. There is no as-is arm, so the 98.4% has no code path in the repo, and no R@5 is computed in it.

Worth catching now, because your arXiv checklist has exactly one box still open: author read-through for voice and claims.

The cheap half is one line, apply the text head to both sides before the argmax, and the row's label becomes true. The expensive half is the vision path.

Does centering alone still hit 100% on the MLX side, or does the head buy something there too?