Causal methods Working model Intermediate 3D dissection 160 components 19 Oct 2026

Where the answer forms

A real 0.5B language model read mid-computation by two lenses, the model's own last step and one trained per layer, and then changed by patching to see where the answer is actually made.

Two methods turn a language model's hidden state at layer 12 into a probability distribution over words: the logit lens, which applies the model's own final normalisation and unembedding, and the tuned lens, which first applies a translator trained for that layer. This piece takes Qwen2.5-0.5B-Instruct, a real 24-layer model, and lays out its residual stream at the answer position as 25 tiles of 896 recorded values, with both lenses' reading of every layer beside it. The logit lens is computed in the page from the recorded stream, the model's own RMSNorm weights and the unembedding rows of 1,500 candidate tokens; the tuned lens is computed live at layer 12 from the stored translator. A research desk, pre-registered before any run, tests four things on 90 prompts in three families (facts, copies, sums): whether the tuned lens is closer to the model on held-out text, at what depth each lens holds the answer for good, whether that depth matches the layer at which patching the last position's stream moves half the answer, and whether the lenses and block-by-block patching name the same blocks. The tuned lens proved far more faithful on held-out text (closer at all 23 intermediate layers, in both training seeds), but on the 90 prompts neither lens found the answer earlier than the other, and neither one's layer-by-layer gains tracked block patching: three of the four hypotheses were not supported, and the page says what the numbers do show.

The machine

A real network on a table, one position deep. At the bottom, the prompt as a strip of tokens with the answer position lit. Up the middle, the residual stream after 0, 1, ... 24 blocks as 25 tiles of 8 x 112 cells, one cell per hidden dimension, blue for negative and amber for positive; to their left, how much each block's attention and MLP wrote; to their right, the answer's probability and the top token under the logit lens and under the tuned lens at every layer, and the two patching checks. At the top, the model's own output and the unembedding. Far left, one block drawn at true proportions (1 cell = 8 dimensions), the live layer's translator pooled to 56 x 56, and the live lens station.

What is real. Recorded from the real model (Qwen/Qwen2.5-0.5B-Instruct at revision 7ae5576, float32 PyTorch on CPU): the residual stream at the answer position for nine fixed prompts, both lenses' full-vocabulary readings of every layer, and the patching curves of 90 prompts. Computed in the page: the logit lens at every layer and the tuned lens at layer 12 from the stored residual, RMSNorm weights, unembedding rows and translator, and every depth, gain and correlation the text states. test.mjs checks the in-page lenses against the recorded readings (worst log-probability difference reported in its output), a from-scratch re-run of three prompts by a different route, every derived number against a numpy and SciPy recomputation, the patching endpoints, the parameter count from the config values, and that files/research.json is what the summariser produces from the results. Quotations come from the arXiv LaTeX sources and the LessWrong post and were grep-checked against them. The research desk is pre-registered in research/README.md with a lab note of every deviation.

What to take away

  • On 12,700 held-out tokens the tuned lens was closer to Qwen2.5-0.5B's final distribution than the logit lens at all 23 intermediate layers in both training seeds, cutting the mean KL by 79%; at layer 12 the logit lens is 16.6 bits away and the tuned lens 3.1.
  • At layer 0 the logit lens's top token is the input token at 100% of positions, because the embedding is its own decoder when tied; at layer 12 it matches the model's own top token at 0.3% of positions, against 40.5% for the tuned lens.
  • Neither lens found the answer much earlier on 90 prompts: median prediction depth, logit lens then tuned lens (seed 0), 24 and 24 for facts, 22 and 21 for copies, 22 and 21 for sums (seed 1: 24, 20 and 22); for 25 of 30 facts the tuned lens holds the answer only at the output layer.
  • Patching the last position's stream first moves half the answer at layer 22 for facts, 21 for copies and 17 for sums: the lenses read facts and copies within two layers of that, and sums four or five layers later.
  • A lens's layer-by-layer gain in the answer's probability tracks block patching only weakly (Spearman 0.16 to 0.33), and the two lenses do not differ.

Sources

More machines

Other working models

Why 722 becomes 719: a still of the machine Working model · 3D Mechanistic Interpretability · Hallucination & faithfulness

Why 722 becomes 719

A real 0.5B language model opened up at the moment it copies a number from its context: the heads that carry the digit, the votes that choose it, the sampler that sometimes doesn't, and a guard that checks every digit as it is written.

Two people paste the same research notes into a small model and get 722 and 719. A 3D dissection of Qwen2.5-0.5B at the moment it copies the number, with pre-registered experiments on five models: wh…

24 components · Intermediate 18 Oct 2026
Anatomy of Adam: a still of the machine Working model · 3D AI & ML · Training & alignment

Anatomy of Adam

Kingma and Ba's optimiser, dissected: every line of Algorithm 1 drawn as real blocks on a 151-parameter network, checked against PyTorch, with a research desk that reruns Reddi et al.'s counterexample, finds how rare a large gradient must be to defeat it, and tests the paper's claims about bias correction, the size of the step and ε.

Adam in 3D: its gradient, two moving averages, bias corrections and step drawn as real blocks for any step of a live training run, tested against PyTorch, then a pre-registered research desk on the c…

61 components · Intermediate 18 Oct 2026
Anatomy of Dynamo: a still of the machine Simulation · 3D Architecture · Distributed systems

Anatomy of Dynamo

Amazon's Highly Available Key-value Store, dissected: a ring of seven nodes laid out in 3D, the paper's Figure 3 lived through by a seeded cluster, and a research desk that tests the model of how stale its reads are.

Dynamo's ring, preference lists, quorums, vector clocks, sloppy quorum, hinted handoff, Merkle trees and gossip as a seeded cluster in 3D, with a research desk that tests the PBS staleness model agai…

96 components · Intermediate 18 Oct 2026

The whole gallery →