Training-free · any cache · any verifier

CachedSearch: Training-Free Cached Exploration for Test-Time Search in Video Diffusion

Test-time search only needs candidate rankings to survive acceleration. They do. So explore every candidate under aggressive caching, then re-generate only the winner at full compute.

Shreshth Saini1,2,†   Neil Birkbeck2   Yilin Wang2   Balu Adsumilli2   Alan C. Bovik1,3

1The University of Texas at Austin  ·  2Google, Inc.  ·  3University of Colorado Boulder

Work done while at The University of Texas at Austin.

explore cached
verifier picks
commit full

Eight drafts at half price, one full-compute delivery. The shipped video is a genuine full-compute sample, because the sampler is deterministic in its seed.

Cost explorer

What search width costs, with and without us

Every bar below is measured on Wan2.1-T2V-1.3B: a full rollout takes 68.3 s, a cached draft 34.7 s. Pick a search width to see what each strategy spends and how much of full search's reward gain survives.

Search width

measured operating points

Full best-of-N
547 s
CachedSearch
346 s
63%
of full search's cost
94.7%
of its reward gain
201 s
saved per prompt

At N = 8, recommit costs 8 cached drafts plus one full rollout.

Findings

Measured on VBench and VBench-2.0

Every candidate generated twice from identical seeds, once at full compute and once cached, then scored by the same verifier. Configured on a pilot grid and re-measured on the full suites.

Finding 01

Rankings survive caching

Cached and full-compute orderings agree closely, which is the only property search depends on. The draft the verifier scores costs about half of the sample it stands in for.

0.905median Spearman ρ
72%top-1 agreement
cheaper per draft
The same seed at full compute and under caching
Same seed: full compute on the left, the cached draft the verifier ranks on the right.
Finding 02

When ranking breaks, it breaks cheaply

Corruption concentrates on prompts whose candidates were nearly tied to begin with, exactly where choosing wrong costs least. Most prompts lose nothing at all, so the failure mode is self-limiting rather than compounding with search width.

0median regret
+0.31corr(spread, ρ)
Finding 03

The trajectory matters, not the budget

The obvious alternative is fewer denoising steps per candidate. At a matched two-fold saving it does far worse, because a truncated rollout honestly samples a different, shorter-schedule distribution: its scores rank its own outputs, not the full-compute videos that commit will deliver. Caching perturbs the same seed-matched trajectory, which is exactly what search needs.

90.1%capture, caching
72.6%capture, truncation
more regret from truncation
Delivered reward versus compute budget
Above break-even, cached exploration delivers more reward than full search at equal budget; truncation delivers less.
Generality

Any published cache can be the engine

Every caching family we tested drops in unchanged and lands on one capture-versus-speedup frontier. Fidelity is set by how much compute you reuse, not by which mechanism reuses it, so a stack already running TeaCache or PAB keeps it and simply gains the explore-cheap structure.

Exploration engineGain captureEnd-to-end cost
No caching (full best-of-8)100.0%621 s
PAB99.5%493 s
FasterCache CFG-Cache99.6%465 s
TeaCache93.2%365 s
EasyCache (our default)90.1%346 s
Honest edge

Keep-mode dampens motion

Keeping the cached draft instead of re-committing is cheaper still, but it dampens motion, and learned judges mildly prefer the dampened result. That is why commit is the default, and why our keep-mode claims rest on optical flow and LPIPS rather than judge scores.

Commit against keep at an aggressive threshold
Commit on the left, keep on the right, at an aggressive threshold.
Quickstart

Three lines in your search loop

CachedSearch wraps generation rather than replacing your model. The verifier defaults to ImageReward, the scorer behind every number here; pass your own to override it.

# pip install -r requirements.txt
from cachedsearch import cached_search

result = cached_search(pipe, prompt, n=8, tau=0.10)

result.video          # genuine full-compute sample
result.seed           # the winning seed
result.total_seconds  # about 63% of full best-of-8

Full adoption guide →

Calibrated operating points

The caching threshold is the one model-specific number. Fidelity tracks architecture family rather than parameter count, so calibrate once per family and reuse it across sizes.

ModelParamsFamilyτCaptureSpeedup
Wan2.1-T2V-1.3B1.3BWan0.2088.3%2.41×
Wan2.1-T2V-14B14BWan0.1087.5%2.05×
Wan2.2-TI2V-5B5BWan0.1086.0%2.05×
CogVideoX-5B5BCogVideoX0.0585.9%1.78×
HunyuanVideo13BHunyuanVideo0.0585.1%1.77×
LTX-Video2BLTX0.0279.6%1.71×
The method is not limited to these. It applies to any diffusion or flow-matching video model with a seed-deterministic sampler, which covers essentially every open text-to-video pipeline; these six are where we measured the numbers ourselves. LTX-Video is the honest boundary case: no threshold we measured reached 85% capture, which is precisely what calibration is meant to reveal before deployment rather than after.
Citation

Cite this work

@article{saini2026cachedsearch,
  title   = {CachedSearch: Training-Free Cached Exploration for Test-Time
             Search in Video Diffusion},
  author  = {Saini, Shreshth and Birkbeck, Neil and Wang, Yilin and
             Adsumilli, Balu and Bovik, Alan C.},
  year    = {2026},
  note    = {arXiv id to be added at release}
}

This work stands on open releases from the video generation community. We thank the teams behind Wan2.1, CogVideoX, HunyuanVideo, LTX-Video, TeaCache, PAB and VideoSys, FasterCache, EasyCache, ImageReward, VideoScore, and VBench.