Attention Patterns — Layer 31 (32 heads × past tokens)kv=0
Logit Lens (what each layer would predict next)—
Raw GPU State (f32, strict mode)
residual[0..15]: —
Attention Heads (32)
FFN Groups (16)
Residual Stream
Attention Beams
Real GPU activations
Tokens
Try
1x
ApproachForward pass · liveTour playing
3.8 billion parameters
Right now, on your GPU. 292 dispatches per token, 32 layers, 1,024 attention heads.
drag to orbit·wheel to zoom·↑↓ step·space auto-play·P panels·O expand all·A ablation·S soft·K kid mode·H hide HUD·R reset
— · gpu —
build—
branch—
built at—
gpu vendor—
gpu arch—
gpu device—
browser—
platform—
screen—
max wg storage—
f16—
This fingerprint identifies the exact code + hardware running this forward pass. Quote it when reporting a numerical mismatch.
Downloaded model
Phi-3-mini · cached in this browser
Total on diskmeasuring…
Cache API—
OPFS—
Files—
Wipes Phi-3 weights from Cache API + OPFS on this origin. Next visit will re-download (~2 GB) from HuggingFace. The currently-loaded GPU copy keeps running until you reload.
● RECORDED RUN — real tensors captured live earlier ·
Press ? or Esc to close
Concepts · in neuropulse
Token
A fragment of text the model reads and writes — typically 3–4 characters. Phi-3's vocabulary holds 32,064 tokens, so every step picks one of those.
→ Output panel · Top-K probabilities
Residual stream
The 3,072-dimensional vector flowing through the model. Every layer reads from it and adds back to it — information accumulates rather than being replaced.
→ Residual Norm · Residual Strip · the central axis in 3D
Attention head
A 96-dim projection that decides which past tokens to look at. Phi-3 has 32 heads × 32 layers = 1,024 heads. Each specializes in a different kind of pattern.
→ Cyan heads in the ring · Heatmap panel
FFN / MLP
Feed-forward network. Expands residual 3,072 → 8,192, applies SiLU gating, projects back. Most compute happens here. Thought to store the model's facts.
→ Amber slab · FFN hover label on each layer
KV cache
Saved keys and values from every past token per layer, so attention doesn't recompute them. Paged memory — grows one slot per token, per layer.
→ KV Cache panel · strips below the residual axis
Softmax
Turns raw logits into probabilities: exponentiate, then normalize to sum to 1. Peaky softmax = confident; flat = guessing.
→ Top-K panel · Confidence panel
Quantization (q4f16)
Storing weights as 4-bit integers with fp16 scales. ~4× smaller than fp16 with negligible quality loss on Phi-3. The reason this fits on a consumer GPU.
→ Validation section (landing page essay)
Dispatch
One WebGPU kernel invocation. Phi-3 takes 292 dispatches per output token in the headless engine path; the visualizer adds ~56 more for live attention-score readback and the 8-layer logit-lens probes. Every one is visible in the 3D scene as its tensor lights up.
→ Cinematic mode shows the running counter on the scrub bar (N / 292)
Logit lens
A peek at the model's "current guess" at every layer, not just the last. If you took the residual after layer L and ran the final lm_head on it, what token would pop out? Watching L0 → L31 shows the answer crystallize with depth — early layers guess generically, later layers lock in the real answer.
→ Logit Lens panel · Logit Lens view mode
Ablation
Deliberately switching off part of the model to see what it was doing — like unplugging a wire to find what stops working. Shift-click attention heads in the 3D scene (they turn amber), then hit Run ablated: the model answers your prompt twice — once normally (Baseline) and once with those heads zeroed (Ablated). If the answers differ, those heads mattered for this prompt.
Phi-3 has 1,024 heads and is very redundant, so switching off just one or two usually changes nothing — it routes around them. Identical answers are a real finding, not a bug. To see the output actually collapse, ablate the heads that matter (see Sweep) or a whole component.
→ Ablation panel (press A) · amber heads in the ring
Sweep
The discovery tool for ablation. Instead of guessing which heads matter, a sweep runs your prompt 33 times on one layer — a baseline, then once per head with just that head switched off — and measures how much each one changed the answer. The result is the 32-cell strip, colored by impact: cyan = this head didn't matter, amber → red = it changed the answer a lot. Click a red cell to mark that head, then Run ablated on the important ones.
It's 33 full generations back-to-back, so it takes ~60 s and spins up your GPU.
→ Ablation panel · "Sweep 32 heads"
Controls
dragOrbit around the model (free 3D camera)wheelZoom in / outright-dragPan the view↑ ↓Step layers — Journey mode onlyspacePlay / pause auto-journey — Journey mode onlyHome / EndJump to first / last layer — Journey mode onlyP / TabToggle all panels on / offOExpand / collapse all panels to orbsLOpen / close Lessons — the guided learning pathRReset camera to default view?Open / close this glossaryEscClose overlays
One question · change anytime with the ◔ button
How deep do you want to go?
Press L or Esc to close
Learn neuropulse
0 / 0 done
Free-play tours
Hey, click these ↑
Each mode picks one of the captured tensors and gives it the whole screen. Same forward pass — totally different stories.