Bitácora · Kiko Cisneros
interpretability · reproduction no. 08

The tiny workspace where a small model does its thinking

A few days ago Anthropic reported something striking: inside Claude there's a small collection of internal patterns — a kind of mental workspace — that carries the model's reasoning, separate from the words it actually says. I wanted to know if a tiny open model, the kind that runs on a laptop, has the same thing. It does. Here's what it is, and how you can find it yourself.


When a model answers "180" to "a train goes 60 km/h, how far in 3 hours?", it never writes down "60 × 3". That multiplication happens silently, inside the activations, on the way to the answer. Anthropic's recent paper — A global workspace in language models (full write-up) — gives those silent intermediates a name: the J-space, a small set of internal directions that disproportionately steer what the model will say later. They found it in Claude. The obvious question for someone who tinkers with small models all day: is it a big-model luxury, or is it already there in a 0.5-billion-parameter model you can run on a laptop?

Want to watch it think? Run the model live — in your browser.
This experiment's model (Qwen2.5-0.5B) or Gemma-4 on Google's brand-new LiteRT-LM runtime — 100% on your own device, no server, nothing uploaded.
▶ LAUNCH THE LIVE CONSOLE

The idea, in one picture

Every token, the model holds a big vector of activity — for the model I used, 896 numbers per layer. The trick (Anthropic call it the Jacobian lens) is to ask, for that activity: which directions most change what the model will say in the future? Mathematically that's a derivative of future outputs with respect to the current activity. Most directions barely matter. A tiny handful matter enormously — and those are the workspace.

activity vector 896 dimensions the Jacobian lens ∂(future words) / ∂(activity) + SVD → keep the top directions the J-space ~8 directions · 1.5% carry 76% of the influence
The Jacobian lens: out of ~900 dimensions of activity, a small handful (~1.5%) carry most of the leverage over what the model says next. Those are the reasoning workspace.

Finding it in a 0.5B model — three steps

I ran this on Qwen2.5-0.5B-Instruct (24 layers, 896 hidden dims), fully on CPU, on twelve short reasoning prompts. The recipe:

  1. Measure future-influence. Back-propagate the loss on the model's own continuation to each layer's activity — that gives, for every position, the direction its activity pushes future outputs.
  2. Extract the subspace. Run an SVD over those influence directions and keep the top few. On this model, 8 directions out of 896 hold 76% of the total future-influence energy — an effective rank of just 1.5%. That's the workspace.
  3. Prove it's load-bearing. The honest test isn't "it looks small" — it's knock it out and see what breaks. Project that 8-dimensional subspace out of the activity mid-network, and measure how much worse the reasoning gets — compared against removing a random 8-dimensional slice of the same size.

That third step is the whole ballgame. Here's what happens:

the causal result Removing a random 8-dim slice raises the reasoning error by +0.62 nats. Removing the 8-dim J-space raises it by +1.24 natstwice the damage, from the same number of dimensions. The model's reasoning genuinely leans on that tiny subspace. The global workspace isn't a big-model luxury: it's already there in a model you can run on a phone.

What's actually in there?

Peeking at the workspace through a "logit lens" (reading each layer's activity as if it were the final output) is fuzzier at this scale — a 0.5B model's mid-layers are noisy, and the interpretable concepts only sharpen near the end (you can see fragments like "how much", "equal", "twice" emerge in the last layers). So the content is hard to read cleanly on such a small model; the causal evidence above is the strong part. That honesty cuts both ways — which is why I'm publishing the full per-probe measurements so you can check them yourself.

A fair caveat: this is one small model, one subspace size, twelve prompts. The "planning" story from the original paper — future-relevant concepts lighting up early — is much weaker here; on this model reasoning mostly resolves in the last layers. What replicates cleanly and robustly is the core claim: a tiny, causally-necessary reasoning subspace exists.

A lens, not a knob

One more honest note, because it's the natural next question: if reasoning lives in 1.5% of the activity, can't you use that — keep it in high precision and compress the rest, or steer it to make the model smarter? I tried both. Neither works — the workspace is where reasoning is read out, not a dial you can turn, and every cheap attempt to optimize against it either measures training style or gets gamed. That's a story for another post. For now the honest, useful result stands on its own: the J-space is real, it's findable, and here's exactly how.


Reproduce it: the full per-probe measurements (base vs J-space-ablated vs random-ablated error, per-layer influence, subspace stats) are published as a dataset → KikoCis/jspace-reproduction-qwen2.5-0.5b. Back to the notebook index.