One 3090, Ten Days, a Talking Squirrel: Our MiniMax H3 Field Report

by Virtue Media Editorial Team | Aug 17, 2026 | Ai Automation

By Virtue Media Editorial Team

A frame from the MiniMax H3 brand film, its field of noise resolving into the Virtue Media mark.

Field report by Sable Voss, Project Director. Every frame shown was generated in-house on the hardware described — no stock footage, no outsourced sound.

Every few months a model drops that makes our whole studio chat go quiet for an afternoon. MiniMax H3 did that to us twice: once when we read the spec sheet — video and synchronized stereo audio out of one diffusion pass, open weights, ComfyUI support on day one — and once when a ten-second brand film came off our render box with sound design we never asked a sound designer for.

This post is the full field report: the exact machine we installed it on, every model file and what it weighs, the ComfyUI graph, real render timings at real resolutions, the two walls we hit (one of them at 2 a.m., naturally), and how the test escalated from “abstract logo film” to a 94-second mafia comedy starring a squirrel. With dialogue. That the model spoke.

If you run a small studio and you have been wondering whether local AI video is actually usable on hardware you already own — this one is for you.

Not a cluster. A Windows box named eddie.

Everything in this post rendered on one machine: our in-house workstation “eddie,” which most days does image-gen duty. No cloud burst, no A100s. That constraint is the point — we wanted to know what this model does on hardware a working studio actually has.

GPU      NVIDIA RTX 3090 · 24 GB VRAM (Ampere — remember this for later)
SYSTEM   Windows · 64 GB RAM
RUNTIME  ComfyUI v0.32.0 · PyTorch 2.11.0+cu128
SERVING  Windows service (WinSW) — renders with nobody logged in
DRIVING  API-format graphs POSTed to /prompt from a Linux box

The service setup matters more than it sounds. H3 renders are long, so the box has to survive overnight unattended. A ComfyUI that only lives inside a logged-in desktop session is a ComfyUI that dies when Windows Update has feelings.

Four files and a prayer to the VRAM gods

H3 is an “omni” architecture: one diffusion model (MiniMax calls the family FL2VA) denoises video latents and audio latents together, a big Qwen3-VL encoder reads your prompt (and reference images), and two VAEs decode the result — one for frames, one for stereo sound. Here is what landed on disk:

Disk footprint — what H3 actually weighs

~61 GB total with the optional R2V checkpoint

fl2va_pruned int8 · 21 GB (t2v/i2v)qwen3vl_32b nvfp4 · 15.7 GB (encoder)video + audio VAE · ~3 GBref2va int8 · +21 GB (optional, R2V)

Two install notes that would have saved us an hour each

The nvfp4 encoder runs fine on Ampere. The text encoder ships quantized in nvfp4, a format with Blackwell-native kernels — we assumed a 3090 was locked out. It is not: the weights dequantize on load and run without complaint. Don't skip the 15.7 GB download because of the format name.

ComfyUI 0.30+ wants torch ≥ 2.6. Our box was on an older 0.25 install with torch 2.3; H3's nodes need the current comfy core, and current comfy core needs a modern torch. We did a clean git clone, moved models and custom nodes over, and jumped straight to torch 2.11 + cu128. Zero regrets.

The graph — one pass, two senses

signal path pulses amber (video) and cyan (audio); audio is denoised alongside the pixels, not added after

UNETLoaderfl2va_pruned_int8 CLIPLoaderminimax · qwen3vl_32b Prompt + refstext · first/last frame MiniMaxH3ImageToVideow × h × length (24 fps) SamplerCustomAdvancedres_multistep · 20 steps VAEDecodevideo_vae_fp16 → frames VAEDecodeAudioaudio_vae_fp32 → stereo .mp4 framesstereo track

One quirk worth a sticky note: duration snaps to a frame grid. Valid lengths are 17k + 5 frames at 24 fps, and the node rounds your requested seconds up to the next legal count. Ask for 10 seconds and you get 243 frames — 10.125 s. Resolution caps at 768p (768 × 1344) and 15 seconds. In theory. We'll get to “in theory.”

Test one: make the logo find itself

