MiniMax-H3 acceleration LoRAs for ComfyUI
MiniMax H3 normally takes 16 sampler steps to render a clip with sound. With these files and one ComfyUI node it takes 5 to 8, at close to the same quality. They are conversions of alibaba-pai/MiniMax-H3-Acc-LoRAs, the official Parallel Decoding Distillation LoRAs for MiniMaxAI/MiniMax-H3. Nothing was trained here.
Each file is a sidecar: it rides alongside your H3 checkpoint and carries
three things the acceleration needs. A LoRA update for the transformer, an
update to the timestep modulation, and a bank of 32 replacement output heads,
one per slice of the trajectory, which is the actual trick. A stock LoRA
loader applies only the first and silently renders at the wrong quality. The
MiniMaxH3PDDLoRA node here applies all three and gives your sampler the
schedule the heads were made for. Take the node and the files from the same
revision; they are checked against each other.
What changed since the last update
| 2026-09-03 | what it means for you |
|---|---|
| The four files were regenerated. Weights are identical; each now carries a fingerprint of the checkpoint it was made for. | The node refuses a file made for the wrong checkpoint instead of rendering something plausible at the wrong quality. Update the node folder and the files together; old and new do not mix. |
New optional input unmerged_blocks, off by default. | An accuracy knob for quantised checkpoints, at a render-time cost. Ignore it unless you are experimenting. |
Quick start
-
Read your checkpoint's filename. It says
fl2vaorref2va, and it saysprunedif it is. That is enough to pick a file below. -
Put that file in
models/loras/. -
Put the folder
comfyui_minimax_h3_pdd/incustom_nodes/and restart. Nothing beyond core ComfyUI; you do not need the source repo. If you already runComfyUI-h3-explorations, you have this node; do not install it twice. If it fails to load withNo module named 'pdd_observe', download it again: the first 2026-09-03 copy was incomplete.hf download fbjr/MiniMax-H3-Acc-LoRAs-sidecar --include "comfyui_minimax_h3_pdd/*" --local-dir ComfyUI/custom_nodes -
Open a graph from
workflows/, or wire the node yourself:
UNETLoader ──► MiniMaxH3PDDLoRA ──MODEL──► BasicGuider ──► SamplerCustomAdvanced
└──────────SIGMAS───────────────────────────┘
- Set
stepson the node. 5 is a good default; 8 is the distilled count.
Two rules: no BasicScheduler, wire the node's SIGMAS to the sampler
instead, since a scheduler at the same count gives different sigmas than the
heads were fused for; and set steps only on the node, which refuses a count it
cannot fuse.
Which file
| file | for | inside |
|---|---|---|
minimax_h3_fl2va_pdd_8step_comfy.safetensors | pruned FL2VA | backbone LoRA, head bank, modulation update pre-solved into the pruned checkpoint's rank-8 basis |
minimax_h3_fl2va_pdd_8step_adaln2688_comfy.safetensors | any FL2VA | the same, with the modulation update at full width |
minimax_h3_ref2va_pdd_8step_comfy.safetensors | pruned Ref2VA | as the pruned FL2VA one, from the Ref2VA LoRA |
minimax_h3_ref2va_pdd_8step_adaln2688_comfy.safetensors | any Ref2VA | as the FL2VA adaln2688 one, from the Ref2VA LoRA |
Not sure whether yours is pruned? Take adaln2688; it works on both. The two
partitions share identical key sets, which is why each file carries a
checkpoint fingerprint: without it a wrong pairing loads with no error.
Steps
The heads were distilled over a 32-point grid in blocks of width 4; a count is legal when its blocks tile the grid at widths 4 to 8.
| steps | blocks | versus 8 |
|---|---|---|
| 4 | 8, 8, 8, 8 | noticeably coarser; the last step covers most of the trajectory, and no other 4-block layout is legal |
| 5 | 8, 8, 8, 4, 4 | within 2% |
| 6 | 8, 8, 4, 4, 4, 4 | within 1% |
| 7 | 8, 4, 4, 4, 4, 4, 4 | within 1% |
| 8 | 4 x 8 | the distilled count |
5 to 8 are a plateau; pick by time. 1, 2, 16 and 32 are accepted but untested; everything else is refused. Different counts give different clips, not better and worse versions of one.
Workflows
Four text-to-video-with-audio graphs on FL2VA, one dialogue scene. Repoint the loaders at your checkpoint and VAEs.
| graph | why |
|---|---|
t2va_pdd_5step.json | start here |
t2va_pdd_8step.json | the distilled count |
t2va_pdd_4step.json | fastest and visibly coarser, so you can see why |
t2va_pdd_8step_heads_off.json | control: the checkpoint's own output heads |
Knobs
Leave everything but steps alone unless you are experimenting.
| input | default | what it does |
|---|---|---|
steps | 8 | the step count, and what SIGMAS emits |
strength | 1.0 | scales the whole file at once |
patch_heads | on | the replacement output heads; off is a control |
head_strength | -1, follow strength | scales the output heads alone; 0 runs the checkpoint's own |
nfe | 0 | experiment only; 0 is the ordinary mode |
unmerged_blocks | empty | accuracy knob for quantised checkpoints: named blocks apply their LoRA update at the call instead of merging it into the quantised weight |
unmerged_strength, unmerged_window | follow, empty | experiment only; inert unless unmerged_blocks is set |
Versions
Converter 3, regenerated 2026-09-03. The node folder's own README.md names
the commit it was built from. Content hashes over sorted metadata and every
tensor's bytes in key order:
| file | sha256 prefix |
|---|---|
minimax_h3_fl2va_pdd_8step_comfy.safetensors | 115fcd82dbf2125a |
minimax_h3_fl2va_pdd_8step_adaln2688_comfy.safetensors | cd788e5e3ac7de3f |
minimax_h3_ref2va_pdd_8step_comfy.safetensors | 102a83d1f57c1c2f |
minimax_h3_ref2va_pdd_8step_adaln2688_comfy.safetensors | 7c402b48fc2a6b85 |
Under the hood
The published files use diffusers-side key names, so ComfyUI skips every
tensor and renders an ordinary undistilled pass that looks like a weak LoRA.
The conversion fuses q, k and v into ComfyUI's single projection with alpha
scaled to match, renames two modules and swaps the SwiGLU halves, ships the 32
output heads verbatim and fuses them per block at load so one file serves
every legal count, and carries the modulation update in full in the
adaln2688 files or pre-solved into the pruned checkpoint's rank-8 basis in
the others. If you write your own loader: the heads are verbatim, not deltas
from head 0, which is the opposite of ComfyUI core's convention.
Limitations
Four steps cannot be improved, since 8, 8, 8, 8 is the only legal layout.
Block width 8 is twice the trained width and unmeasured. Coarser steps degrade
video and audio together; you hear it first. This is an 8-step distillation,
and far from 8 is extrapolation.
Credits
- MiniMax for MiniMax H3.
- alibaba-pai for the Acc LoRAs these are converted from, and for the PDD method.
- The node is generated from
ComfyUI-h3-explorations, which is where to file issues and where the rest of the H3 work lives. - silveroxides, whose
ComfyUI-UtilsCollectionPDD implementation separates LoRA strength from head strength; the node that reads these files borrows that split.
Powered by MiniMax H3.
License
These are Model Derivatives of MiniMax H3 and are distributed under the
MiniMax H3 Community License Agreement, the same terms as both upstream
releases. The full agreement is in LICENSE; the required
attribution is in NOTICE.
Two terms worth reading before you use these commercially or redistribute them, neither of which is unusual but both of which are easy to miss:
- The agreement is territorially limited — worldwide excluding the Excluded Territories it names.
- Commercial products or services generating over 20 million USD in yearly revenue need separate written authorisation from MiniMax.
If you redistribute these files or anything derived from them, the agreement
requires you to pass on a copy of it, carry prominent notices on modified
files, and include the NOTICE text. You may not relicense them under
different terms.
MiniMax H3 is licensed under the MiniMax H3 Community License Agreement,
Copyright (c) 2026 MiniMax. All Rights Reserved.