Yesterday we released FastH3 Omni: give it a prompt plus images, video clips and a voice, and it returns a finished video with synchronized sound. On eight GB200s, a 5-second 768p clip from one reference photo takes 5.7 seconds.

Today it comes to your desk. We ran the exact same requests, with identical prompts, references and seeds, end to end on one and two NVIDIA DGX Sparks, an RTX 5090, an RTX 3090 and an Apple M5 Max (64 GB).

Every clip in this video was generated on DGX Spark, one or two Sparks as labeled, from photos, video clips and voices. Turn the audio on.

TL;DR

  • DGX Spark runs every reference mix. A 5-second 480p clip from a photo takes about 3 minutes on one Spark and about 2 minutes on two, and the 128 GB of unified memory handles everything we tested, from one photo to three images or a long reference video, at 480p and 768p.
  • Across local hardware. The same 1-photo request takes 62 s on an RTX 5090, about 17 minutes on an RTX 3090 (plus model loading), and 19.5 minutes on an Apple M5 Max (single run) with FastVideo’s new MLX runtime.
  • 4.6× faster in seven weeks. Text-to-video on the Spark went from 243 s at our first local release to 52.6 s today. FastH3 Omni runs on the same stack, so those gains carry over.
  • References are the real cost. A reference photo makes a request 3.3–4.4× slower than text-to-video on the same machine. We show why, and how to trade some of it back.

Same request, every machine

Choose a reference mix and press Play together. Every panel uses the same prompt, references and seed; outputs differ across hardware, so compare quality rather than pixels.

End-to-end latency

Every bar is the full request, from prompt and references to a finished MP4 with audio.

DGX SparkOther machines

End-to-end seconds from request to finished MP4 with audio, 5 s clip (124 frames, 24 FPS), seed 0 prompt and references from the FastH3 Omni release. Shorter is better.

DGX Spark, every reference mix (three-seed means, 36-layer decoder, 5-second clips):

References2× Spark 480p1× Spark 480p2× Spark 768p1× Spark 768p
1 image130.1 s192.0 s217.8 s361.3 s
Image + voice128.6 s198.3 s220.9 s378.5 s
3 images390.5 s640.3 s594.8 s957.9 s
1 short clip116.2 s194.8 s200.6 s332.6 s
1 long clip261.4 s504.6 s366.5 s656.9 s

The two-Spark runs used the earlier FastH3 Omni QAD checkpoint, so read the 1× vs 2× ratio as indicative.

Across local hardware (480p, 36-layer decoder):

References1× DGX SparkRTX 5090RTX 3090Apple M5 Max
1 image192.0 s61.9 s16.9 min19.5 min
Image + voice198.3 s63.6 s18.0 min20.1 min
1 short clip194.8 s57.2 s14.5 min14.4 min

The M5 Max numbers are single runs; the RTX 3090 numbers exclude its ~7-minute model load per request.

  • Spark runs every mix in minutes, at both resolutions and with either decoder. The 3-image and long-clip requests hit the memory limits of today’s 24–32 GB GPU profiles; the M5 Max runs them, but in 44–59 minutes.
  • Two Sparks are 1.5–1.9× faster than one, and the long-clip request scales best (1.9× at 480p).
  • The decoder no longer matters much. The 8-layer decoder saves only a few percent on Spark, because the NVFP4 decoders take seconds and the transformer dominates.
  • Every class of local machine works. The RTX 5090 is the quickest single GPU at about a minute, and the RTX 3090 and the Apple M5 Max land within 15–20 minutes.

From text-to-video to references

Text-to-video on local hardware has become fast. On the Spark, where FastH3 first went local, the same 5-second 480p clip is 4.6× faster on one Spark and 6.8× faster on two than seven weeks ago (8-layer decoder; the first release was measured cold), on top of the 8.4× we measured over the public vLLM-Omni recipe at launch:

1× DGX Spark2× DGX Spark
Sep 2FastH3 V1 · 4 steps · full VAE
243 s
209 s
Oct 6FastH3 V2 · 8 steps · NVFP4
141.4 s
87.2 s
Oct 19FastH3-QAD-v2 · 36-layer decoder
58.1 s
33.6 s
Oct 19FastH3-QAD-v2 · 8-layer decoder
52.6 s
30.7 s
Text-to-video on DGX Spark, end-to-end seconds for a 5 s, 832×480 clip with audio, as published in each post (Sep 2: cold starts; Oct 6 and Oct 19: warm medians).

The gains came from eight-step distillation in NVFP4, NVIDIA’s 4-bit floating-point format, then quantization-aware distillation with 4-bit attention and NVFP4 decoders, which cut decoding from 43 s to under 2 s.

Adding a reference photo to the same request takes 3.3–4.4× more time on the same machine:

Text-to-video (FastH3-QAD-v2)FastH3 Omni, 1 image reference
2× DGX Spark3.9× more time with a reference
33.6 s
130.1 s
1× DGX Spark3.3× more time with a reference
58.1 s
192 s
RTX 50904.4× more time with a reference
14.07 s
61.9 s
End-to-end seconds, 5 s clip at 832×480 with audio, 36-layer decoder. Text-to-video from the FastH3-QAD-v2 post (warm medians); FastH3 Omni from this post (three-seed means).

The reason is tokens. A 5-second 480p clip is about 14,400 video tokens. FastH3 Omni reads each reference image on the 2048-pixel canvas it was trained with, which adds about 7,100 VAE tokens and another 7,100 vision tokens in the prompt. One photo doubles the sequence to about 29,000 tokens, and three photos roughly quadruple it to nearly 60,000. This is why the 3-image request is the slowest everywhere.

