Nodes/RunningHub MiniMax H3/RunningHub MiniMax H3 Qwen3-VL Loader
ComfyUI Node

RunningHub MiniMax H3 Qwen3-VL Loader

The Qwen3-VL loader that powers every MiniMax H3 prompt

By RH-RunningHub·Created 29 days ago·Updated 19 days ago· 1
RunningHub MiniMax H3 Qwen3-VL Loader
    • h3_text_encoder
    text_encoder_pathqwen3-vl-32b-int8_convrot.safetensors

    MiniMax H3 doesn't use a little CLIP text encoder. Its language brain is Qwen3-VL 32B - a vision-language model big enough to understand the whole multimodal prompt, which is how it can line up a picture reference, a video reference, a bit of dialogue, and a paragraph of direction into one generation. RHMiniMaxH3TextEncoderLoader is the node that loads that brain, as the INT8 ConvRot quantized weights (qwen3-vl-32b-int8_convrot.safetensors).

    Why this is the only loader you need

    This pack went through a few generations of loaders. The earlier FL2VA and Ref2VA variants each had their own text-encoder loader, and then the author noticed something: both partitions ship byte-identical text encoder weights. So this merged node dropped the partition knob entirely and became the single Qwen3-VL loader for everything - T2VA, FL2VA, Ref2VA, V2A, all of it. The old partition-specific loaders are still registered as legacy nodes so old workflows load, but new graphs should always use this one.

    Inputs and output

    One input that matters: text_encoder_path, defaulting to qwen3-vl-32b-int8_convrot.safetensors from the converted model bundle. The single output is h3_text_encoder - a typed handle that plugs into the h3_text_encoder input on RHMiniMaxH3VideoGen, RHMiniMaxH3RefGen, or the legacy text-encode nodes.

    It's worth noting what "INT8" means here: a 32B model at full precision is not a fun thing to fit next to a video DiT. The INT8 ConvRot conversion is what makes running it in a ComfyUI process on a single GPU plausible at all, at a quality cost that's hard to see in the output.

    Do you even need it?

    Honest answer: for new workflows, mostly no. The generation nodes auto-load the text encoder when you leave h3_text_encoder empty. You'd wire this loader in explicitly when you want to share one loaded encoder across multiple generation nodes, pin a specific dtype, or mix weights - like an INT8 DiT with a raw bf16 text encoder, which the generation nodes specifically call out as a case that needs an explicit link.

    Install

    Same pack-wide routine - ComfyUI Manager (search "ComfyUI-RH-MiniMax-H3") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/RH-RunningHub/ComfyUI-RH-MiniMax-H3.git
    pip install -r ComfyUI-RH-MiniMax-H3/requirements.txt
    

    Restart, then the weights. The text encoder is part of the ~95 GiB INT8 ConvRot bundle in models/MiniMax-H3-INT8-CONVROT/:

    cd /path/to/ComfyUI
    hf download Gluttony10/MiniMax-H3-INT8-CONVROT --local-dir ./models/MiniMax-H3-INT8-CONVROT
    

    Gotchas

    The transformer stack is the fiddly bit: the pack pins transformers>=4.57.0 (plus accelerate, sentencepiece, einops) - older Transformers will refuse to load the Qwen3-VL architecture or silently misbehave. And if the loader errors with a missing-file message, it's almost always the bundle sitting in the wrong place; the path must be exactly models/MiniMax-H3-INT8-CONVROT/. One more thing that surprises people: Qwen3-VL 32B is a heavy resident, and it stays in VRAM between generations, so a big first encode can look like a hang.

    CategoryRunningHub/MiniMax H3/loaders

    Inputs (1)

    NameTypeDefaultDescription
    text_encoder_pathCOMBOqwen3-vl-32b-int8_convrot.safetensors使用转换模型包中的 Qwen3-VL INT8 ConvRot 权重。

    Outputs (1)

    NameTypeDescription
    h3_text_encoderMINIMAX_H3_TEXT_ENCODER