Training-free acceleration for diffusion transformers.
Diffusion models build an image or video by running a huge network dozens of times. SoftCache reuses the network's recent output instead of recomputing it, and takes bigger steps while that reuse is still accurate.
How it works
Caches decide when to refresh. SoftCache also decides how far to go: right after a refresh it jumps over several steps, then shrinks back as the next refresh nears.
Both samplers read the same staleness signal and refresh at the same kind of moment. The difference is what happens between refreshes. SeaCache walks the fixed grid one node at a time; SoftCache stretches the first cached steps after a refresh, when the headroom is largest, and lands between scheduled nodes. Fewer steps are taken for the same number of fresh passes, which is where the extra speed comes from.
Real FLUX schedules on DrawBench prompts.
Against other caches.
Same prompt, same seed, at 3.5× faster. SoftCache stays close to the reference where other caches drift. Click a clip to compare all four full screen.
“a giraffe on the right of a bird, front view”
“a purple bird”
“A confused panda in calculus class”
“Clown fish swimming through the coral reef”
Side by side with the reference.
Each tile sweeps between the reference (left) and SoftCache (right) at 3.5×. Click one to open it large. The reference is usually slightly better, which is the price of the speedup. Compared with other caches at the same speed, SoftCache gives up the least. The numbers are in Benchmarks, along with faster settings.
Benchmarks
Pick a speed: the table highlights that band and the examples below it run at that speed.
| Method | Speedup | PSNR ↑ | SSIM ↑ | LPIPS ↓ | DreamSim ↓ |
|---|---|---|---|---|---|
| TeaCache | 4.02× | 16.02 | 0.660 | 0.396 | 0.140 |
| TaylorSeer | 3.70× | 15.50 | 0.637 | 0.397 | 0.128 |
| SeaCache | 3.25× | 22.41 | 0.830 | 0.173 | 0.037 |
| DPCache | 3.49× | 21.27 | 0.803 | 0.182 | 0.041 |
| SoftCache | 3.79× | 23.20 | 0.847 | 0.146 | 0.028 |
| TeaCache | 5.28× | 15.19 | 0.619 | 0.466 | 0.193 |
| TaylorSeer | 5.59× | 11.44 | 0.448 | 0.695 | 0.385 |
| SeaCache | 5.28× | 18.81 | 0.724 | 0.326 | 0.088 |
| DPCache | 4.74× | 18.05 | 0.700 | 0.305 | 0.086 |
| SoftCache | 5.44× | 20.05 | 0.770 | 0.251 | 0.060 |
| TeaCache | 5.91× | 14.73 | 0.596 | 0.516 | 0.244 |
| TaylorSeer | 6.22× | 10.34 | 0.363 | 0.824 | 0.579 |
| SeaCache | 6.66× | 17.46 | 0.673 | 0.409 | 0.131 |
| DPCache | 6.50× | 14.83 | 0.537 | 0.533 | 0.206 |
| SoftCache | 6.91× | 18.58 | 0.710 | 0.327 | 0.087 |
| Method | Speedup | PSNR ↑ | SSIM ↑ | LPIPS ↓ | DreamSim ↓ |
|---|---|---|---|---|---|
| SeaCache | 3.53× | 23.63 | 0.778 | 0.203 | 0.102 |
| DPCache | 3.28× | 23.70 | 0.786 | 0.182 | 0.092 |
| SoftCache | 3.52× | 26.48 | 0.843 | 0.141 | 0.067 |
| SeaCache | 5.33× | 21.82 | 0.713 | 0.292 | 0.162 |
| DPCache | 5.42× | 20.34 | 0.682 | 0.293 | 0.162 |
| SoftCache | 5.39× | 22.36 | 0.742 | 0.246 | 0.129 |
| SeaCache | 6.11× | 20.38 | 0.667 | 0.349 | 0.205 |
| DPCache | 6.07× | 20.06 | 0.660 | 0.310 | 0.172 |
| SoftCache | 6.05× | 22.27 | 0.739 | 0.267 | 0.141 |
BibTeX
@misc{malnick2026softcacheadaptivestepsize,
title={SoftCache: Adaptive Step Size Caching for Diffusion Transformers},
author={Shimon Malnick and Nadav Orenstein and Ohad Fried and Shai Avidan},
year={2026},
eprint={2610.22369},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2610.22369},
}