skip to content

Search

← From Frames to Worlds

Part III — The Sora Moment and the Race (2024–2025)

Making Video Cheap

Step distillation for video, causal decoders, and the road to real-time generation.

2024–2026 13 min read 5 papers

It is late 2024. Sora has just shown that a diffusion transformer can produce a minute of coherent video (Chapter 9), and Stable Video Diffusion has put an open video model in anyone’s hands (Chapter 6) — but every one of these models still generates a clip the way a print shop fills an order: submit the whole request, wait, collect the finished reel. Over the following year, three papers attack the cost of that wait from three different angles, and by mid-2025 a video model can stream frames as fast as a viewer watches them.

Where We Were

Video diffusion models inherited image diffusion’s step-count problem and made it worse. A single image sample from a guided latent diffusion model already meant tens of sequential network calls, each one doubled by classifier-free guidance (Chapter 10); video multiplies that per-step cost by the extra temporal dimension a video transformer has to attend over, and multiplies the wait again because a clip is many frames, not one. The step-distillation methods that solved this for images — progressive distillation, consistency models, Latent Consistency Models (LCM), adversarial diffusion distillation — collapsed tens of guided steps into as few as one for a single frame (Chapter 18), and by late 2023 LCM had already shown that the same consistency-distillation trick worked directly on Stable Diffusion’s latent space (Luo et al., 2023). Porting that trick to video was not simply a matter of re-running the same recipe on a bigger tensor.

Two obstacles were specific to video. First, the video diffusion transformers built on top of spacetime patches (Chapter 9) and temporal attention layers (Chapter 6) are bidirectional: to denoise frame 40, the network attends over frames 1 through 80, so it cannot start emitting frame 1 until it has already committed to what the whole clip will contain. That is workable for a batch job that returns a finished file, but it rules out streaming — there is no way to hand a viewer frame 1 while the model is still deciding on frame 80. Second, even a distilled few-step video model still pays that few-step cost once per clip, and a longer clip, or an interactive session where a user’s input should change what happens next, needs the model to keep generating indefinitely rather than stopping after one fixed-length sample.

By the second half of 2024, a state-of-the-art bidirectional video diffusion model took on the order of a couple of minutes on a single high-end GPU to produce ten seconds of video — the CausVid paper’s own bidirectional teacher measured 219.2 seconds for a 10-second clip on one GPU (Yin et al., 2024) — a wait that is fine for a render queue and unworkable for anything a user expects to talk to.

Six years of step distillation arrive at video last Image diffusion learned to skip steps years before video did. 2024 to 2025 is this chapter's three routes closing that gap. Grey monospace text is the paper and year behind each step. 2020-10 DDIM tens of steps, not thousands 2020, deterministic sampler 2022-02 Distillation halves the student's steps 2022, halves step count 2023-10 LCM guided latent diffusion Luo et al., Oct 2023 2024-02 Sora minute-long, bidirectional OpenAI, Feb 2024 2024-12 LTX-Video, CausVid real-time and causal video Dec 2024, two routes 2025-01 Seaweed-APT single forward pass Lin et al., Jan 2025 2025-06 Autoregressive APT streams video continuously Lin et al., Jun 2025 step-distillation toolkit, built for images first the wait this chapter measures this chapter's three fixes LTX-Video removes distillation entirely by shrinking the architecture; CausVid and the APT models remove the bidirectional constraint as well.
Step distillation for images is six years old by the time this chapter's three routes finally point it at video, and each one removes a different part of the wait Sora still has. PNG ↓

The Breakthrough

LTX-Video: making the architecture itself cheap. Rather than distilling an existing model, the Lightricks team redesigned the video autoencoder and transformer together so that the expensive part of the pipeline — the per-step transformer forward pass — operates on far fewer tokens per second of video. LTX-Video’s video variational autoencoder (VAE) compresses each clip by a factor of 1:192, folding a 32×32×8 pixel block into a single latent token, and moves the patchifying step that most video diffusion transformers perform on the transformer’s input into the VAE itself, which lets the transformer run full spacetime self-attention over a much smaller token grid (HaCohen et al., 2024). Because the VAE decoder also absorbs the last stage of denoising rather than handing off a fully clean latent, the paper reports generating five seconds of 24fps video at 768×512 resolution in two seconds on a single H100 GPU — faster than the clip’s own playback time, without any step-distillation training at all. The result shows that “cheap” and “few-step” are not synonyms: an aggressively compressed latent space, in the tradition of latent diffusion generally (Chapter 13), buys real-time throughput on its own.

