Downloads · 30 days
0
diobrando0/MiniMax-H3-fl2va-ref2va-hybrids-bf16
MiniMax-H3-fl2va-ref2va-hybrids-bf16 is a text-to-video model from diobrando0. Use it when you need video from a text prompt. The card lists the license as other.
Full-precision (bf16) weight-selection merges of the two official MiniMax H3 checkpoints, fl2va and ref2va. The idea and the tensor analysis behind it come from smhfacct/Minimax-H3-fl2va-ref2va-hybrid-models; this rep…
Downloads · 30 days
0
Access
Public
Updated Sep 1, 2026
Repo size
133 GB
Likes
7
Public
Click a slice to open those files.
.safetensors133 GB · 100%
From the Hugging Face model README
Full-precision (bf16) weight-selection merges of the two official MiniMax H3 checkpoints, fl2va and ref2va.
The idea and the tensor analysis behind it come from
smhfacct/Minimax-H3-fl2va-ref2va-hybrid-models;
this repo differs in two ways: the merges are built from the unpruned bf16 checkpoints instead of the pruned
int8-convrot ones, and they take fewer blocks from ref2va — the goal is the lightest reference pathway that
still works, on top of the untouched fl2va quality.
MiniMax released two H3 checkpoints with identical architecture and weight layout:
fl2va — first/last-keyframe conditioning only. Noticeably better visual and audio quality.ref2va — additionally trained on reference conditioning (image / video / audio references). It is the only
checkpoint that supports references at all, but its raw output quality is worse than fl2va, even on tasks that use
no references.Comparing the two tensor by tensor, almost everything (attention, MLPs, norms, patch and rotary embeddings, the token
refiner) is identical or near-identical. The meaningful difference sits in the per-block adaln_proj weights — the
AdaLN modulation projections that route the text / audio / video / reference signals into each transformer block.
So a merge that keeps fl2va everywhere and takes only some blocks' adaln_proj from ref2va keeps the quality and
buys the reference pathway.
The existing int8 hybrids start at 20 swapped blocks (b30-49) and go up from there. For my use — character /
setting references that should inform the shot, not dominate it — even b30-49 pulled too hard toward the reference.
Hence these variants with fewer blocks.
| File | adaln_proj blocks from ref2va | Precision | Character |
|---|---|---|---|
minimax_h3_hybrid_fl2va_ref2va_b45-49_bf16.safetensors | 45–49 (last 5 of 50) | bf16, 66.28 GB | Lightest possible touch: 10 tensors, 2.60 GB from ref2va. Try this first if you want the references to only nudge the shot. |
minimax_h3_hybrid_fl2va_ref2va_b40-49_bf16.safetensors | 40–49 (last 10 of 50) | bf16, 66.28 GB | Light reference influence; 20 tensors, 5.20 GB from ref2va. |
More ranges (e.g. b35-49) can be produced in a couple of minutes with the script below; I will add the ones that
turn out useful.
Sources (unmodified official weights, Comfy-Org packaging):
Comfy-Org/MiniMax-H3 → diffusion_models/minimax_h3_fl2va_bf16.safetensors (66,280,487,368 bytes)Comfy-Org/MiniMax-H3 → diffusion_models/minimax_h3_ref2va_bf16.safetensors (66,280,487,368 bytes)For b40-49, exactly these 20 tensors were replaced with the ref2va bytes, everything else is fl2va
(b45-49 is the same recipe restricted to blocks 45–49: 10 tensors, 2,602,091,520 bytes):
blocks.40.adaln_proj.linear.weight [96768, 2688] bf16 blocks.40.adaln_proj.linear.bias [96768] bf16
blocks.41.adaln_proj.linear.weight ... blocks.41.adaln_proj.linear.bias ...
⋮ ⋮
blocks.49.adaln_proj.linear.weight [96768, 2688] bf16 blocks.49.adaln_proj.linear.bias [96768] bf16
That is 520,418,304 bytes per block, 5,204,183,040 bytes (5.20 GB, ~7.9 % of the checkpoint) in total. Untouched and
therefore fl2va: the adaln_proj of blocks 0–39, final_layer.adaln_proj, final_layer.video_out /
final_layer.audio_out, and every attention / MLP / norm / embedding / token-refiner tensor.
Method: safetensors is an 8-byte header length + a JSON header (name → dtype, shape, byte offsets) + raw tensor bytes.
The two checkpoints have identical tensor names, shapes and dtypes, so each tensor's byte range in fl2va was
overwritten with the corresponding byte range from ref2va — no dequantisation, no rounding, no arithmetic of any
kind. Every written range was re-read and compared against the donor by BLAKE2b hash. No training or fine-tuning was
performed. The script is in this repo (h3_adaln_merge.py); it also keeps a small backup of the replaced tensors so
the operation can be undone (--restore), and --lo/--hi select the block range:
python h3_adaln_merge.py --dst minimax_h3_fl2va_bf16.safetensors --src minimax_h3_ref2va_bf16.safetensors \
--lo 40 --hi 49 --backup fl2va_adaln_b40-49_backup.safetensors
mv minimax_h3_fl2va_bf16.safetensors minimax_h3_hybrid_fl2va_ref2va_b40-49_bf16.safetensors
It patches in place (no second 66 GB copy needed) and runs on CPU in a few minutes; no GPU is involved.
Drop-in replacement for ref2va: load it with UNETLoader (weight_dtype: default) and use it through
MiniMaxH3ReferenceToVideo with your reference images / clip / voice. Pair it with the ref2va turbo LoRA
(minimax_h3_ref2v_turbo_4step_v0.1, 4 steps) or run it un-distilled; the usual H3 text encoder
(qwen3vl_32b_minimax_h3) and video/audio VAEs apply. Same VRAM footprint as fl2va_bf16.
fl2va's look and motion quality.fl2va on non-reference generation — it is fl2va for 92 % of its weights.b35-49, or the int8 b30-49 / b25-49 from smhfacct).MiniMax for H3; Comfy-Org for the ComfyUI packaging of the weights; smhfacct for the tensor-level analysis of
fl2va vs ref2va and the original hybrid idea this repo builds on.