The reference canvas is therefore the biggest lever you control. --reference-max-pixels match shrinks each reference to the clip’s own size: on the M5 Max, the 1-photo request drops from 19.5 to 4.7 minutes (4.2×). It is opt-in because it departs from training and changes framing and action:

Trained reference canvasM5 Max · 19.5 min
--reference-max-pixels matchM5 Max · 4.7 min

How it runs on each machine

FastH3 Omni pairs a ~35B-parameter transformer with a ~32B-parameter Qwen3-VL text encoder, well over 100 GB in BF16. Each machine fits it differently.

DGX Spark

Everything stays resident in the Spark’s 128 GB of unified memory: the 4-bit NVFP4 transformer, text encoder and decoder, with no offloading between stages. Attention uses the 4-bit sparse attention on 128-token tiles the model was trained with, while the text, reference and audio rows run densely at 8-bit so the conditioning stays out of FP4 rounding.

Two directly connected Sparks split the token sequence: each holds the full model and processes half the tokens. Conditioning does not split as cleanly as denoising, one reason the speedup stays below 2×.

Get started with the Spark guide or the Spark pair guide.

RTX GPUs

The RTX 5090 keeps the NVFP4 transformer on its 32 GB. A precomputed 155 MB table replaces 26 GB of timestep-projection weights, shrinking the transformer from 44.5 GB to 18.5 GB, and the text encoder loads only while the prompt is encoded.

The RTX 3090 has no FP4 or FP8 hardware, so it runs FP8 weights with BF16 math through the 24 GB profile, streaming the transformer a few blocks at a time.

Apple Silicon

FastH3 Omni runs natively on Macs through FastVideo’s MLX runtime:

  • INT6 transformer (17 GB). Timestep projections are precomputed, as on the RTX 5090, and INT6 fits the rest in memory; Apple GPUs have no FP4 units.
  • No base VAE needed. The LightVAE Lite encoder (406 MB) reads the references, and the same NVFP4 decoders as on Blackwell write the frames.
  • The NVFP4 text encoder runs unchanged, including its vision tower.
  • Trained sparsity on Metal, through a new Metal kernel for the model’s 128-token sparse-attention tiles.

Peak memory on the M5 Max stays between 27 and 31 GB across all five workloads.

Quantization-aware distillation

Rounding a distilled eight-step model to 4 bits after training costs quality. Quantization-aware distillation (QAD) instead trains the NVFP4 student against the full-precision teacher with FP4 numerics active from the first step, so the weights learn to absorb the rounding. The sparse-attention gates and norms stay frozen, because retraining them changes which tiles are selected.

FastH3 Omni’s local weights, FastVideo/FastH3-Omni-NVFP4-QAD, extend the FastH3-QAD-v2 recipe to 4-bit attention. The shared training recipe is available in FastVideo #1989.

Try it

MachineWeights and recipe
DGX SparkNVFP4 QAD weights · spark recipe
2× DGX SparkNVFP4 QAD weights · spark-pair recipe
RTX 5090NVFP4 QAD weights · rtx-5090 recipe
24 GB RTX GPUsFP8 weights · rtx-4090 recipe
Apple SiliconBF16 release, converted locally · Apple Silicon recipe

Start with the FastVideo cookbook and the FastH3 Omni recipe builder.

Prefer a visual workflow? The local community has been making great things with our ComfyUI release, available in NVFP4 QAD and FP8.

From the community

Within a day of release, people were running FastH3 Omni on their own GPUs:

RTX 3090 · 24 GB15 s clip in ~12 min
RTX 4070 · 12 GB416 s, from 1312 s dense
16 GB GPU5 s clip in ~3 min
RTX 4090 · 24 GB15 s clip in 4 min
RTX 4090 · 24 GB15 s 480p in 1:24
RTX 5090 · 32 GB115 s, from 555 s base
RTX 5090 · 32 GB313 s, from 742 s base
RTX 5090 · 32 GB4:39 with NVFP4 QAD
ComfyUI“Insanely fast, accurate”

Community-reported, each on its own setup and settings. Scroll for more; click a post to open it.

What’s next

We will keep pushing what FastH3 Omni can do on Apple Silicon, keep improving quality and speed across every machine, and release smaller models that fit a wider range of consumer hardware.

Limitations

  • NVFP4, FP8 and INT6 are different numerical variants, so outputs differ from the BF16 release and from each other for the same seed.
  • The M5 Max numbers are single runs, the RTX 3090 numbers exclude model loading, and the two-Spark runs used the earlier QAD checkpoint.
  • --reference-max-pixels match trades reference detail for speed.

Acknowledgements

FastH3 builds on MiniMax H3. We thank the MiniMax team for releasing its weights and code.

We thank the NVIDIA Enterprise Products team (Pengcheng Li and Cliff Woolley) for the Video Sparse Attention kernel used by FastH3. We thank the NVIDIA FastGen team (Julius Berner, Chao Liu and Arash Vahdat) for the DMD2 framework and H3 reference work, and for introducing Parallel Decoding Distillation.

We thank Nuva Lab for bringing production-grounded creative video workflows to FastH3, and the upstream serving, kernel and open-source communities whose implementations make these experiments possible. We also acknowledge Reactor for supporting FastH3 Omni, and the vLLM project, NVIDIA and MBZUAI for their support of FastVideo.

Finally, thanks to community member @posi_posi8, who volunteered an Apple M5 Max to benchmark FastH3 Omni for this post.

FastVideo team

Contributor: Aryan Kumar
Tech lead: Will Lin
Advisor: Hao Zhang