2026-07-15 · 10 min · reasoning · latent-reasoning · inference
A 1:32 narrated explainer, drawn in code. Every number and picture in it is this article's own; the sources are below.
› transcript
Hi, I'm Zinnia! Chain of thought is slow because the model writes every step out, one token at a time. LOTUS thinks in hidden states instead. The idea: loop the same model over a fixed block of latent slots, refining them all at once. Then ground every slot in a real reasoning token. After the question, LOTUS pads in a latent region: six blocks of twenty-five learnable slots, a hundred and fifty positions. The same base model runs over every slot at once, adding its last output back in. Six passes for the whole trace, not one per token. Each slot is then read through the ordinary LM head, and trained toward the gold chain-of-thought token that belongs there. One more forward pass reads the finished latents and writes the answer, which gets its own loss. Both losses matter. Alone, each leaves latents that decode to the gold step nine point one or nine point four percent of the time. Together, seventy point nine. Six passes don't grow with the rationale, so thinking gets two point five to six point nine times faster, about a point and a half behind explicit accuracy. The loop removes the sequential bottleneck; the supervision stops the drift. Together, latent reasoning keeps pace at 3B. To recap: a fixed latent region, one model looped over it, and a gold token for every slot. A fixed budget, chosen in advance. Every source is in the full article. I'm Zinnia. Bye!
Why read this
Nichelast 15%How LOTUS loops a padded latent region R times and supervises each slot against its gold CoT token, reaching explicit-CoT accuracy at 3B with a fixed budget.
- A lasting reference
- A new technique
- Explained from first principles
LLM architectureNothing to runResearch paper
How this was scored
- Is it new?
- 2 of 3: A real new idea, method or capability
- Can I trust it?
- 0 of 3: Restates claims
- Can I run it?
- 0 of 3: Closed, nothing to run
- Will I understand it?
- 2 of 3: Mechanism from first principles with figures
- Can I act on it?
- 1 of 3: General advice
- Will it last?
- 2 of 3: A reference for a year or more
- Does it affect many?
- 1 of 3: A specialist community
- Only here?
- 1 of 3: Some original analysis
Score 39 of 100, ranked 531 of 577 rated articles. Each question is answered 0–3 by hand, and a 3 is rare. How articles are scored
The way a reasoning model earns its answer is by writing out its work: an explicit chain of thought (CoT), one token at a time, before it commits to a final answer. That is where the latency goes. Each of those intermediate tokens is a full sequential decode step — a memory-bound pass over the growing KV cache — so the more the model thinks, the slower it answers.
Latent CoT is the tempting alternative: do the multi-step reasoning inside the model's hidden states, replacing decoded tokens with continuous representations, and skip the token-by-token bottleneck entirely. The problem is that it has never quite worked at scale. Methods like Coconut, CODI, and SIM-CoT match explicit CoT on small models, but beyond 1B parameters no latent method keeps up on math reasoning, and the gap widens as the backbone grows. LOTUS — Looped Transformers with parallel supervision on latents, from Ying Fan, Anej Svete, and Kangwook Lee — is, to the authors' knowledge, the first latent-CoT method to close that gap at the 3B scale, while cutting the thought phase by 2.5×–6.9×.
It gets there by fixing the two things the authors argue were holding latent CoT back.
- (P1) Sequential generation. Coconut, CODI, and SIM-CoT still produce their latent tokens autoregressively — the sequential bottleneck is still there, just moved into latent space.
- (P2) No CoT grounding. Without supervision that aligns each latent position to a specific gold reasoning step, the latent trace drifts and destabilizes as the model gets bigger.
The loop: one weight set, R passes, K blocks in parallel
LOTUS builds a padded latent region into the prompt. Between two learnable delimiters ⟨BoT⟩ and
⟨EoT⟩ it inserts blocks of shared, learnable ⟨lat⟩ tokens — a fixed latent positions
(the deployed config is , , so 150 positions). The question sits before ⟨BoT⟩; the answer
comes after ⟨EoT⟩.
The reasoning then happens by looping the base language model over that region. Let be the learnable latent embeddings and the ordinary LM backbone. Starting from the latents, LOTUS reuses the same weights for iterations, adding the previous pass's output back in each time:
where is the reused KV cache of the question. This is a recurrent-depth (looped) Transformer: it adds computation depth by reusing parameters, not by adding them. The crucial property is that all latent positions are refined together on each pass — so the whole thought phase is sequential forward passes, not one pass per generated token. Scrub the loop and watch the latents sharpen, then read out at the final iteration:
That parallelism is the answer to (P1). Where an autoregressive latent method spends a forward pass per latent token — the same shape of bottleneck that makes multi-token prediction and diffusion language models attractive — LOTUS spends only passes for the entire trace, regardless of how many tokens that trace would have been.
The other way to see this is as a network. A looped Transformer is a recurrent-depth network: roll it up and it is one block with a loop-back edge; unroll it and it is an effective -deep stack of the same weights, with the latents fed back in at every pass. The depth is real — each pass is a full forward through the backbone — but the parameter count never grows past . Toggle between the rolled and unrolled views, and drag the unroll depth:
That is the whole trick behind "add computation depth by reusing parameters, not by adding them": a 3B backbone reasons at a depth its parameter budget alone would not buy, because depth here is passes through shared weights rather than times the weights.
Parallel supervision: grounding each latent in its gold step
The loop alone is not enough; the latents need to be told what to compute. This is the answer to (P2), and it is the part that makes LOTUS more than "a looped model." After the final iteration, LOTUS reads each post-loop latent position through the base LM head and trains it, with cross-entropy, toward the gold CoT-step token that belongs in that slot. Each gold CoT step is tokenized and padded/truncated to tokens , and every position is supervised at once:
This is direct, position-aligned supervision to real reasoning tokens — much like ordinary explicit-CoT supervision — rather than the indirect hidden-state or KV-cache distillation used by earlier parallel-latent methods (PCCoT, KaVa). A separate final forward pass then supervises the answer against the latents:

