MiniMaxAI/MiniMax-H3 — the 33B
video+audio omni diffusion model — repackaged to shrink its ~130 GB BF16
footprint toward consumer GPUs. Quantized with torchao
(Float8WeightOnlyConfig, e4m3) at load time. FP8 is near-lossless and, on GPUs
with native FP8 tensor cores (Ada / Hopper / Blackwell — RTX 4090/5090, H100), can
also be faster than BF16.INT8 vs FP8: ourminimax-h3-int8repo is the primary consumer target (INT8 version=2 is the pinnable recipe we recommend). This FP8 repo is the near-lossless alternative — and we validated it end-to-end on a consumer GPU with the same streamed group-offload recipe (see the measured table below), so it runs on 24–32 GB cards too. On FP8-native hardware (RTX 4090/5090, H100) it can also be faster.
t2va clip with its generated stereo
soundtrack — prompt: "a golden retriever running through tall grass at sunset,
cinematic". This run peaked at 16.36 GB VRAM with group offload — well inside
a 24 GB budget.| Component | Class | Quantized | Protected (kept BF16) |
|---|---|---|---|
transformer (t2va + fl2va) | MiniMaxH3Transformer3DModel | block attention/FFN linears | proj_in, audio_proj_in, context_embedder, time_embedder, time_proj, token_refiner, norm_out, proj_out, audio_proj_out |
transformer_ref (ref2va) | MiniMaxH3Transformer3DModel | block attention/FFN linears | same as above |
text_encoder | Qwen3VLForConditionalGeneration | attention/MLP linears | model.visual, model.language_model.embed_tokens, model.language_model.norm, lm_head |
vae / audio_vae | AutoencoderKLMiniMaxH3(Audio) | — | full precision |
| tokenizer / processor / schedulers | — | — | full precision |
transformer/) and
ref2va (transformer_ref/).| Metric | BF16 (base) | FP8 (this repo, measured) |
|---|---|---|
| Transformer (t2va/fl2va) | ~66 GB | 31.7 GB |
| Transformer_ref (ref2va) | ~66 GB | 31.7 GB |
| Text encoder (Qwen3-VL-32B) | ~65 GB | 33.1 GB |
| Total heavy weights | ~197 GB | 96.5 GB (~2×) |
| Full repo (incl. VAEs) | ~215 GB | 106.8 GB |
ModularPipeline.from_pretrained(...) +
load_components), then ran the streamed group-offload recipe below and
generated real clips. Peak VRAM measured with torch.cuda.max_memory_allocated():| Workflow | Call | Peak VRAM | Result |
|---|---|---|---|
t2va | 124 frames, 544×960, 20 steps | 16.36 GB | ✅ coherent video + stereo audio |
ref2va | + 1 image reference, 124 frames, 544×960, 20 steps | 18.21 GB | ✅ coherent video + stereo audio |
fl2va uses the same transformer/ partition as
t2va). So despite the earlier pinnability uncertainty, FP8 + streamed group
offload works on a 24–32 GB consumer card. The bulk of the weights live in
host RAM (~66 GB resident on the t2va path; plan for ≈75 GB of system RAM).main: pip install git+https://github.com/huggingface/diffusers.gitpip install torchao transformers accelerate1import torch
2from diffusers import ModularPipeline
3from diffusers.hooks import apply_group_offloading
4
5pipe = ModularPipeline.from_pretrained("abhishekchohan/minimax-h3-fp8")
6pipe.load_components(workflow="t2va", dtype=torch.bfloat16)
7
8pipe.transformer.requires_grad_(False)
9pipe.text_encoder.requires_grad_(False)
10
11# Group offload is validated for FP8 (16.4 GB peak on a 32 GB card at 544x960).
12# If you have the VRAM you can instead keep the transformer on-device.
13offload = dict(onload_device=torch.device("cuda"), offload_device=torch.device("cpu"), use_stream=True)
14pipe.transformer.enable_group_offload(offload_type="block_level", num_blocks_per_group=1, **offload)
15apply_group_offloading(pipe.text_encoder.model, offload_type="leaf_level", **offload)
16pipe.vae.to("cuda")
17pipe.audio_vae.to("cuda")
18
19out = pipe(
20 prompt="a golden retriever running through tall grass at sunset, cinematic",
21 num_frames=124,
22 height=544, # validated canvas; 768x1344 also works on 32 GB (multiples of 32)
23 width=960,
24 generator=torch.Generator().manual_seed(42),
25 output=["videos", "audio", "sampling_rate"],
26)transformer/ and transformer_ref/ weights are stored as pickle
.bin (torchao FP8 tensor subclasses can't be written to safetensors). Load
with the standard from_pretrained above; diffusers re-materializes the FP8
weights automatically (requires torchao). Your client may prompt for pickle trust.text_encoder/ is stored as safetensors and reloads quantized.main modular pipeline; API may shift.t2va and ref2va
(coherent, prompt-aligned video + stereo audio; see the measured table above). A
full VBench-style benchmark is out of scope; treat quality as indicative and
spot-check your own prompts.MiniMaxAI/MiniMax-H3, governed by
the MiniMax H3 Community License Agreement (license:other). Open-weight use is
region-limited to the US / EU / UK / South Korea; other regions apply via MiniMax's
platform. See the base model's license terms.