Interactive world models keep the KV of past chunks as retrieval memory so that revisited places stay consistent. On a single consumer machine (one RTX 4090, 32 GiB of host memory, one NVMe SSD), long sessions with such memory hit two walls. The first is capacity: the KV of Matrix-Game 2.0 exhausts host memory after 45 seconds of video in bf16 and after 2.8 minutes in int4. The second is the model's positional horizon of 4.3 minutes. We show that this memory is capacity-bound rather than bandwidth-bound and that its access set is known before compute, because the camera pose is an input. An analytical model built on these observations predicts spill points to within one chunk and classifies zero versus non-zero stalls correctly on held-out configurations. Guided by it, WorldPager stores int4 KV in a GPU/DRAM/NVMe hierarchy instead of recomputing it, prefetches each chunk's memory from the extrapolated pose, never waits on a miss, and writes back in the background; to our knowledge, it is the first to place the KV memory of an interactive world model on an NVMe tier with zero-stall prefetching. With training-free position handling, it generates 37.5 minutes of video continuously with zero stalls and constant host memory, at about 9.5 frames per second. On a sealed test set, int4 storage shows no measurable quality loss; on long-gap revisits it lowers image quality by about one MUSIQ point.
Figures & tables
Fig. 1: Two walls for MG2 on one RTX 4090. Capacity stops every design without an NVMe tier early (chunk 21, 60, or 226 at 32 GiB), and without position handling every design stops by the positional wall at chunk 341; WorldPager reaches 3000 chunks. All bars are measured; the 64 GiB int4 run uses an extended position table so that it isolates the capacity wall, and it stops at chunk 496 against a registered model prediction of 492. WorldPager runs under 32 GiB with an NVMe tier (37.5 min of video).
LLM decoding (selective KV)
World model with retrieval memory
Compute per step
short (one token)
long ( ≈ 1.2 s per chunk)
Binding limit
transfer bandwidth
capacity (chunk 21 / 60 / 226)
Access set known
after the query is computed
before compute (pose is an input)
Prefetch
speculative [ 7 ]
from the control input
TABLE I: Premises of KV offloading in LLM decoding versus world-model memory (qualitative; our measurements for the right column).
Prediction
Held-out configurations
Met
Spill point and first NVMe read ( ± 1 chunk)
int8 (emulated), MG2 64 GiB, LingBot 200 / 240
8 / 8
Zero vs. non-zero stall
b1_ws, int8, LingBot (rate-limited)
15 / 15
Non-zero stall within 30%
same
7 / 9
All registered criteria (MG2, int8)
22 / 24
LingBot read path
200 / 240 chunks, 3 repetitions
45 / 48
SATA-class emulation (0.5 GB/s)
MG2, 2000 chunks, 2 repetitions
10 / 10
TABLE II: Held-out validation of the analytical model: all spill-point and zero/non-zero stall predictions hold, and 22 of 24 MG2 criteria are met. Predictions were registered before the runs and not adjusted.
Fig. 2: WorldPager overview. KV of past chunks is stored as int4 blocks (one block per layer and chunk) in a pinned DRAM pool and spills to NVMe. While chunk c is denoised, the retrieval set of chunk c+1 is computed from the extrapolated camera pose and staged to the GPU by a prefetch thread. A miss reuses the previous retrieval set instead of waiting. Cold dirty blocks are written to NVMe by a background thread.
Component
Model term it answers
Store int4 KV, not latents ( III-A )
per-chunk bytes Bc ; recompute cost vs. Tc
Three-tier store ( III-B )
spill point 1+⌊P/Bc⌋
Pose-driven prefetch, stale fallback ( III-C )
zero-stall condition rnew/BWR≤Tc
Background write-back ( III-D )
write bandwidth ≥Bc/Tc
Position handling ( III-E )
native horizon of 341 chunks
TABLE III: Design choices and the model terms they answer (Sec. II ).
Design (storage)
Chunk (ms)
FPS
Stall (ms)
Exhausted
Sliding window (none)
1022.9 / 1029.3
11.73
0
–
WorldKV-style (GPU, bf16)
–
–
–
21 (GPU)
Synchronous (DRAM, bf16)
1259.0 / 1275.2
9.53
58.2
60 (host)
ReWorld-style (DRAM, bf16)
1207.6 / 1223.4
9.94
0
60 (host)
Synchronous (DRAM, int4)
1230.8 / 1253.2
9.75
15.8
226 (host)
WorldPager (tiers, int4)
1210.5 / 1226.2
9.91
0
not reached
TABLE IV: Per-chunk cost at 32 GiB (a_yaw, 36 chunks; median / P99 over 165 chunks) and the chunk at which each design exhausts memory.
Fig. 3: Prefetching keeps the median stall at zero down to 0.25 GB/s, whereas on-demand swap-in stalls at every bandwidth. Stall per chunk (P50; triangles: P99 of prefetching) when NVMe reads are limited by a software token bucket and every retrieved block comes from NVMe (32 GiB, 36 chunks, 99–165 chunks per point). Crosses: predictions of the analytical model registered before the runs; predicted zero stalls are drawn at the axis floor.
Interval
Synchronous eviction
Background write-back
Chunks 3–225 (pool not full)
0.0 ms
0.0 ms
Chunks 225–240 (eviction)
+102.0 ms
+1.8 ms
Chunks 240–256 (revisits)
+135.8 ms
+4.9 ms
TABLE V: Background write-back removes nearly all of the eviction cost. Chunk-time increment over the pool-not-full interval (32 GiB, a_yaw, 256 chunks, 3 rollouts).
Fig. 4: Chunk time and host memory stay flat for 3000 chunks while KV spills to NVMe. One 3000-chunk session (37.5 min of video) under 32 GiB with all components enabled (1 rollout). Top: chunk time; the step at chunk 341 is the position re-mapping. Bottom: host RSS stays flat while KV spills to NVMe after the pool fills at chunk 226.
Runs
Gap
Δ LPIPS
Δ MUSIQ
All 15 (main)
short
− 0.005 [ − 0.015, +0.005]
− 0.04 [ − 0.36, +0.28]
mid
− 0.022 [ − 0.037, − 0.008]
− 0.67 [ − 1.59, +0.17]
long
− 0.026 [ − 0.043, − 0.009]
− 1.28 [ − 2.25, − 0.36]
No drift (10)
short
− 0.015 [ − 0.024, − 0.007]
+0.15 [ − 0.41, +0.70]
mid
− 0.036 [ − 0.058, − 0.015]
− 0.86 [ − 2.37, +0.60]
long
− 0.021 [ − 0.035, − 0.006]
− 0.97 [ − 1.76, − 0.17]
TABLE VI: Int4 storage does not harm revisit consistency and lowers long-gap MUSIQ by about one point. Int4 minus bf16 tiered storage on long-gap revisits (3 scenes, 5 seeds, 39 events per tier; 95% event-level bootstrap intervals). Each event is first averaged over the seeds kept, so the three scenes weigh equally; after the drift exclusion scenes keep 2, 5, and 3 seeds, and the values differ from a plain mean over the 10 runs in Appendix A . Δ LPIPS <0 : revisit closer to first visit. Δ MUSIQ <0 : lower image quality.
Design (budget)
Chunk (ms)
Wait P50 / max (ms)
1st write
1st read
Sliding window
2576
–
–
–
On-demand swap-in (32 GiB)
3488
37.7 / 375.4
102
179
WorldPager (32 GiB)
3491
0.017 / 0.103
102
178
WorldPager (64 GiB)
3496
0.017 / 0.107
218
236
TABLE VII: LingBot-World, 256 chunks (its native limit), system metrics only (first of two repetitions).
Work
Workload
Where KV lives
Prefetch signal
On a miss
Training-free
Beyond native pos.
WorldKV [ 4 ]
world model
GPU / CPU
–
–
yes
–
ReWorld [ 5 ]
world model
GPU + host DRAM (bank ≤ 30)
current pose
–
no
–
OmniMem [ 9 ]
long video
GPU + host DRAM
– (reactive)
waits
no
–
WorldPlay [ 3 ]
world model
frames; KV recomputed per chunk
–
–
no
yes (reframing)
WorldTrace [ 19 ]
world model
GPU + host DRAM (keys)
–
–
yes
yes
Velox [ 20 ]
world model
GPU
–
–
yes
–
TABLE VIII: Positioning. “–”: not applicable or not stated in the paper. Entries summarize each paper’s own description (see Sec. VI ).
Appendix figures & tables1 asset
Supplementary material from the paper’s appendix.
Appendix
Scene
Seed
D
Δ LPIPS (short / mid / long)
Δ MUSIQ (short / mid / long)
0000
5
+0.016
− 0.116
− 0.089
− 0.54
− 2.56
− 1.73
0000
6
− 0.062
− 0.021
+0.041
− 0.77
− 3.22
− 0.99
0000
7
yes
+0.128
+0.076
+0.035
− 1.37
− 7.49
+2.33
0000
8
yes
+0.035
− 0.029
+0.014
− 0.80
+1.52
− 11.03
0000
9
yes
− 0.068
− 0.033
− 0.065
+0.35
+3.35
+0.35
0003
5
+0.080
+0.005
− 0.027
+2.98
+1.74
− 1.93
Appendix
TABLE IX: Int4 minus bf16 per scene and seed (event means, no intervals). D: drift flag.