Our brand system is built on a single move — noise resolving into signal — so the first real test wrote itself: a ten-second continuous take where broadcast static calibrates into our mark. No cuts, no comps, one generation.

The trick that made it work is H3's last-frame conditioning. The image-to-video node accepts an optional last_frame input; we fed it a clean render of the standard mark on void, wrote the journey in the prompt, and let the model figure out how chaos becomes geometry. We call the result the FL2VA lock-in: it didn't drift near the target frame, it hit it.

Frame at zero seconds: cold particle static on a dark void
t ≈ 0 s — static. Three frames from one continuous 1344 × 768 H3 generation; nothing is composited.
Frame at five seconds: amber threads weaving through converging particle streams
t ≈ 5 s — calibration begins; amber threads weave through the field.
Final frame: glowing amber V emblem flanked by two bone pillars
t ≈ 10 s — lock-in. The final frame matches the conditioning image we supplied.

And the part that made the room go quiet: the audio came out directed. The prompt asked for dense radio static thinning into a low pulse, resolving to one clean sustained tone at lock-in. That is what is on the track — synchronized to the visual resolve, in stereo, from the same pass.

What patience costs at 24 GB

Here is the part every “wow” demo skips. H3's quality scales with resolution, and on a 24 GB card, resolution scales with offloading — once the working set outgrows VRAM, layers shuffle between GPU and system RAM and the clock stretches. Our measured wall times, same 20-step config throughout:

Wall-clock render time per shot · RTX 3090

times measured, not quoted

608 × 352 · 4.5 s clipdraft resolution
~6 min
608 × 352 · 12 s clipdraft, full scene
~9–10 min
1344 × 768 · 10 s clipfinal resolution
~67 min

The arithmetic writes your production process for you. You cannot afford to discover a bad take at final resolution — an hour per roll of the dice is casino pricing. But at draft resolution you get a full scene look in under ten minutes. So: iterate at 608 × 352, lock the prompt, then spend the hour once.

The loop we settled on

every final shot earned its render time

DRAFT · 608×352~6–10 min / scene QC PASSstrips · whisper · dB PROMPT FIXESanatomy · style · setting RE-ROLLfront of queue passes QC → FINAL · 1344 × 768~67 min · rendered overnightqueue survives the night shift

Two operational details that made the loop fast: ComfyUI's queue accepts {"front": true} on submit, so a QC re-roll jumps the line instead of waiting behind overnight finals; and because the server runs as a service, the queue itself is indestructible — we loaded it up at midnight and collected shots at breakfast.

Where 24 GB actually ends

The spec sheet says 15 seconds at 768p. The spec sheet did not meet our 3090. Empirically, at 1344 × 768 the ceiling is 243 frames — 10.125 seconds. Ask for the next step up the frame grid (294 frames, 12.25 s) and the render dies out-of-memory, every time.

The 243-frame line · 1344 × 768

watch the second attempt

VRAM working set @ 1344 × 768
24 GB budget at the dashed line
OOM
✓ 243 frames · 10.125 s — fits✗ 294 frames · 12.25 s — OOM
frame grid: length = 17k + 5 @ 24 fps → 243 fits, the next legal stop (294) does not

The 2 a.m. footnote: the orphan process

The OOM itself is fine — you learn the ceiling and plan shots at ten seconds. The nasty part is what an OOM crash can leave behind. Twice, the service's auto-restart raced the dying process and lost: the service manager reported stopped while an orphaned python still held the server port. Result: a fresh start “succeeds,” and then every queued job fails instantly with a socket error. It looks exactly like the model is broken. It is not — the port is haunted.

Exorcism procedureStop the service → kill the whole python process tree → confirm the port is actually free → start the service. Thirty seconds, once you know. We also disabled an old scheduled task that could grab the same port — one listener per port, no roommates.

Then we made a mafia film about a squirrel

Abstract brand films are a soft target — no faces, no continuity, no dialogue. A real test needs a character who has to stay the same character for 94 seconds. So the studio greenlit the dumbest possible prestige project: THE NUTFATHER, a six-scene dark comedy about a crime-boss squirrel whose intimidation prank on the neighbor's adorable pigs backfires completely. (Pigs, it turns out, love mud. Who knew. Everyone. Everyone knew.)

