HyperFlow for MiniMax-H3
0
3 commits
5 linked in READMEs
updated Sep 18, 2026
By downloading or using these weights you accept the MiniMax H3 Community License Agreement, including its territorial scope (not licensed in the EU, UK, South Korea or the US without MiniMax's separate authorization) and its Acceptable Use Policy. See License. Not an official MiniMax product.
HyperFlow is Video Rebirth's 8-step LoRA for
MiniMax-H3, obtained by data-free flow self-distillation and running
on the official diffusers Modular Pipeline.
Diffusers' default 50-point sigma schedule performs 49 model forwards; HyperFlow performs 8. The base weights, VAEs,
conditioner and workflows (t2va, fl2va, ref2va, all video + audio) stay the official ones. This repository
holds the LoRA only; the loader and examples live at
github.com/Video-Rebirth/hyperflow.
Showcase. See HyperFlow generated video examples and comparisons.
| Base model | MiniMaxAI/MiniMax-H3 (revision recorded in the file header) |
| Adapter | PEFT LoRA, rank 256 / alpha 256, on attention, feed-forward and both time embedders (316 modules); 2.8 GB |
| Sampling | 8 forward passes on a fixed sigma grid stored in the file (video shift 12, audio shift 3) |
| Workflows | t2va, fl2va and ref2va, one file for all three (ref2va loads it onto transformer_ref/) |
| Speed-up | about 3x end to end against the 49-NFE Diffusers baseline (about 60 s vs about 175 s per clip on 4x H200) |
| Optional | Ulysses context parallel on up to 4 GPUs; FlashAttention-3; NVIDIA Sol-Attn sparse attention |
| License | MiniMax H3 Community License Agreement; code on GitHub is Apache-2.0. See License |
Not a generic LoRA. The file carries keys for a second time embedder that only exists once the HyperFlow loader
has installed it, and the step count comes from the file. Load it with load_hyperflow_lora from the
hyperflow-h3 package, not with diffusers' load_lora_weights / load_lora_adapter.
| File | hyperflow_version | Notes |
|---|---|---|
minimax_h3_hyperflow_8step_v1.0.safetensors | 1.0 | default: what a bare repo id loads. First release |
hyperflow.json | Manifest: the default file and every file's hyperflow_version and sha256 | |
LICENSE, NOTICE | MiniMax H3 Community License Agreement and the notice it requires |
A published file name is never reused: pin one with filename= (or --weights-filename) and it stays what it is.
A bare repo id follows the manifest's default, so it picks up new versions as they ship; revision= pins a tag or
commit of this repository.
pip install "hyperflow-h3[examples] @ git+https://github.com/Video-Rebirth/hyperflow.git"
Python β₯ 3.10, diffusers β₯ 0.40.0 (the first release with the MiniMax-H3 Modular Pipeline and its context parallel
plan), transformers β₯ 4.57 (Qwen3-VL). The examples extra adds PyAV for writing the output video.
import torch
from diffusers import ComponentsManager
from diffusers.utils import load_image
from hyperflow_h3 import hyperflow_blocks, load_hyperflow_lora
manager = ComponentsManager()
blocks = hyperflow_blocks("fl2va") # official workflow, two blocks swapped
pipe = blocks.init_pipeline("MiniMaxAI/MiniMax-H3", components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)
load_hyperflow_lora(pipe, "videorebirth/hyperflow") # LoRA + two-time embedder + 8-step grid
# The official single-GPU recipe (auto CPU offload), armed only now: registering a component resets the margin.
# 24 GB is the margin validated on H200; the official recipe's 12 GB starves the denoiser there. See Performance.
manager.enable_auto_cpu_offload(device="cuda", memory_reserve_margin="24GB")
out = pipe(
prompt="A red fox trotting through a snowy pine forest",
image=load_image("first.png"),
num_frames=124,
generator=torch.Generator().manual_seed(42),
output=["videos", "audio", "sampling_rate"],
)
num_inference_steps: the step count and sigma grid come from the weights file; another count raises.prompt, image, last_image, references, height, width, num_frames, generator)
is the official pipeline's.hyperflow_blocks("t2va") (no image) and hyperflow_blocks("ref2va") (references=; the
same weights file is loaded onto transformer_ref).Pinning and offline use. load_hyperflow_lora takes this repo id, a local directory or a .safetensors file.
Manifest and weights are fetched once into the huggingface_hub cache and keep working under HF_HUB_OFFLINE=1.
load_hyperflow_lora(pipe, "videorebirth/hyperflow", filename="minimax_h3_hyperflow_8step_v1.0.safetensors")
load_hyperflow_lora(pipe, "/weights/hyperflow") # from `hf download videorebirth/hyperflow --local-dir /weights/hyperflow`
Example commands, several GPUs, Sol-Attn. The package installs hyperflow-h3-fl2va and
hyperflow-h3-ref2va; the GitHub repository also has examples/
source-tree launchers. They provide Ulysses sequence parallel over up to 4 GPUs (the degree MiniMax serves the model
with), FlashAttention-3, NVIDIA Sol-Attn and --baseline (Diffusers' default 50 sigma points / 49 NFE on the same
seed, for an A/B). Fully offline runs take a local weights file and a local MiniMax-H3 snapshot.
hyperflow-h3-fl2va --prompt "..." --image first.png # first frame -> video+audio, up to 4 GPUs
hyperflow-h3-ref2va --prompt "..." --ref subject.png --ref clip.mp4 --ref voice.wav
hyperflow-h3-fl2va --prompt "..." --image first.png --gpus 1 # the official single-GPU recipe
HyperFlow (8 NFE, 9 sigma points) against the base pipeline at Diffusers' default (49 NFE, 50 sigma points) on the
same clip: fl2va, 124 frames, 1344x768, seed 0, dense SDPA attention. Pipeline time covers text encoding, denoising
and decoding; process start-up and weight loading add about 30 s.
| Base, 49 NFE | HyperFlow, 8 NFE | Speed-up | |
|---|---|---|---|
| 4x H200, Ulysses degree 4 | about 175 s | about 60 s | 2.9x |
| 1x H200, auto CPU offload | about 395 s | about 130 s | 3.0x |
The speed-up is below the 49:8 NFE ratio because text encoding and VAE decoding, which HyperFlow leaves unchanged,
now take much of the run. Peak accelerator memory is about 80 GB per card either way (the LoRA adds 2.8 GB). The
single-GPU row uses memory_reserve_margin="24GB", not the official recipe's 12 GB: on a 141 GB H200 a smaller margin
evicts the 10 GB VAE instead of the 62 GB text encoder when the DiT arrives and starves the denoiser. An 80 GB card
is untested.
With a fixed seed a run reproduces itself (audio bit-identical, video PSNR β 43β50 dB, a residue of the VAE decode). Across GPU counts or attention backends the clip is only visibly similar (PSNR β 27 dB and β 34 dB): sharding and kernels change the bf16 reduction order. NVIDIA Sol-Attn sparse attention, optional and off by default, is a further approximation (PSNR β 23 dB against the dense run); check its output before adopting it.
HyperFlow is a self-distillation: the base model is the only teacher. Against the base pipeline at 49 NFE, on the same seeds, four things stand out:
Judge on your own prompts: --baseline in the example scripts renders both pipelines on one seed.
Three additions to the official pipeline, all reversible (disable_hyperflow):
t and the step's endpoint r (a
flow-map formulation). A TwoTimeEmbedder wraps the base time_embedder, adds a LoRA'd copy for r, and blends
the two embeddings with a fixed gate stored in the file. Conditioning rows (fl2va keyframes, ref2va
references) keep r = t, so they stay pinned exactly as in the official denoiser.t2va and fl2va share transformer/. ref2va runs the same file on
transformer_ref/, which works because the adapter never touches adaln_proj, the carrier of the reference
conditioning.File format. A plain safetensors file: PEFT-style keys (transformer.<module>.lora_A.weight; bf16 for the
DiT blocks, fp32 for the two time embedders) plus a self-describing header (hyperflow_sigmas, hyperflow_gate,
lora_rank, lora_alpha, base_model, base_model_revision, β¦):
from hyperflow_h3 import read_metadata
meta = read_metadata("minimax_h3_hyperflow_8step_v1.0.safetensors") # header only, no tensors loaded
meta.base_model_revision, meta.sigmas, meta.gate
--baseline in the example scripts runs both on the same seed).The LoRA weights are a Model Derivative of MiniMax-H3 and are distributed under the MiniMax H3 Community License Agreement, the base model's license, with no additional terms. By downloading or using them you accept that Agreement. In particular:
NOTICE file, mark modified files, and do not
impose additional or different terms (Section III).LICENSE is the August 2, 2026 text. MiniMax may update the Acceptable Use Policy;
the version in the upstream repository governs.The loader and example scripts on GitHub are separate software under the Apache License 2.0.
HyperFlow is developed by Video Rebirth. It is not an official MiniMax product and is not affiliated with or endorsed by MiniMax. Powered by MiniMax H3.
(t, r) conditioning.Thanks to their authors.
3 commits
HyperFlow for MiniMax-H3
0
3 commits
5 linked in READMEs
updated Sep 18, 2026
By downloading or using these weights you accept the MiniMax H3 Community License Agreement, including its territorial scope (not licensed in the EU, UK, South Korea or the US without MiniMax's separate authorization) and its Acceptable Use Policy. See License. Not an official MiniMax product.
HyperFlow is Video Rebirth's 8-step LoRA for
MiniMax-H3, obtained by data-free flow self-distillation and running
on the official diffusers Modular Pipeline.
Diffusers' default 50-point sigma schedule performs 49 model forwards; HyperFlow performs 8. The base weights, VAEs,
conditioner and workflows (t2va, fl2va, ref2va, all video + audio) stay the official ones. This repository
holds the LoRA only; the loader and examples live at
github.com/Video-Rebirth/hyperflow.
Showcase. See HyperFlow generated video examples and comparisons.
| Base model | MiniMaxAI/MiniMax-H3 (revision recorded in the file header) |
| Adapter | PEFT LoRA, rank 256 / alpha 256, on attention, feed-forward and both time embedders (316 modules); 2.8 GB |
| Sampling | 8 forward passes on a fixed sigma grid stored in the file (video shift 12, audio shift 3) |
| Workflows | t2va, fl2va and ref2va, one file for all three (ref2va loads it onto transformer_ref/) |
| Speed-up | about 3x end to end against the 49-NFE Diffusers baseline (about 60 s vs about 175 s per clip on 4x H200) |
| Optional | Ulysses context parallel on up to 4 GPUs; FlashAttention-3; NVIDIA Sol-Attn sparse attention |
| License | MiniMax H3 Community License Agreement; code on GitHub is Apache-2.0. See License |
Not a generic LoRA. The file carries keys for a second time embedder that only exists once the HyperFlow loader
has installed it, and the step count comes from the file. Load it with load_hyperflow_lora from the
hyperflow-h3 package, not with diffusers' load_lora_weights / load_lora_adapter.
| File | hyperflow_version | Notes |
|---|---|---|
minimax_h3_hyperflow_8step_v1.0.safetensors | 1.0 | default: what a bare repo id loads. First release |
hyperflow.json | Manifest: the default file and every file's hyperflow_version and sha256 | |
LICENSE, NOTICE | MiniMax H3 Community License Agreement and the notice it requires |
A published file name is never reused: pin one with filename= (or --weights-filename) and it stays what it is.
A bare repo id follows the manifest's default, so it picks up new versions as they ship; revision= pins a tag or
commit of this repository.
pip install "hyperflow-h3[examples] @ git+https://github.com/Video-Rebirth/hyperflow.git"
Python β₯ 3.10, diffusers β₯ 0.40.0 (the first release with the MiniMax-H3 Modular Pipeline and its context parallel
plan), transformers β₯ 4.57 (Qwen3-VL). The examples extra adds PyAV for writing the output video.
import torch
from diffusers import ComponentsManager
from diffusers.utils import load_image
from hyperflow_h3 import hyperflow_blocks, load_hyperflow_lora
manager = ComponentsManager()
blocks = hyperflow_blocks("fl2va") # official workflow, two blocks swapped
pipe = blocks.init_pipeline("MiniMaxAI/MiniMax-H3", components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)
load_hyperflow_lora(pipe, "videorebirth/hyperflow") # LoRA + two-time embedder + 8-step grid
# The official single-GPU recipe (auto CPU offload), armed only now: registering a component resets the margin.
# 24 GB is the margin validated on H200; the official recipe's 12 GB starves the denoiser there. See Performance.
manager.enable_auto_cpu_offload(device="cuda", memory_reserve_margin="24GB")
out = pipe(
prompt="A red fox trotting through a snowy pine forest",
image=load_image("first.png"),
num_frames=124,
generator=torch.Generator().manual_seed(42),
output=["videos", "audio", "sampling_rate"],
)
num_inference_steps: the step count and sigma grid come from the weights file; another count raises.prompt, image, last_image, references, height, width, num_frames, generator)
is the official pipeline's.hyperflow_blocks("t2va") (no image) and hyperflow_blocks("ref2va") (references=; the
same weights file is loaded onto transformer_ref).Pinning and offline use. load_hyperflow_lora takes this repo id, a local directory or a .safetensors file.
Manifest and weights are fetched once into the huggingface_hub cache and keep working under HF_HUB_OFFLINE=1.
load_hyperflow_lora(pipe, "videorebirth/hyperflow", filename="minimax_h3_hyperflow_8step_v1.0.safetensors")
load_hyperflow_lora(pipe, "/weights/hyperflow") # from `hf download videorebirth/hyperflow --local-dir /weights/hyperflow`
Example commands, several GPUs, Sol-Attn. The package installs hyperflow-h3-fl2va and
hyperflow-h3-ref2va; the GitHub repository also has examples/
source-tree launchers. They provide Ulysses sequence parallel over up to 4 GPUs (the degree MiniMax serves the model
with), FlashAttention-3, NVIDIA Sol-Attn and --baseline (Diffusers' default 50 sigma points / 49 NFE on the same
seed, for an A/B). Fully offline runs take a local weights file and a local MiniMax-H3 snapshot.
hyperflow-h3-fl2va --prompt "..." --image first.png # first frame -> video+audio, up to 4 GPUs
hyperflow-h3-ref2va --prompt "..." --ref subject.png --ref clip.mp4 --ref voice.wav
hyperflow-h3-fl2va --prompt "..." --image first.png --gpus 1 # the official single-GPU recipe
HyperFlow (8 NFE, 9 sigma points) against the base pipeline at Diffusers' default (49 NFE, 50 sigma points) on the
same clip: fl2va, 124 frames, 1344x768, seed 0, dense SDPA attention. Pipeline time covers text encoding, denoising
and decoding; process start-up and weight loading add about 30 s.
| Base, 49 NFE | HyperFlow, 8 NFE | Speed-up | |
|---|---|---|---|
| 4x H200, Ulysses degree 4 | about 175 s | about 60 s | 2.9x |
| 1x H200, auto CPU offload | about 395 s | about 130 s | 3.0x |
The speed-up is below the 49:8 NFE ratio because text encoding and VAE decoding, which HyperFlow leaves unchanged,
now take much of the run. Peak accelerator memory is about 80 GB per card either way (the LoRA adds 2.8 GB). The
single-GPU row uses memory_reserve_margin="24GB", not the official recipe's 12 GB: on a 141 GB H200 a smaller margin
evicts the 10 GB VAE instead of the 62 GB text encoder when the DiT arrives and starves the denoiser. An 80 GB card
is untested.
With a fixed seed a run reproduces itself (audio bit-identical, video PSNR β 43β50 dB, a residue of the VAE decode). Across GPU counts or attention backends the clip is only visibly similar (PSNR β 27 dB and β 34 dB): sharding and kernels change the bf16 reduction order. NVIDIA Sol-Attn sparse attention, optional and off by default, is a further approximation (PSNR β 23 dB against the dense run); check its output before adopting it.
HyperFlow is a self-distillation: the base model is the only teacher. Against the base pipeline at 49 NFE, on the same seeds, four things stand out:
Judge on your own prompts: --baseline in the example scripts renders both pipelines on one seed.
Three additions to the official pipeline, all reversible (disable_hyperflow):
t and the step's endpoint r (a
flow-map formulation). A TwoTimeEmbedder wraps the base time_embedder, adds a LoRA'd copy for r, and blends
the two embeddings with a fixed gate stored in the file. Conditioning rows (fl2va keyframes, ref2va
references) keep r = t, so they stay pinned exactly as in the official denoiser.t2va and fl2va share transformer/. ref2va runs the same file on
transformer_ref/, which works because the adapter never touches adaln_proj, the carrier of the reference
conditioning.File format. A plain safetensors file: PEFT-style keys (transformer.<module>.lora_A.weight; bf16 for the
DiT blocks, fp32 for the two time embedders) plus a self-describing header (hyperflow_sigmas, hyperflow_gate,
lora_rank, lora_alpha, base_model, base_model_revision, β¦):
from hyperflow_h3 import read_metadata
meta = read_metadata("minimax_h3_hyperflow_8step_v1.0.safetensors") # header only, no tensors loaded
meta.base_model_revision, meta.sigmas, meta.gate
--baseline in the example scripts runs both on the same seed).The LoRA weights are a Model Derivative of MiniMax-H3 and are distributed under the MiniMax H3 Community License Agreement, the base model's license, with no additional terms. By downloading or using them you accept that Agreement. In particular:
NOTICE file, mark modified files, and do not
impose additional or different terms (Section III).LICENSE is the August 2, 2026 text. MiniMax may update the Acceptable Use Policy;
the version in the upstream repository governs.The loader and example scripts on GitHub are separate software under the Apache License 2.0.
HyperFlow is developed by Video Rebirth. It is not an official MiniMax product and is not affiliated with or endorsed by MiniMax. Powered by MiniMax H3.
(t, r) conditioning.Thanks to their authors.
3 commits