Self-Refining Diffusion Samplers: Enabling Parallelization via Parareal Iterations

Nikil Roashan Selvam, Amil Merchant, Stefano Ermon
12/11/2024
cs.LGcs.AI

No official code found. Best implementation: nikilrselvam/srds (4 stars, MIT, last commit 2024-12-11).

Abstract

In diffusion models, samples are generated through an iterative refinement process, requiring hundreds of sequential model evaluations. Several recent methods have introduced approximations (fewer discretization steps or distillation) to trade off speed at the cost of sample quality. In contrast, we introduce Self-Refining Diffusion Samplers (SRDS) that retain sample quality and can improve latency at the cost of additional parallel compute. We take inspiration from the Parareal algorithm, a popular numerical method for parallel-in-time integration of differential equations. In SRDS, a quick but rough estimate of a sample is first created and then iteratively refined in parallel through Parareal iterations. SRDS is not only guaranteed to accurately solve the ODE and converge to the serial solution but also benefits from parallelization across the diffusion trajectory, enabling batched inference and pipelining. As we demonstrate for pre-trained diffusion models, the early convergence of this refinement procedure drastically reduces the number of steps required to produce a sample, speeding up generation for instance by up to 1.7x on a 25-step StableDiffusion-v2 benchmark and up to 4.3x on longer trajectories.

View on arXivView PDF

Code Implementations(1)

nikilrselvam/srdsCommunity100%
MIT

Self Refining Diffusion Samplers

40Dec 11, 20241 years agoMIT

Similar Papers

Cite this paper

@article{selvam2024selfrefining,
  title  = {Self-Refining Diffusion Samplers: Enabling Parallelization via Parareal Iterations},
  author = {Nikil Roashan Selvam and Amil Merchant and Stefano Ermon},
  year   = {2024},
  eprint = {2412.08292},
  archivePrefix = {arXiv},
  doi    = {10.48550/arXiv.2412.08292},
  url    = {http://arxiv.org/abs/2412.08292v1},
  journal = {NEURIPS 2024 2024}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2412.08292.svg)](https://codeofpaper.com/paper/2412.08292)

Discussion