CausVid: turning the bidirectional teacher into a causal student. Tianwei Yin and colleagues at Adobe and MIT took the opposite route: keep an existing large bidirectional video diffusion model as a frozen teacher, and train a second, causal model to reproduce it frame-by-frame instead of clip-by-clip (Yin et al., 2024). A causal model generates frame nn using only frames before it, the same autoregressive dependency structure that language models and earlier autoregressive image models use (Chapter 5), which means it can start emitting output before it has “seen” the rest of the clip — and, paired with a key-value (KV) cache so each new chunk of frames does not have to re-attend over every previous frame from scratch (Engine Room, Chapter 17), it can stream indefinitely rather than stopping at a fixed clip length. The training recipe has two stages: first the causal student is initialized by regressing directly onto trajectories the bidirectional teacher already traced out with an ODE solver (Chapter 9, Score-SDEs); then an asymmetric distribution-matching loss refines it further, asymmetric because the teacher stays bidirectional and full-context while the student stays causal and chunked. The paper reports the resulting 4-step causal student generating a 10-second clip in 1.3 seconds on one GPU — sustaining 9.4 frames per second of streaming output — a roughly 170x wall-clock improvement over the 219.2-second bidirectional teacher, while scoring 84.27 on the VBench-Long benchmark, ahead of the prior state of the art at the time.

CausVid turns one frozen teacher into a streaming student An ODE warm start and a live distribution-matching loss point the causal student the same way the bidirectional teacher already scores real video. Grey monospace text is CausVid's own reported numbers. Bidirectional teacher frozen, full context CausVid's own teacher ODE trajectory pairs solved by the teacher score-SDE solver Causal student initialised on ODE pairs block-causal attention Asymmetric DM loss teacher score vs student's own the DMD gradient above Causal student, 4-step KV-cached, streaming 1.3s for a 10s clip Live video output frame by frame, continuous 9.4 fps sustained frozen, bidirectional score streams frame by frame frozen, reused for both signals a training or inference step the loss bridging bidirectional and causal reaches the viewer Result: a 10-second clip in 1.3 seconds, roughly 170 times faster than the 219.2-second bidirectional teacher it learned from.
Two signals point the causal student the same way: a warm start copied from the teacher's own solved trajectories, then a live loss comparing the teacher's judgement of realism against the student's. PNG ↓

Seaweed-APT: adversarial post-training for a single step. A third route, from ByteDance’s Seaweed team, skips distillation-from-a-teacher’s-trajectory entirely and instead continues training an already-pretrained video diffusion model with an adversarial objective, in the spirit of adversarial diffusion distillation for images (Chapter 18) but built for video from the start (Lin et al., 2025). The discriminator reuses the pretrained diffusion transformer’s weights directly as its starting point; the generator instead starts from a consistency-distilled checkpoint of that same pretrained model — a fast but blurry one-step version that the paper reports as an effective initialization for the adversarial stage that follows. From there, the discriminator is trained to tell real clips apart from the generator’s single forward-pass output, while an approximated R1 regularization term keeps that adversarial signal from destabilizing training — the same instability problem that limited earlier GAN-based image and video generators (Chapter 2). The resulting model produces a 2-second, 1280×720, 24fps video in a single forward pass: 6.03 seconds on one H100 GPU, or close to real time — about 2 seconds — when the forward pass is split across 8 H100 GPUs. A follow-up from the same group extends the recipe to autoregressive, chunk-by-chunk generation, so the single-step generator does not stop after one clip but keeps producing new latent frames conditioned on a viewer’s ongoing input, streaming 24fps video continuously — 736×416 on a single H100, or 1280×720 across 8 H100 GPUs for clips up to about a minute long (Lin et al., 2025).