The paper frames why both losses are needed with a Parallel Chain Likelihood (PCL) view. Because the step loss factorizes over positions rather than autoregressively, it induces
The two losses then split the work: provides coverage — it puts probability mass on the correct gold token at each position — while provides selection — it forces the jointly-computed latents to actually support the right answer. The ablation makes the split concrete: with only , the model's post-loop latents recover the gold top-1 token just 9.1% of the time; with only , 9.4%; with both, 70.9% (NLL 3.07 vs 9.29 and 5.97). Neither loss alone builds a readable, correct latent trace.
Why it is fast
The efficiency story is simple once the loop is clear. Explicit CoT's thought-phase latency scales with how much it writes; LOTUS's scales with , which is fixed. So the win grows exactly when the rationale gets verbose. On Llama-3.2-3B the paper measures the thought phase directly — drag the playhead and watch LOTUS finish while explicit CoT is still decoding:
On compact math-expression CoT the thought phase drops from 338.8 ms to 133.0 ms (2.5×), and total latency from 384.2 ms to 181.2 ms (about 2.1× overall). Swap in verbose natural-language rationales and explicit CoT balloons to 963.6 ms while LOTUS barely moves to 140.8 ms — a 6.9× thought-phase speedup, at essentially the same accuracy (68.13% vs 68.41%). The query-prefill and answer phases are nearly identical across methods; only the thought phase moves.
The numbers
Held against explicit CoT and the strongest latent baselines on GSM8K (Llama-3.2-3B, in-domain), LOTUS lands within about a point and a half of explicit CoT and clearly ahead of the latent baselines:
The pattern holds across backbones — GPT-2 (LOTUS 44.1 vs explicit 42.7), Llama-1B (57.3 vs 58.4), Llama-3B (70.0 vs 71.5) — so unlike prior latent methods the gap does not widen with scale. And on the out-of-domain average (GSM-Hard, MultiArith, SVAMP), LOTUS actually edges ahead of explicit CoT, 63.9 vs 62.1, led by a near-perfect 99.9% on MultiArith and 75.7% on SVAMP.
How deep does the loop need to be?
Loop depth is LOTUS's compute knob, and reasoning turns out to need a real amount of it. Train the model at increasing and accuracy climbs steeply — a shallow loop simply cannot fit multi-step arithmetic:
Two honest wrinkles live in this chart. First, depth is not free test-time compute you can dial up after training: take the model trained at and run it at and accuracy dips to 69.3% — LOTUS reasons best at the depth it was trained for. Second, the parallel width is nearly free where depth is not: sweeping from 1 to 50 tokens per block (a 50× change in latent positions) moves the thought phase by only about 30 ms — 110.9 ms to 141.2 ms — because those positions are processed in parallel. A single token per step (c=1) is too narrow (51.4%), but moderate widths (c=25–30) saturate at 70%.
Does it actually reason, or memorize?
Because LOTUS reads its latents through the ordinary LM head, you can literally decode the thought — the same trick behind interpretability tools that unembed intermediate activations. The post-loop latents recover the gold CoT at 70.9% top-1 / 85.8% top-5. More telling is a multi-path test: for a question with a trained gold chain (G) and an unseen-but-valid alternative chain (U), the readout orders their likelihoods (NLL 0.07, 4.28, 8.16), assigning graded probability to valid-but-never-seen reasoning. That ordering is the paper's evidence that the latents encode reasoning structure, not just a memorized string.
The take
LOTUS's real contribution is a clean recombination: take a looped padded Transformer (depth from weight reuse, all latent positions refined in parallel) and give it direct, position-aligned supervision to gold CoT tokens through the base LM head. The loop kills the sequential bottleneck that every prior latent method kept; the supervision kills the drift that made latent reasoning fall apart at scale. Together they do something no earlier latent-CoT method managed — stay on the explicit-CoT accuracy curve at 3B — while turning a variable, write-everything thought phase into a fixed -pass one.
The honest frame is that this is a parity-with-a-speedup result on math, bounded by a thinking budget you have to choose in advance. Whether a fixed box holds up when problems demand more steps than you budgeted — and whether the story survives outside arithmetic — are the open questions the authors name themselves. But as a demonstration that latent reasoning can finally keep pace with explicit reasoning at scale, and answer 2.5–6.9× faster while doing it, LOTUS is the first latent-CoT method that clears the bar.
Built on Bridging the Gap Between Latent and Explicit Reasoning with Looped Transformers (Fan, Svete, Lee; 2026). All accuracy, latency, and ablation figures are quoted from the paper (Llama-3.2-3B unless noted; GSM8K-family math benchmarks; deployed config , , ). The interactive diagrams are illustrations of the mechanism; the gold-CoT tokens in the loop diagram are illustrative.