A pretrained diffusion transformer spends one token on every patch, in every layer and at every step. We keep the first and last blocks dense and run the middle on a few hundred content-sized region tokens: large over flat areas, single patches over detail.
We cut a Hilbert ordering of the patch tokens where the model's own features change most, so grouping in two dimensions becomes cutting a line in one. A learned Read pools each run into one token carrying its size and position, and a learned Write returns the core's update to its patch tokens. The backbone stays frozen apart from low-rank adapters, and the region count is drawn at random while fine-tuning, so one checkpoint runs at every budget, 1024 tokens down to 64. On half the tokens, RTI holds the frozen model's quality at 2.11× the speed.
Select a prompt and use the slider to set the compression rate. The middle column is one RTI checkpoint queried at four budgets. The right column is feature-similarity merging, the strongest prior reduction, at the same budgets and the same speed. The left column never changes: it is the frozen backbone at all 1024 patch tokens.
Speedups are wall-clock on one RTX 4090 with batch 4 and SDPA, not FLOP counts. Both reductions run inside the same interface, so the only difference between the two right-hand columns is the rule that forms the groups.
The partition is not fixed: we rebuild it from the model's own features at every step, so it tracks the image as the image appears. Early on there is nothing to track and the regions are large everywhere; as detail forms, the cuts crowd into it and the flat parts of the frame stay in a handful of tokens.
Left: the model's running estimate of the clean image. Right: the same frame with the boundaries of the regions the core is running on. Same sampler, seed and prompt as the gallery above.
Both methods turn the 1024 patch tokens into 512 tokens, two patches each on average; they differ in which patches each token is built from. We mark six grid positions — the same six on both sides — and paint the whole group that each one belongs to.
Ours are connected: a group covers one place, wide where the image is flat and down to a single patch where it is not. Similarity merging chooses members by appearance alone, so one group collects patches from opposite corners of the frame. Its token stands nowhere in particular, and the pretrained rotary attention is left with no position to read for it.
Measured over 64 prompts at R = 256: a patch sits 0.5 grid cells from its group's centre under our partition, 5.2 under similarity merging, against 12.2 for a random assignment.
We cut the Hilbert order at the largest feature gaps, so the cut sets are nested: lowering R only ever merges neighbouring regions, and one trained checkpoint serves every setting.
We hold the image fixed and sweep the budget from R = 1024 down to R = 32 and back. Carved stone and feather barbs hold their cuts longest; flat ground and blank wall merge first.
We probe the frozen MiniT2I[1]-B/16 before any training. Three measurements each fix one design choice. Detail is concentrated in space, so regions must be sized by content (a). The representation grows more poolable as the image forms, so the partition is rebuilt at every step (b). The redundancy sits in the middle blocks, so only those are compressed (c).
Detail is concentrated
The most-detailed 15% of patches hold half of the detail; half of them hold 88%.
More poolable as the image forms
Poolable in the core, sensitive at the ends
Representation retained = explained variance of a middle block's tokens after pooling the N=1024 patch tokens to R=256 and scattering back. Adaptive is our partition, uniform is the equal-length cut of the same order, skip drops tokens instead of pooling them. Panel (c) is why the first three and last four blocks stay dense.
We measure the effect of coarsening the token grid on the frozen model to investigate the redundancy, and the measurements fix four properties a reduction must keep. Redundant patches lie next to one another in flat stretches of the frame, so groups must be contiguous. In natural images detail concentrates in a small part of the frame, so group size must follow the content, large over a flat wall and small over foliage. A group covers a definite place that its token has to stand for, so each must carry a position. And dropping loses what pooling keeps, so the redundant content must be summarized rather than deleted.
Each prior reduction forfeits at least one of the four, and each is worst precisely where it does. Token Skip[3] routes the most important patch tokens through a block and lets the rest bypass it: its units are single patch tokens, connected and positioned by construction, but what bypasses is deleted, not summarized. Feature-similarity merging[4][5] pools patches that look alike regardless of where they are, so a group can gather patches from opposite corners of the frame; its token stands nowhere in particular, losing contiguity and position at once. A latent array[6][7] replaces grouping with R free latents that read the whole frame by cross-attention, giving up grouping and position together.
| Method | How it groups | Contiguous | Content-sized | Carries position | Summarizes | GenEval ↑ | Δ |
|---|---|---|---|---|---|---|---|
| RTI (ours) | contiguous runs of the Hilbert order | ✓ | ✓ | ✓ | ✓ | 84.7 | — |
| Token Skip[3] | top 12.5% of patch tokens enter the block, the rest bypass | (✓) | ✗ | (✓) | ✗ | 82.3 | −2.4 |
| Feat Sim[4] | nearest of R anchors by feature similarity | ✗ | ✗ | ✗ | ✓ | 80.5 | −4.2 |
| Latent Array[6][7] | R learned latents read every patch token by cross-attention | ✗ | ✗ | ✗ | ✓ | 45.7 | −39.0 |
Removing position costs an order of magnitude more than anything else.
MiniT2I[1] takes a 512² image as a 32×32 grid of N = 1024 patch tokens and follows the JiT[2] convention of predicting the clean image instead of the noise or the velocity, so its features track image structure. A Hilbert curve[9] visits every patch of that grid exactly once, and consecutive positions along it are always neighbours in the image. Any contiguous run of the order is therefore a connected region, and grouping in two dimensions becomes cutting a line in one.
Each boundary along the curve is scored by the feature difference across it:
dj = ‖ hπ(j+1) − hπ(j) ‖2
This is a first difference along the curve, an edge detector at patch resolution on mid-trunk features rather than on pixels. We cut at the R−1 largest scores: homogeneous stretches stay merged, detailed areas split down to single patches. The rule has no parameters and costs one pass over the sequence, cheap enough to recompute at every sampling step, so the partition follows the image as it forms.
A region token is a learned weighted average of the region's patch tokens, plus an embedding of the region's size:
αj = softmaxj∈c( w⊤hj )
zc = Σj∈c αj hj + esize(⌊log₂|c|⌋)
The softmax runs within the region, so Read can put its weight on a region's informative tokens instead of averaging blindly, and the size embedding tells the core whether a token stands for one patch or sixteen. The token's position is the average of its member tokens' rotary embeddings. Those are unit phasors, so the average survives at wavelengths longer than the region and shrinks below it: position is sharp for one patch and coarse for a large region, which is what a token covering an area needs.
After the core, a region's token has changed by z′c − zc. Write adds that change to each patch token as a residual on its pre-core features, with a small learned map g conditioning the update on the token itself:
hj ← hj + g( [ hj ‖ z′c(j) − zc(j) ] )
Tokens in one region therefore receive individual updates rather than one shared copy. And because every patch token keeps its pre-core features, the core's work arrives as a correction on top of them, which is how the coda still produces per-pixel output although the core never saw individual patch tokens.
The core is the contiguous span of middle blocks where the depth probe puts the redundancy, 3–13 of 17 on B/16 and 3–19 of 23 on L/16; the prelude and coda stay at full resolution. Its extent trades against its width: a longer core must run on more region tokens to hold the same quality, a shorter one needs fewer, and at matched compute the two are equivalent. The probe fixes where the span sits, not a unique length.
The trunk stays frozen. We train only LoRA[10] adapters and the Read/Write parameters, on MiniT2I's own fine-tuning data and settings. Both are initialised to exact mean-pool and broadcast, so training starts from the frozen model's own behaviour. We draw the budget R at each step from {64, 128, 256, 512}, so one checkpoint covers the range.
MiniT2I-L/16 · dashed rule is the frozen dense backbone
L/16 · 30 000 prompts · cfg 5.0 · clean-fid · lower is better
RTI at R=256 (14.71) beats Feat Sim at R=512 (19.99): better images at half the tokens and a higher speedup.
| Method | R | GenEval ↑ | CLIP ↑ | Pick ↑ | ImageReward ↑ | Speedup |
|---|---|---|---|---|---|---|
| MiniT2I-B/16 | ||||||
| Dense backbone | 1024 | 87.2 | 28.23 | 22.45 | 1.18 | 1.00× |
| Token Skip[3] | 576* | 82.3 | 28.08 | 21.93 | 1.06 | 1.19× |
| Feat Sim | 512 | 84.7 | 28.04 | 22.04 | 1.07 | 1.84× |
| RTI (ours) | 512 | 87.8 | 28.09 | 22.30 | 1.11 | 1.84× |
| Feat Sim | 256 | 80.5 | 27.73 | 21.57 | 0.93 | 2.15× |
| Latent Array[6][7] | 256 | 45.7 | 23.30 | 19.78 | −0.65 | 2.15× |
| RTI (ours) | 256 | 84.7 | 28.04 | 22.06 | 1.06 | 2.15× |
| MiniT2I-L/16 | ||||||
| Dense backbone | 1024 | 88.1 | 28.50 | 22.75 | 1.23 | 1.00× |
| Feat Sim | 512 | 83.1 | 28.80 | 22.34 | 1.16 | 2.11× |
| RTI (ours) | 512 | 87.5 | 28.58 | 22.63 | 1.20 | 2.11× |
| Feat Sim | 256 | 76.5 | 28.31 | 21.76 | 1.01 | 2.59× |
| RTI (ours) | 256 | 86.3 | 28.52 | 22.37 | 1.17 | 2.59× |
At B/16 and R=512, RTI scores above its own dense backbone on GenEval (87.8 vs 87.2) while running 1.84× faster. CLIPScore is the one metric where Feat Sim leads at R=512; it is also the least discriminative of the four, and RTI leads on GenEval, PickScore and ImageReward.
| Method | R | FID ↓ | vs. dense | Speedup |
|---|---|---|---|---|
| Dense backbone | 1024 | 9.07 | — | 1.00× |
| RTI (ours) | 512 | 11.43 | +2.36 | 2.11× |
| Feat Sim | 512 | 19.99 | +10.92 | 2.11× |
| RTI (ours) | 256 | 14.71 | +5.64 | 2.59× |
| Feat Sim | 256 | 28.02 | +18.95 | 2.59× |
Contiguity is a property of the order, so we swapped it and retrained. Raster order cuts row strips that wrap at row ends; Morton keeps dyadic cells together but jumps diagonally; only Hilbert steps to a neighbour every time. At R=128 the ranking is the one locality predicts, raster worst and Hilbert best, and it widens at R=64. At R=256 all three sit inside noise, because with that many regions even a bad order cuts short runs.
A region budget and fewer sampling steps both buy speed, and they do not compose. Below about 5 seconds an image the budget is the better purchase: at 1.8 s, 82.7 GenEval against 65.9 for the dense model run with fewer steps. Above it the ordering reverses. The results table reports the quality-matched point, not the compute-optimal one.
We apply the same interface to a frozen pixel-space JiT[2]-L/16 on ImageNet-256, with no text stream and the partition read from its features unchanged. RTI leads feature-similarity merging at every budget on both FID and Inception Score. The gap is largest at the middle budget and narrows at both ends: at R=193 little is reduced, at R=64 both methods degrade.
| R | RTI FID ↓ | Feat Sim | Δ |
|---|---|---|---|
| 193 | 2.42 | 2.73 | −0.30 |
| 130 | 2.69 | 4.53 | −1.83 |
| 64 | 4.71 | 6.28 | −1.57 |
Below R=256 the budget costs quality: on L/16, GenEval falls from 86.3 at R=256 to 80.3 at 128 and 69.1 at 64. The layout survives; lettering goes first, then fine geometry. Feature-similarity merging degrades further at both settings.
Speed stops improving over the same range. Only the image tokens inside the core shrink, while the dense prelude, the coda and the full-length text stream run unchanged, so the speedup saturates near 3× and halving the budget from 128 to 64 buys only 0.15×. Applying the same interface to the text stream is future work.
We thank the authors of MiniT2I[1] and JiT[2] for open-sourcing their code and pretrained checkpoints. Every result here starts from those models; we train only LoRA adapters and the Read/Write interface on top of them.
MiniT2I is pretrained on the recaptioned Conceptual Captions 12M[17] and fine-tuned on a 120K-image mix of BLIP3o-60k[18], OpenDatasets/dalle-3-dataset, and ShareGPT-4o-Image[19]; our text-to-image runs use that same fine-tuning mix. The class-conditional runs use ImageNet-1K[20].
The MiniT2I and JiT code releases are MIT-licensed, and so are our code and checkpoints. The datasets keep their own terms: BLIP3o-60k and ShareGPT-4o-Image are Apache-2.0 and the DALL·E 3 set is CC0-1.0, while the CC12M recaption release is CC BY-SA 4.0 and ImageNet is released under its own non-commercial research terms. Those last two are the ones to read before any commercial use.
Every prompt behind a figure in the paper or a visual on this page — 85 of them, grouped by figure, with the file each is read from — is listed in PROMPTS.md.
@misc{zamfir2026elastic,
title = {Elastic Token Compression for Pixel-Space Diffusion Transformers},
author = {Zamfir, Eduard and Reisswig, Christian and Wu, Zongwei
and Xian, Yongqin and Timofte, Radu},
year = {2026}
}