Denoiser
Previous estimate
×supplied · no parameters
The clean latents as estimated by an earlier call; zeros when there is none.
- shape
- [B batch, T positions, 768 d]
Explanation
This is self-conditioning: the denoiser sees its own earlier answer beside the noised latents.
Sources
Contextual evidence from Add noise
The diffusion gradient into the encoder: the weight rises from its minimum by a sigmoid schedule during warm-up, and the clean latents become w · z + (1 − w) · detach(z), unchanged in value.
The implementation, pinned at revision e18c42acdfb7, not yet public
Contextual evidence from Add noise
Diffusion: a time is sampled, the latents are noised by the marginal, with probability one half a first call without gradient gives the self-conditioning estimate, the denoiser predicts the clean latents, and the mean squared error against them is taken; the three losses are summed with their weights.
The implementation, pinned at revision e18c42acdfb7, not yet public
Contextual evidence from Add noise
The marginal: x_t = μ x_0 + σ ε.
The implementation, pinned at revision e18c42acdfb7, not yet public
Contextual evidence from Add noise
The tangent schedule: α = 1/√(1 + d² tan²(πt/2)), σ = √(1 − α²); β(t) is evaluated with t clipped at 0.95.
The implementation, pinned at revision e18c42acdfb7, not yet public
Contextual evidence from Add noise
Times are drawn by the adaptive sampler in resampling mode, otherwise uniformly.
The implementation, pinned at revision e18c42acdfb7, not yet public
Contextual evidence from Add noise
Joint training: decoder noise of standard deviation 3; weights 1 for the three losses; the diffusion gradient into the encoder rises from 0.001 over 50,000 steps by a straight-through scaling; the token decoder’s input is detached; AdamW at 3·10⁻⁴ for 1,000,000 steps of 512 sequences, gradients clipped at norm 1.
The implementation, pinned at revision e18c42acdfb7, not yet public
Contextual evidence from Add noise
Diffusion: self-conditioning on, `t_min` 0.05 and `eps` 10⁻⁵; the adaptive time sampler has 100 bins, a minimum weight of 0.0001, an EMA of 0.9 and updates every 5,000 steps; the denoiser’s EMA decay is 0.9999; scheduler `tanh` with d = 3, solver `euler`, `ode_sampling` false, N = 128 by default; the denoiser has 12 blocks of width 768 with 12 heads, time conditioning `adaln`, a standard MLP, softcap 50 and self-conditioning by concatenation; the timestep embedding’s `max_period` is 10.
The implementation, pinned at revision e18c42acdfb7, not yet public
Contextual evidence from Denoiser
The denoiser owns the time embedding’s two affine layers, one rotary table for all blocks, an affine projection of the concatenated input, and the stack.
The implementation, pinned at revision e18c42acdfb7, not yet public
Contextual evidence from Denoiser
The time embedding passes its MLP and a SiLU; the noised latents are concatenated with the previous clean estimate, zeros when there is none, and projected; the stack runs in bfloat16.
The implementation, pinned at revision e18c42acdfb7, not yet public
Contextual evidence from Denoiser
The denoiser’s stack applies the blocks in order and then the output layer, each with the time condition.
The implementation, pinned at revision e18c42acdfb7, not yet public