File size: 7,448 Bytes
9be6c5d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | ---
license: apache-2.0
base_model: Comfy-Org/MiniMax-H3
tags:
- text-to-video
- text-to-audio
- audio-video
- lora
- minimax-h3
- comfyui
pipeline_tag: text-to-video
---
# MiniMax-H3 Turbo LoRA β few-step audio-video generation
A LoRA for [MiniMax-H3](https://huggingface.co/Comfy-Org/MiniMax-H3) that renders
joint **video + synchronized stereo audio** in as few as **4 sampling steps**
instead of the usual ~20 β a ~5Γ sampling speedup β and keeps getting better as
you add steps.
## Which checkpoint β `v4` (step 600) or `v1` (850)?
For **most** work, use **`minimax_h3_turbo_v4_step600_ema.safetensors`**. It's the
strongest checkpoint we've released: much better static and small-motion shots,
markedly better micro-detail (faces, fingers, fine texture), and the
over-sharpening / plastic look of the earlier `v1` (~850) line is **fully
resolved**.
v4 introduced a **static-frame enhancement** β a big win for static and
small-motion content. The one trade-off shows up **only at 4 steps with large,
fast motion**, where v4 can produce **motion-smear / trailing ghosting** (we're
actively fixing this). Two things address it:
- **Use 6β8 steps.** This **largely removes the smear** and is where v4 looks its
best. v4 also tolerates higher step counts better than v1, which tends to
over-sharpen at high steps + strength 1.0.
- For the specific case of **4 steps *and* heavy motion**, the older **`v1` ~850**
checkpoint can still be the friendlier pick.
```
Using 6β8 steps? ββ yes βββΊ v4-600 (recommended)
β no (4 steps)
βΌ
Heavy / fast motion? ββ no βββΊ v4-600 (recommended)
β yes
βΌ
v1-850 (friendlier at 4-step heavy motion)
```
Still a preview β training continues; the two areas still being improved are
**audio** and **behaviour under fast, intense motion**.
## Steps and strength β read this
- **4 steps is the recommended *minimum*; 4β8 is the useful range.** 6β8 steps
look noticeably better than 4, so add steps if you can afford them. Past **8
steps** it stops helping and can start to introduce **over-sharp artifacts** β
there's no benefit to going higher, so stay in **4β8**.
- **Keep strength at `1.0`.** It's tuned for 1.0 and holds up well across the 4β8
step range. Only reach for the strength dial if a *specific* clip misbehaves β
then **blurry ghosting / smear β nudge up** (`~1.05β1.2`), **over-sharp grain β
nudge down** (`~0.8β0.95`).
- Keep the scheduler on `simple`.
## Use it in ComfyUI (recommended)
Custom nodes: **[Larryvrh/ComfyUI-MiniMax-H3-Turbo](https://github.com/Larryvrh/ComfyUI-MiniMax-H3-Turbo)**
β or search **"MiniMax-H3 Turbo"** in ComfyUI-Manager. (Keep the node updated; it
evolves alongside these weights.)
1. Install the nodes (Manager, or `git clone` into `ComfyUI/custom_nodes`) and put
a `.safetensors` from this repo into `ComfyUI/models/loras/`. You also need the
base MiniMax-H3 model, VAEs and text encoder β see the
[MiniMax-H3 tutorial](https://docs.comfy.org/tutorials/video/minimax/minimax-h3).
2. Start from the official MiniMax-H3 workflow (t2v or i2v) and make two changes:
- insert **MiniMax-H3 Turbo LoRA** between the model loader and the sampler;
- feed `SamplerCustomAdvanced` from **MiniMax-H3 Turbo Sampler**, and set the
scheduler to `simple` at **β₯ 4 steps**.
Everything else stays as in the official graph, so both text-to-video and
image-to-video work. A ready-made t2v workflow ships in the
[node repo](https://github.com/Larryvrh/ComfyUI-MiniMax-H3-Turbo/tree/main/example_workflows)
(and here as `minimax_h3_t2v_turbo.json`) β drag it in.
- **Base model**: any MiniMax-H3 base β full (`bf16`, `int8_convrot`) **and the
pruned/curve variants** (`pruned_int8`, `pruned_fp8`). The node auto-detects a
pruned base and re-injects the time-conditioning at run time, so **one LoRA file
covers every base**.
- **`low_vram`** switch: **off** applies the LoRA at run time (sharpest,
recommended); **on** merges it into the weights for the lowest peak VRAM (a bit
softer on quantized bases). Turn it on only if you run out of memory.
- The custom sampler **auto-adapts to your ComfyUI version**: MiniMax-H3 runs
video and audio on two different flow schedules; recent ComfyUI handles that
natively (`ModelSamplingAV`) and older ComfyUI doesn't β the Turbo Sampler
detects which and does the right thing either way, so nothing to change when you
update ComfyUI.
## Weights
All bf16, ~744 MB, applied as a plain low-rank update
(`W_eff = W + lora_B @ lora_A`, alpha = rank, so no extra scaling). **Prefer the
EMA files**; the non-EMA ones are for comparison.
| file | notes |
|---|---|
| **`minimax_h3_turbo_v4_step600_ema.safetensors`** | **recommended β current best.** Strong static/small-motion, good micro-detail, no over-sharpening. |
| `minimax_h3_turbo_v4_step600.safetensors` | v4-600 non-EMA (comparison). |
| `minimax_h3_turbo_v4_step150_ema.safetensors` | earlier v4 checkpoint. |
| `minimax_h3_turbo_4step_ema_ckpt850.safetensors` | `v1` line (~850) β over-sharpened / plastic in general, but the friendlier pick for **4-step heavy motion** (see above). |
| `minimax_h3_turbo_4step_ema_ckpt500.safetensors` | older `v1` (~500), softer. |
| `minimax_h3_turbo_4step_ema.safetensors` | initial release (~200). |
*Naming:* `v4` is the current training recipe and `stepN` is the training step.
Older files carry the previous `4step_ckptN` naming, where `4step` referred to the
sampler-step count.
## Standalone (no ComfyUI graph)
`generate.py` is a single self-contained file β it loads the base DiT + a LoRA,
encodes the prompt, runs the few-step dual-schedule sampler, decodes and muxes an
mp4. It still needs a ComfyUI checkout for the H3 model / VAE / text-encoder
definitions:
```bash
git clone https://github.com/comfyanonymous/ComfyUI
cd ComfyUI && pip install -r requirements.txt && cd ..
pip install -r requirements.txt # this repo: torch, safetensors, imageio-ffmpeg
# base weights from Comfy-Org/MiniMax-H3 into a models/ tree, then:
python generate.py \
--comfyui ./ComfyUI \
--base models/diffusion_models/minimax_h3_fl2va_bf16.safetensors \
--lora minimax_h3_turbo_v4_step600_ema.safetensors \
--te models/text_encoders/qwen3vl_32b_minimax_h3_int8_convrot.safetensors \
--video-vae models/vae/minimax_h3_video_vae_fp16.safetensors \
--audio-vae models/vae/minimax_h3_audio_vae_fp32.safetensors \
--prompt "A corgi in a chef hat flipping a pancake, sizzling sounds and a cheerful bark." \
--width 1344 --height 768 --frames 124 --steps 6 --out corgi.mp4
```
## Notes
- **Resolution / duration**: width and height are multiples of 32 (short edge
typically 768). Frame count is at 24 fps and snaps to the model's 17Β·k+5 grid
(124 β 5 s). Validated range ~124β362 frames (~5β15 s).
- **VRAM**: the base model is large (~33 B); an 80 GB GPU is comfortable at the
largest resolutions. The ComfyUI node streams the base and adds the `low_vram`
switch, so it runs on much smaller GPUs. In the standalone script,
`--offload-adaln` trades ~13 GB of VRAM for CPU RAM.
- **Audio**: 32 kHz stereo, aligned to the video; the two streams ride different
flow schedules and are integrated each on its own clock. (Audio is one of the
two areas still being improved β see the top.)
|