Overview
PiD (Pixel Diffusion Decoder), from NVIDIA's Spatial Intelligence Lab (arXiv:2605.23902, Apache 2.0), argues that the latent decoder—the final step converting compressed latents back to pixels—has been the neglected bottleneck in image generation. Traditional VAE decoders are reconstruction-oriented, faithfully amplify latent artifacts, and become prohibitively expensive at 2K/4K resolutions, often requiring a separate super-resolution cascade.
PiD's core claim: decoding should be a generative task, not a reconstruction task. It replaces the pipeline latent → VAE decode → low-res image → super-resolution with a single latent → conditional pixel diffusion → high-resolution image step.
Key points
- Architecture: Built on PixelDiT (1.3B params, MMDiT backbone, pixel-space diffusion), pretrained at 1024×1024 and extended to 2K/4K with NTK-aware RoPE for spatial extrapolation. Latent information is injected via a lightweight ControlNet-style adapter (Conv2d 16→512, SiLU, 4 residual blocks, linear projection to hidden dim 1536) every two DiT blocks.
- Noise-augmented latent training: Training feeds noisy latents
z̃_σ = (1-σ)z + σξ(σ ~ U(0, 0.8)) so the decoder doesn't over-trust latents and can handle partially denoised latents—enabling early termination. - Sigma-aware gating: Injection strength is modulated by a learnable gate
g_i(h_i, l_i, σ) = sigmoid(Linear_i([h_i, l_i]) - ασ); noisier latents receive weaker injection so the pixel prior takes over. Zero-initialization keeps pretrained behavior at the start of training. - DMD2 distillation: Distilled to 4 inference steps (σ schedule: 0.999, 0.866, 0.634, 0.342), with CFG folded into the student and GAN regularization via a projected discriminator. Only 3,000 iterations on 128 H100s (~2 hours).
- Early termination: Because PiD handles partially denoised latents, the base latent diffusion model can stop before full convergence; PiD finishes the refinement in pixel space.
- VAE latents: FLUX.1 / FLUX.2 / SD3 / Z-Image (4× upsampling)
- RAE semantic latents: DINOv2-B (4×), SigLIP / Scale-RAE DiT 2.8B (8×)
- Code: github.com/nv-tlabs/PiD (Apache 2.0)
- Weights: huggingface.co/nvidia/PiD
- Released adapters: FLUX, FLUX.2, Z-Image, Z-Image-Turbo, SD3, DINOv2, SigLIP (Qwen-Image support upcoming)
- Lu et al., "PiD: Fast and High-Resolution Latent Decoding with Pixel Diffusion", arXiv:2605.23902, 2026
- Project page: sites.google.com/view/pid-decoder
- Base architecture: PixelDiT (Wu et al., 2026), MMDiT (Peebles & Xie, 2023)
- Distillation: DMD2 (Yin et al., 2024)
Performance
| Hardware | Config | Latency | |---------|--------|---------| | RTX 5090 | 512→2048, 13GB peak | <1 second | | GB200 | same | 210ms | | vs SeedVR2 cascade | same res/hardware | 5.9× faster (211.2ms vs 1237.5ms) |
Total training cost: roughly 2.5 days / 200+ GPU-days. Text encoder is frozen Gemma-2-2B-it; captions auto-generated by Qwen3-VL-8B-Instruct.
Compatibility
RAE support is notable: RAE latents preserve semantics but leave low-level appearance underdetermined, which reconstruction decoders cannot fill—PiD's generative prior can.
Open source
Existing FLUX/SD3 pipelines can swap the VAE decoder for PiD plug-and-play without retraining the base model.