This put us in H3's reference-to-video (R2V) mode — the optional 21 GB checkpoint. You attach reference images to the graph and address them in the prompt as <Picture 1>; the model carries that identity into motion. One locked portrait of Don Squirrelleone, six scenes, every scene prompted against the same reference.

The Nutfather key art: a squirrel in a dark suit and fedora like a mob film poster
Key art. The don himself, identity locked from a single reference image via R2V.

What QC actually looked like

The hour-per-final math forced discipline: every scene rendered first as a 608 × 352 draft, and every draft went through the same three-station gate — frame strips (five stills sampled across the clip, eyeballed for identity and continuity), Whisper transcription of the generated audio (yes, transcribing the model's own speech back to text to check it said the line), and an audio level check so no scene came in hot.

QC frame strip: five frames across a draft — cottages, pigs, squirrels in suits watching from a hedge
An actual QC strip from the drafts folder: scene 4's mud-catapult aftermath and the don's hedge surveillance. This is how you review a scene in ten seconds instead of ten viewings.

The strips caught real failures. The two that will bite anyone using R2V:

Identity drift. At draft resolution, “match <Picture 1>” is not enough — across re-rolls our don would slowly become a generic woodland extra. The fix: restate the full anatomy in every scene's prompt (species, build, the suit, the hat), not just the reference tag.

Style register jumps. Scene 3 came back one draft as a gorgeous, fully-rendered Pixar cartoon. Same characters, same blocking, wrong universe. Unless you re-describe the whole setting and pin “photorealistic live-action, not cartoon” in every prompt, H3 will happily change genres between scenes.

Rejected take: the pig cottage scene rendered as a bright 3D cartoon
REJECTED — wrong universe. The infamous cartoon jump, two drafts before final.
Final take: the same scene rendered photoreal at golden hour
FINAL — golden hour. Same scene after pinning the style register and re-describing the village in the prompt.

The part we still can't quite believe

Dialogue in quotes renders as speech. Write “Next time... glitter.” in the prompt and the character says it — lip-synced, in a voice that fits the frame, on the native audio track. We verified every line by transcribing the output; the model's diction survived round-trips through Whisper. Ambient cues work the same way — we scripted distant thunder against specific beats and it landed on cue, in stereo.

Final frame: the don at his desk in a dim study, film-noir lighting
Finals at 1344 × 768: the don at his desk.
Final frame: pigs gleefully rolling in a mud-flooded garden
The prank backfires. Six scenes, each ≤ 10.125 s, rendered overnight into the 94-second cut.

Is a 3090 enough?

Yes — with a workflow. H3 on one consumer card is not a toy demo; it produced a client-grade brand film and a six-scene short with directed sound in the same week. But it only works if you respect the economics: draft cheap, QC ruthlessly, spend the hour once, and let a service-managed queue own the night shift.

Where H3 earned it

  • Native stereo audio, directed by prompt — static→tone resolves, thunder on cue
  • Spoken dialogue from quoted lines, verified by transcription
  • Last-frame conditioning that genuinely locks the target (FL2VA lock-in)
  • R2V identity from one reference image across six scenes
  • Whole stack runs open-weights, offline, on studio hardware

Where it made us work

  • ~67 min per 10-second final at 1344 × 768 on 24 GB
  • Hard ceiling: 243 frames at 768p — the advertised 15 s needs more VRAM
  • Identity and style drift unless every prompt re-states everything
  • OOM crashes can orphan the server process — have the exorcism ready
  • ~61 GB of disk before your first frame
Before you ship client work with itH3 ships under the MiniMax Community License, which carries an application form for several regions (US/EU/UK/KR among them) and its own commercial terms. We flag this on every engagement before an H3 frame goes anywhere client-facing. Read the license; don't vibe it.

Next on the bench: longer-form assembly patterns, and whether draft-res R2V can drive previsualization for live shoots. If you want the numbers from that one, you know where to find us — we'll be the studio whose render box smells faintly of toasted VRAM.

— Sable

0 Comments

KEEP THE SIGNAL

Bring us the part that isn't working.

A focused strategy conversation beats a proposal template.