Gradient Dissent · Thu 22 Oct 2026 · NVIDIA's looped models

The loop gate sets a step size for every token and every channel

In a looped model the same middle block runs again and again. Each pass proposes a new state, and the gate decides how far to move toward it. It decides separately for every token and every channel. The figures respond to taps and drags.

0.35
every step size when training starts
\(\sigma(0)\cdot\operatorname{softplus}(0) = \tfrac{1}{2}\ln 2\)
≈0.2%
of the model's parameters
\(d^2 + 2d\): 9.4M at \(d = 3{,}072\)
−0.025
one-loop loss from the gate alone
1.660 against 1.685 on a 0.5B model

1 · Each loop moves every channel part-way toward a proposal

\[ s_i = s_{i-1} + \beta_i \odot \left(r_i - s_{i-1}\right) \]
\[ \beta_i = \sigma\!\left(W_\beta\, \tilde s_i + b_\beta\right) \odot \operatorname{softplus}(\gamma) \]

Read the gate from right to left. \(\operatorname{softplus}(\gamma)\) is a learned cap for each channel. The sigmoid, between 0 and 1, says how much of that cap this token uses on this loop, and the gate matrix \(W_\beta\) computes it from the whole state.

2 · The same block and the same gate run k times

Loops

Koi-4B: 14 input layers, 24 in the loop, 14 output layers.

At one loop every layer runs exactly once, so the model costs the same as an ordinary 52-layer model. Each extra loop adds 24 layers of compute and no parameters. The arc over each block is the old state, which the gate blends with the block's proposal.

3 · One step: β = 0 keeps the state, β = 1 replaces it

Drag the blue and orange points.

4 · The gate matrix reads the whole state to set each channel's step

Row \(j\) of \(W_\beta\) is a detector for channel \(j\). It takes a weighted sum over all \(d\) channels of \(\tilde s\): a large positive sum opens the gate, a large negative one closes it. The toy below has \(d = 8\); Koi-4B has \(d = 3{,}072\).

Token

\(\tilde s\) across the top, \(W_\beta\) below, one row per channel

This token's step \(\beta_j\), inside its cap

Channel

Toy numbers with \(d = 8\), made up to show the arithmetic. They are not the paper's weights.

5 · Across loops the same matrix gives a different step

\(W_\beta\), \(b_\beta\) and \(\gamma\) are shared by every loop. The step still changes from loop to loop, because \(\tilde s_i\) changes as the state moves.

Loops

\(\beta\) for each loop (rows) and channel (columns)

How far each loop moved the state

Grey: the change the block proposed. Green: how far the gate let the state move. A toy loop block (a fixed random layer with tanh), with section 4's token and gate.

As the state settles, each loop proposes a smaller change. Dory1.0-4B, which has no gate, settles the same way: over 16 loops its state moved 2.6% at loop 2 and about 0.3% per loop by loop 10.

6 · At one loop the gate is a learned skip around the middle block

\[ s_1 = (1-\beta_1)\odot h_{\text{in}} + \beta_1 \odot \mathcal{R}_\theta(h_{\text{in}}) \]

This is one loop as the paper's 0.5B ablations run it, without adding the input back. Each channel keeps part of its input and takes part of the block's output. An ordinary model has no such choice: it always takes all of the block's output.

For section 4's token: how much of each channel comes from the block

Orange: the share taken from the block, the number at right. Grey: the share kept from the input.

The gate alone took 0.025 off the one-loop loss

GPT-0.5B trained on 300B tokens, validation loss; lower is better. Ladhak et al., section 6.2.

The model trained only at one loop runs every layer once, like the baseline. Without the input added back the two differ only in the gate, and the gate model is 0.025 lower.

7 · Only a learned, token-dependent step matches the baseline at one loop

RuleUpdateResult, GPT-0.5B
Replace\(s_i = r_i\)Highest one-loop loss; worse at 5 loops than at 4
Residual\(s_i = s_{i-1} + r_i\)Stops improving after 3 loops
Delta\(s_{i-1} + \alpha \odot (r_i - s_{i-1})\)Second at every depth, 0.006–0.007 behind
Adaptive delta, the gate\(s_{i-1} + \beta_i \odot (r_i - s_{i-1})\)Lowest loss at every loop count

Delta's \(\alpha\) is learned for each channel but is the same for every token; it starts at 0.05. Ladhak et al., section 6.1.

With the gate, one loop matches the baseline and five loops are 0.058 lower

GPT-0.5B trained with mixed loop counts (up to 5), validation loss. Ladhak et al., Table 14.

8 · Dory, NVIDIA's released 4B looped model, has no gate matrix

Koi-4B, the paper's modelDory1.0-4B, released weights
Between loopsA gated step, \(s + \beta \odot (r - s)\)Replace, then normalize: \(\operatorname{norm}(\mathcal{R}(\operatorname{norm}(s + h_{\text{in}})))\)
Inside each layerOrdinary residual layersnGPT's step, \(h \leftarrow \operatorname{norm}(h + |\alpha| \odot (f(h) - h))\)
Who sets the stepEach token and channel, through \(W_\beta\)Each channel, through \(\alpha\); the same for every token
Gate parameters\(W_\beta\) is \(3{,}072 \times 3{,}072\), plus \(b_\beta\) and \(\gamma\)None among its 507 tensors

Koi's step changes with the token; Dory's does not

Koi-style: \(\beta\) from \(W_\beta \tilde s\)

Dory-style: \(\alpha\) for each channel

Toy values; rows are tokens, columns are channels. Each panel has its own colour scale.

Dory's per-layer step is the paper's "delta" rule, moved inside every layer. In the paper's 0.5B ablation, delta came second, 0.006–0.007 behind the gate. The question for the room: does nGPT's per-layer step already do most of the gate's job?

More for Thursday: the 17 slides, the 10-minute audio overview and the companion write-up.

Sources and notes