
Image models tolerate aggressive compression surprisingly well. Video models do not. The reason is temporal: a single frame can survive a slightly wrong pixel value, but a sequence cannot survive a slightly wrong pixel value repeated across 120 frames with drift. Errors that would be invisible in a still image compound into flicker, texture crawl, and identity morphing.
On top of that, photorealistic video generation is usually a multi-stage pipeline rather than a single network. A typical stack includes a text or image encoder, a latent diffusion denoiser (often a transformer), a temporal attention mechanism, and a VAE decoder that expands latents into full-resolution RGB frames. Each of those stages has a different sensitivity profile. Quantize the encoder too hard and prompts get ignored. Quantize the VAE decoder too hard and you get banding in gradients and smeared skin texture. Quantize the denoiser's attention blocks too hard and subjects lose coherence between frames.
This guide walks through the practical work: choosing which models are even worth quantizing, deciding between post-training quantization and quantization-aware training, preparing the model, running an INT8 pipeline, validating perceptual quality rather than just numeric error, and deploying the result without wrecking your output. It is aimed at engineers and technical artists who want photorealistic video generation running locally on workstation or embedded hardware, at predictable latency, without a network round trip.
The headline number for modern video models is parameter count, and it is genuinely enormous — billions of parameters in the denoiser alone is now normal. But parameter count predicts VRAM footprint, not quantization difficulty. What actually determines difficulty is the distribution of activations and the depth of residual chains.
A practical way to triage a candidate model:
A hard-won rule: never quantize everything. In most production pipelines, the following stages should stay in FP16 or BF16 even when the rest of the graph runs INT8:
Keeping roughly 10–20% of layers in high precision typically recovers most of the quality loss while preserving most of the speed gain. This mixed-precision strategy is the single highest-leverage decision in the entire workflow.
Post-training quantization is the default because it requires no retraining. You take a converged checkpoint, run a calibration dataset through it to collect activation statistics, and export a quantized graph. For INT8 on a video denoiser, PTQ usually lands within acceptable perceptual range when:
The most common calibration mistake is using a generic image dataset. Video models see activation distributions shaped by motion. Calibrate with clips that contain the motion you actually care about: human faces turning, foliage in wind, water, fabric. A forty-clip calibration set that covers your production distribution beats a thousand random frames.
Quantization-aware training simulates quantization during fine-tuning, letting the weights adapt to the reduced precision. It costs GPU time and a labeled or synthetically generated dataset, but it is the only reliable route to:
A workable QAT recipe: start from the full-precision checkpoint, freeze the VAE and text encoder entirely, insert fake-quantization nodes only in the denoiser, and fine-tune with a low learning rate on a few thousand short clips. Use a straight-through estimator for gradients. Run for far fewer steps than you think — over-training tends to overfit the calibration distribution and produce brittle outputs on unusual prompts.
| Situation | Recommended path |
|---|---|
| Workstation deployment, latency matters more than size | INT8 PTQ with mixed precision |
| Embedded or mobile accelerator, tight memory | INT8 QAT, or INT4 with distillation |
| Prototype, unknown quality bar | Start with FP16, measure headroom first |
| Model already near quality ceiling | Skip quantization, optimize the sampler instead |
That last row deserves emphasis. Quantization is one lever among several. Reducing diffusion sampling steps with a good scheduler, caching attention keys across steps, or batching clips efficiently can deliver comparable wins with zero quality risk.
The runtime you pick constrains the quantization scheme more than any other decision. Pick it early.
Desktop and workstation GPUs. TensorRT and similar graph compilers give the best per-watt throughput and support INT8 with per-channel scales plus FP16 fallback on a layer-by-layer basis. The toolchain is mature and the profiling tools are excellent. This is the path of least resistance for photorealistic video.
CPU-only and integrated graphics. ONNX Runtime and OpenVINO handle dynamic shapes more gracefully than GPU graph compilers, and dynamic shape support matters when clip lengths vary. Expect to trade throughput for flexibility.
Apple silicon and mobile NPUs. Core ML and ExecuTorch impose strict operator support lists. You will frequently find that one attention variant is unsupported and must be rewritten or left on the CPU, which destroys the performance win. Prototype the export before you invest in quantization.
Embedded accelerators. These often require static shapes, fixed batch sizes, and sometimes per-tensor quantization only. If the accelerator forces per-tensor, either accept the quality hit or choose a different accelerator.
A pragmatic screening test: export the full-precision model to your target runtime, then export an INT8 version with no other changes. If the INT8 version is not meaningfully faster, or fails to build at all, stop and reconsider before spending weeks on calibration.
Before touching quantization, do four things.
1. Establish a deterministic baseline. Fix the random seed, the scheduler, the number of sampling steps, and the guidance scale. Generate a reference set of 20–30 clips covering your key content types. Without this, you cannot tell whether a quality regression came from quantization or from nondeterminism.
2. Map the graph. Print the operator inventory and note which operators your target runtime supports natively. Anything that will fall back to a slow path is a candidate for rewriting.
3. Instrument activation ranges. Run a forward pass and log min, max, mean, and standard deviation per tensor. Tensors with extreme outliers relative to their mean are prime candidates for either higher precision or outlier-aware scaling. Attention logits and layer norm outputs frequently show this pattern.
4. Freeze and fold. Fuse batch norm into convolutions, fold constant expressions, and remove training-only branches. Folding reduces the number of tensors you must calibrate and eliminates a class of numerical mismatch between the reference and quantized graphs.
Also decide your frame handling strategy now. Do you quantize the pipeline as a single clip-length graph, or as a per-chunk graph with overlap? Per-chunk is more portable and quantizes more cleanly; single-clip is faster but forces dynamic shapes.
Here is a concrete sequence that works across PyTorch-based video stacks.
Build a loader that yields preprocessed inputs in exactly the format the model expects — same normalization, same latent encoding, same conditioning format. If your model has two inputs (latents and conditioning embeddings), calibrate both. A conditioning tensor that was never calibrated will be quantized with garbage scales.
Run 100–500 representative clips through the model in inference mode. Watch the collected ranges. If a tensor's observed range is implausibly wide, the observer is probably picking up an outlier — switch that tensor to percentile clipping rather than widening the range.
Export to your runtime format and compare intermediate activations against the reference graph. A useful threshold: mean absolute error under 1% of the tensor's dynamic range at the denoiser output, and under 0.5% at the VAE decoder input. Anything worse usually shows up as visible artifacts.
If a specific block produces a large numerical deviation, promote that block back to FP16 and re-export. Iterate until the deviation map is flat. This is tedious but it is the whole job — the goal is uniform error, not minimum error.
Measure end-to-end clip generation time, not just per-step denoiser time. Quantized models sometimes shift the bottleneck to the VAE decoder or to host-device transfers, and a faster denoiser can produce a slower pipeline.
Numeric agreement with the reference model is necessary but not sufficient. Video quality failures are perceptual and temporal.
Build a scored review sheet. For each test clip, rate four dimensions on a 1–5 scale: temporal stability (flicker, crawl), texture fidelity (skin, hair, fabric, foliage), motion naturalness, and prompt adherence. Have at least two reviewers score independently. Aggregate scores hide the failures that matter.
Use complementary automated metrics. Structural similarity and its multi-scale variants catch structural drift. Learned perceptual metrics catch texture degradation that structural metrics miss. Distribution-based video metrics catch temporal inconsistency across a clip. None of them alone correlates well with human judgment on generative video, but disagreements between them are informative: when a perceptual metric drops while structural similarity holds, you are usually looking at texture smearing from over-quantized decoder blocks.
Test the edges deliberately. Run clips with fast motion, fine repetitive texture, high-contrast edges, and human faces at multiple scales. These are the regimes where quantization error amplifies. A model that looks fine on a slow landscape shot can fall apart on a person turning their head.
Watch for the signature failures. Banding in sky gradients points to decoder quantization. Identity drift over long clips points to temporal attention quantization. Color shifts point to quantized normalization statistics. Knowing the signature shortens the debugging loop dramatically.
Once INT8 is working, the next tier of compression requires structural changes.
Knowledge distillation. Train a smaller student denoiser to match the full-precision teacher's outputs, then quantize the student. Distillation plus quantization routinely gets you to a fraction of the original footprint. The trick is to distill on the same distribution you will serve: if your production content is product shots, do not distill on landscape video. Also distill the temporal behavior, not just per-frame outputs — matching only single frames produces students that flicker.
Structured pruning. Remove entire attention heads or channels rather than individual weights. Unstructured sparsity looks impressive in benchmarks and delivers almost nothing on real accelerators. Structured pruning followed by a short fine-tune can remove 20–40% of channels in feed-forward blocks with minimal quality loss.
Step distillation for the sampler. The number of diffusion steps is often a bigger cost driver than model size. Distilling a multi-step sampler into a few-step or single-step generator can cut inference cost several-fold without touching precision at all. Combine this with INT8 and you get multiplicative savings.
Mixed precision by block. Systematically search which blocks can drop to INT8 and which must stay high precision. A simple greedy search — start fully INT8, promote the block with the worst deviation, repeat — finds a good configuration in a few hours of automated runs.
Deployment of a quantized video model is not a one-time event. Ship it with guardrails:
Common mistakes worth naming directly:
Do I need a GPU to run quantized photorealistic video generation offline?
Not strictly, but the practical answer is usually yes for anything above short clips at low resolution. CPU execution with INT8 works and is the most portable option, but a workstation GPU with INT8 tensor support will typically be several times faster. Embedded accelerators can be excellent if your model's operators map cleanly to their instruction set.
How many calibration clips do I need?
Around 100 to 500 short clips is a good starting point. The number matters far less than the coverage. A hundred clips spanning faces, motion, texture, and lighting variation will beat a thousand clips of the same scene. If your content distribution is narrow, you can go lower; if you serve wildly different styles, go higher.
Will INT8 change the look of my generated video?
With mixed precision and per-channel weight quantization, most viewers cannot tell the difference in side-by-side comparison. Without those two techniques, yes — you will see banding, smeared texture, and occasional temporal flicker. The gap between a naive INT8 conversion and a carefully tuned one is much larger than the gap between a tuned INT8 model and full precision.
Is quantization-aware training worth it for a small team?
Only if you are targeting sub-8-bit precision or a constrained accelerator. QAT requires fine-tuning infrastructure, a curation pipeline, and evaluation tooling. For INT8 on desktop GPUs, post-training quantization with mixed precision plus sampler step reduction gets you most of the benefit for a fraction of the engineering effort.
Where does quantization usually fail first?
In the VAE decoder's later upsampling stages and in temporal attention projections. Both are worth pinning to FP16 from the start rather than discovering through iteration. If quality still disappoints, the next suspect is calibration data that does not represent production content.
How do I know when to stop optimizing?
Set a quality floor before you begin — for example, no clip scoring below 4 out of 5 on temporal stability, and no perceptual metric more than a fixed percentage below the full-precision reference. Once you clear the floor, measure whether further compression reduces cost materially. If the next step down saves 5% latency and risks visible artifacts, you are done.
The single most useful habit is sequencing. Establish a deterministic full-precision baseline. Profile to find whether the denoiser, the sampler, or the decoder dominates cost. Reduce sampling steps first, since it is free of quality risk. Then apply mixed-precision INT8 post-training quantization, calibrating on content that matches production. Validate with scored human review and complementary metrics on an edge-case-heavy clip set. Only then consider distillation, structured pruning, or QAT for lower precision.
Photorealistic video generation does not have to be a cloud-only activity. With careful stage selection, honest evaluation, and a willingness to keep sensitive layers at high precision, offline inference can deliver the fidelity professionals need at a latency and cost profile that makes local workflows genuinely practical.

Alexander
Vidu Q4 alternatives compared: Kling 4.0, Seedance 2.5, Wan 3.0, and Runway Gen-4 — 4K support, input modes, durations, audio, and what each costs in credits on Domer.
The top 4K AI image generators on Domer compared: Flux 3 Klein, Nano Banana 2.1, GPT Image 2.5, GPT Image 2, and Nano Banana Pro — 4K credit costs, reference limits, and speed.
Nano Banana 2.1 vs GPT Image 2.5 Flare compared: credit costs per resolution, aspect ratios, reference images, text rendering, and which tasks fit each model.