On monitoring, tokens, and hidden states — tiny-shakespeare
Every page in this project that "traces" or "monitors" something real does it by reading a key someone actually wrote down. Here is one that exists, real and complete, next to one that doesn't — both pulled from the same real forward pass on the same six letters: ROMEO:
Has a key
CharTokenizer's lookup table, in full — all 65 entries, every one of them. Every id maps to exactly one character. Every character maps to exactly one id. Nothing is inferred; nothing is missing.
This table is why every page in this project could say "token 43 means e" and mean it literally. The key was written by hand, once, before the model ever saw a single example — it doesn't depend on training, doesn't drift, doesn't need interpreting.
Has no key
Same prompt, same forward pass. This is the real output of block 0's attention layer, at the last position — the point representing :, about to predict what comes after ROMEO:. 384 real numbers, captured the same way every other number in this project was captured. Every cell below is genuine:
| Dimension | Real value | What it means |
|---|---|---|
| 0 | -0.9817 | — |
| 1 | +0.7252 | — |
| 2 | +0.9822 | — |
| 3 | +0.0131 | — |
| 4 | +0.7455 | — |
| 5 | -0.6567 | — |
| 6 | -0.1021 | — |
| 7 | -0.5676 | — |
| 8 | +0.7357 | — |
| 9 | +0.3820 | — |
| 10 | +0.1587 | — |
| 11 | +0.3303 | — |
| 12 | -0.0754 | — |
| 13 | -0.1552 | — |
| 14 | +0.7876 | — |
| 15 | -0.1495 | — |
Copper is positive, red is negative, brightness is magnitude — that's a real visualization of real numbers. It is not a translation. There is no row anywhere that says what dimension 6 represents, because no such row was ever written. Training never produced one; nothing requires one to exist.
Everything this project has genuinely traced — token ids, ggml op names, CUDA kernel names, sampling probabilities — sits on one side of a real line: things with a key. We know exactly what MUL_MAT means, exactly what token 43 means, exactly what a 3.6% sampling probability means, because a legend exists for each of them, written by a person or fixed by the math itself.
The 384 numbers above sit on the other side. They are just as real, just as capturable, just as honestly reported — and they mean nothing we can currently read, because the index that would let us read them was never written and doesn't fall out of training as a byproduct. Calling that gap "reasoning" and calling our access to it "monitoring" borrows the vocabulary of a process we can actually watch, and lends it to one we can only watch the outside of.