A causal generator streams video in a read, emit, write loop Once trained, the same four-step loop repeats every chunk: no fixed-length clip to finish before the viewer sees a frame. Grey monospace text names each actor's role. Numbers mark the order of the loop. Viewer control + playback Generator causal, single-step KV cache context, read/write Video stream continuous output 1. control signal for next chunk 2. read cached context 3. emit next latent frame chunk 4. write new context 5. continuous playback, loop repeats the outside world the model reused across chunks the happy path, playing now Autoregressive APT sustains this loop at 24fps, up to about a minute of 736x416 video on one H100, or 1280x720 across eight.
No fixed-length clip has to finish before the viewer sees a frame: the same read, emit, write loop just repeats for as long as the viewer keeps watching. PNG ↓

The Mathematics

CausVid restricts the video transformer’s attention to a block-causal pattern: frames are grouped into chunks of size kk, and a frame in chunk ii may attend only to frames in chunks up to and including ii:

Mi,j={1if ⌊j/k⌋≤⌊i/k⌋0otherwiseM_{i,j} = \begin{cases} 1 & \text{if } \lfloor j / k \rfloor \le \lfloor i / k \rfloor \\ 0 & \text{otherwise} \end{cases}
SymbolMeaning
Mi,jM_{i,j}attention mask entry, whether frame ii can attend to frame jj
i,ji, jframe indices
kkchunk size, frames processed together

The causal student is first initialized by regressing directly onto the teacher’s own ODE-solved trajectories, over NN chunks with per-chunk timesteps tit^i:

Linit=Ex,ti∥Gϕ ⁣({xtii}i=1N,{ti}i=1N)−{x0i}i=1N∥2\mathcal{L}_{\mathrm{init}} = \mathbb{E}_{x, t^i} \left\| G_\phi\!\left(\{x^i_{t^i}\}_{i=1}^N, \{t^i\}_{i=1}^N\right) - \{x^i_0\}_{i=1}^N \right\|^2

The second stage refines the student with an asymmetric distribution-matching loss, whose gradient compares the teacher’s score against a second, continuously updated score network trained on the student’s own outputs:

∇ϕLDMD≈− Et[∫(sdata(xt,t)−sgen(xt,t)) ∂Gϕ(ϵ)∂ϕ dϵ],xt=αt Gϕ(ϵ)+σt ϵ\nabla_\phi \mathcal{L}_{\mathrm{DMD}} \approx -\,\mathbb{E}_t \left[ \int \big(s_{\mathrm{data}}(x_t, t) - s_{\mathrm{gen}}(x_t, t)\big)\, \frac{\partial G_\phi(\epsilon)}{\partial \phi}\, d\epsilon \right], \qquad x_t = \alpha_t\, G_\phi(\epsilon) + \sigma_t\, \epsilon
SymbolMeaning
sdata,sgens_{\mathrm{data}}, s_{\mathrm{gen}}teacher’s frozen score function, and the score of the student’s current output distribution
GϕG_\phithe causal student generator
ϵ\epsiloninput noise to the student
αt,σt\alpha_t, \sigma_tsignal- and noise-retention terms at diffusion timestep tt
xtx_tthe noised version of the student’s output at timestep tt

Seaweed-APT’s discriminator combines a standard adversarial term with an approximated R1 regularizer, computed by comparing the discriminator’s judgment of a real clip to its judgment of that same clip after a small amount of Gaussian noise is added:

LD=E[fD(D(x,c))]+E[fG(D(G(z,c),c))]+λ E[ ∥D(x,c)−D(x+σ η, c)∥22 ]\mathcal{L}_D = \mathbb{E}\big[f_D(D(x,c))\big] + \mathbb{E}\big[f_G(D(G(z,c),c))\big] + \lambda\, \mathbb{E}\left[\, \big\| D(x,c) - D(x + \sigma\,\eta,\, c) \big\|_2^2 \,\right]
SymbolMeaning
D,GD, Gdiscriminator (DiT-initialized) and single-step generator (initialized from a consistency-distilled checkpoint)
x,z,cx, z, creal clip, generator input noise, and conditioning
η,σ\eta, \sigmaGaussian perturbation and its scale
fD,fGf_D, f_Gnon-saturating adversarial loss functions
λ\lambdaweight on the approximated R1 term

What It Enabled

None of these three approaches replaced the others outright; they occupy different points on a training-cost, latency, and interactivity trade-off, and the fastest-moving products through 2025 combined more than one.

MethodYearMechanismReported latencyStreaming/interactive
Bidirectional baseline (CausVid’s teacher)2024full-clip diffusion, tens of steps219.2s for a 10s clip, 1 GPUno — must finish before output
LTX-Video2024compressed VAE plus DiT, no distillation5s of 768×512 video in 2s, 1 H100no — still clip-at-a-time
CausVid2024asymmetric distillation to a causal, 4-step, KV-cached student10s clip in 1.3s, 9.4 FPS streamingyes — frame-chunk streaming
Seaweed-APT2025adversarial post-training, single step2s of 1280×720 video in 6.03s on 1 H100, ~2s on 8 H100no — single clip per call
Autoregressive APT2025single-step generator made causal and continuous736×416 at 24fps on 1 H100, 1280×720 on 8 H100, up to ~1 minyes — indefinite interactive stream

The immediate effect was to make “video generation” stop meaning only “submit a prompt, wait, download a file.” A causal, KV-cached, few-step (or single-step) generator can, in principle, keep producing new frames for as long as a viewer keeps watching, and it can accept new conditioning — a changed prompt, a camera-control signal, a player’s input — between chunks rather than only at the start of a clip. That capability is the direct prerequisite for treating a video model as something closer to a real-time simulator than a renderer: the world-model framing introduced when video models first learned to predict physical dynamics (Chapter 3) only becomes an interactive product once generation is fast enough to run in a loop with a user’s actions, which is exactly what Chapter 15 and Chapter 16 build on. It is also, separately, a distinct compression axis from shrinking a model’s parameter count — the general teacher-student framing for that is in Engine Room, Chapter 16 — and production video pipelines increasingly combine both: a smaller model, distilled to fewer steps, running on a compressed latent space.

One distillation recipe forks into three routes, then rejoins LCM's image trick splits into a cheap-architecture route and a teacher-distillation route. The distillation route folds back on itself before handing off to interactive video. Grey monospace text is each system's reported speed. COMPRESS THE ARCHITECTURE DISTIL THE TEACHER LCM step distillation, images the base recipe, 2023 LTX-Video architecture, not distillation 5s clip in 2s, 1 H100 CausVid causal distillation 10s clip in 1.3s Seaweed-APT adversarial post-training 2s clip, single step Autoregressive APT continuous interactive stream 24fps, up to about 1 min Video as game engine real-time loop with a player chapter 15 the recipe this chapter imports this chapter's three routes where the fast route leads next
LTX-Video is a dead end on this map, a complete answer on its own; the distillation lane keeps folding one system's output into the next, and hands the result to Chapter 15. PNG ↓

Key Papers

PaperAuthorsYearLinkWhy it matters
Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step InferenceLuo, Tan, Huang, Li, and Zhao2023arXiv:2310.04378Established that consistency-style step distillation ports directly into guided latent diffusion, the base case video distillation extends
LTX-Video: Realtime Video Latent DiffusionHaCohen et al.2024arXiv:2501.00103Showed real-time video generation is reachable through architecture and compression alone, with no distillation step
From Slow Bidirectional to Fast Autoregressive Video Diffusion ModelsYin, Zhang, Zhang, Freeman, Durand, Shechtman, and Huang2024arXiv:2412.07772Distilled a bidirectional teacher into a causal, KV-cached, 4-step streaming student — the mechanism behind CausVid
Diffusion Adversarial Post-Training for One-Step Video GenerationLin, Xia, Ren, Yang, Xiao, and Jiang2025arXiv:2501.08316Reached single-forward-pass video generation via adversarial post-training of a pretrained diffusion transformer
Autoregressive Adversarial Post-Training for Real-Time Interactive Video GenerationLin, Yang, He, Jiang, Ren, Xia, Zhao, Xiao, and Jiang2025arXiv:2506.09350Extended single-step adversarial post-training to continuous, interactive, multi-GPU streaming generation

PM Lens

Papers referenced