LLM·

SMELT loops the middle half of an MoE transformer twice — Looped depth reuse — What does it mean?

The news. On September 1, 2026, researchers posted "SMELT: Scaling Laws for Compute-Matched MoE Looped Transformers" to arXiv. The paper asks whether a looped transformer is genuinely a better architecture, or whether it only looks better because looping quietly spends more arithmetic. That question only has an answer if the budgets are matched, so the authors closely match three of them at once: per-token FLOPs, total non-embedding parameters, and KV cache. Under that constraint they fit a separate Chinchilla-style scaling law per architecture across four model sizes, up to 54 billion non-embedding parameters, and report that the looped recipe reaches the same loss for 6.8-18.0% fewer training FLOPs on the compute-optimal frontier. Read the paper →

Picture the car wash. A car rolls in, passes the pre-soak bay, then the long scrub bay in the middle, then the dryer, and comes out the far end. If cars are coming out not-quite-clean, the obvious fix is to build another bay: more equipment, more floor space, more money. SMELT's fix is to send the car back through the middle bay a second time. The equipment is the same equipment; the car simply goes over it twice.

In the model, the car is one token's hidden state and each bay is a transformer layer — an attention part and a feed-forward part, both writing their result back into the residual stream that carries the token through the network. SMELT splits the stack in three. The layers before the middle run once, the middle half runs twice with the same weights, and the layers after it run once. A stack laid out that way puts every token through half again as many layer-visits as it has distinct layers. Nothing new was built; the middle bay just ran again.

The Mixture-of-Experts part is what makes the budget matching possible. In an MoE layer most of the weights sit in expert feed-forward networks and only a few experts run per token, so a layer's parameter count and its per-token compute are two separate dials rather than one. The paper does not publish the per-configuration layout, but that separation is what lets an architecture with fewer distinct layers still carry the same total non-embedding parameters as a deeper baseline.

The budget matching is the paper's real contribution, not the loop. Looped transformers are an old idea and they have looked good before — but usually in comparisons held at fixed model size, where running a block twice simply spends twice the arithmetic on it. A model handed more FLOPs beating one handed fewer tells you very little. Pinning per-token FLOPs, non-embedding parameters and KV cache together removes the three cheapest explanations at once, and what is left is much closer to the architecture itself. Across four sizes up to 54 billion non-embedding parameters, each fitted with its own scaling law, the looped curve falls faster: 6.8-18.0% fewer training FLOPs to reach the same loss on the compute-optimal frontier, with the largest reported gains on code, and an advantage that grows with sample length and with the number of in-context examples.

The mechanistic finding is the part most likely to outlive the recipe. Softmax has to put its weight somewhere, so when an attention head has nothing informative to look at it dumps that weight on one uninformative position — usually the first token. That is the attention sink, and it is wasted capacity. The authors report that the second visit reduces the attention sink and redirects mass toward content-relevant tokens. One reading, which the paper does not establish, is that the first pass leaves behind a summary of the sequence that the layer did not have the first time round, so on the second visit there is finally something worth attending to. The authors themselves call it an inductive bias — a built-in leaning that shapes what the network learns — that may underlie the gains, and they present it as a hypothesis, not a demonstrated cause.

Inputembeddings
Thecatsatonthemat
Attentioncontext mixing
+ Residualadd & norm
Feed-Forwardtransform
Outputto next layer
BudgetUnlooped baselineSMELT (middle layers loop twice)
Distinct layers built~48 (illustrative)~32 (illustrative)
Layer-visits per token~48 (illustrative)~48 = 16 outer + 16 middle x 2 (illustrative)
Per-token FLOPsbaselineclosely matched (SMELT)
Non-embedding parametersbaselineclosely matched (SMELT)
KV cachebaselineclosely matched (SMELT)
Training FLOPs to reach the same lossbaseline6.8-18.0% fewer, compute-optimal frontier (SMELT)

Hold the three budgets fixed and count layer-visits. Take an unlooped baseline with 48 layers — illustrative, since the paper does not publish per-configuration layer counts. Every token passes through all 48, so the per-token arithmetic is 48 layers' worth. Now build the SMELT version with 32 distinct layers: the middle half, 16 of them, runs twice, and the 16 outer layers run once. Layer-visits per token = 16 + (16 x 2) = 48 — identical arithmetic, so the FLOP budget matches. But the weights that have to exist are 32 layers' worth, not 48, and the paper holds the KV cache matched too, so the loop is not buying its depth with extra cache memory either. Something has to absorb the parameters those 16 missing layers would have held, and in an MoE stack the experts are the obvious place; the paper reports only that the totals match. The trade is 16 blocks you never build, in exchange for walking the same 16 blocks twice — and on the measured frontier that is worth 6.8-18.0% of the training FLOPs needed to reach a given loss.

Goes deeper in: LLM Internals → The Transformer Block → Modern Variants & Scale

Related explainers

Frequently Asked Questions

Check what you knowMap your AI & GPU knowledge across every track — free, role-based