RunningHub MiniMax H3 Ref2VA Qwen3-VL Loader (Direct) (Legacy)
The legacy 'Direct' Qwen3-VL loader, locked to the Ref2VA partition
- h3_text_encoder
There was a middle era of this pack where the loaders were "Direct" variants: instead of auto-detecting a merged bundle, they took an explicit model root and a dtype and loaded a specific file. RHMiniMaxH3Ref2VATextEncoderLoader is the Ref2VA-flavored one of those, and it's worth understanding mainly because old workflows will still show it to you - and because its three inputs explain how the pack used to let you mix quantization and precision by hand.
Inputs
- model_root - an enum pointing at the weights root. It accepts the dedicated
models/MiniMax-H3-INT8-CONVROTroot (with the legacymodels/MiniMax-H3fallback), or an official release root undermodels/diffusers. The tooltip is explicit: the three components - DiT, text encoder, VAEs - must come from the same root. - dtype -
auto,bfloat16,float16,float32.autois the safe default; the others are for when you know the weights' precision and want to pin it. - text_encoder_path -
qwen3-vl-32b-int8_convrot.safetensorsby default. This node does not auto-swap between quantized and bf16 weights - you name the file, you get that file. That explicit-choice behavior is the whole "Direct" identity.
One output: h3_text_encoder, the typed handle for the rest of the chain.
What "fixed to the REF2VA partition" means
The pack organizes weights into partitions - FL2VA (which also serves T2VA and V2A) and Ref2VA - and this node always resolves the text encoder from the Ref2VA partition of whatever root you gave it. The amusing part, confirmed in the source: the two partitions ship byte-identical text encoder weights. The partition choice only affects which directory gets parsed. That realization is exactly what killed this node and its FL2VA twin - why carry a partition knob with no effect when one merged loader (RHMiniMaxH3TextEncoderLoader) covers both?
Do you need it?
No. It's deprecated, hidden from search, retained for old graphs. The modern loader drops model_root and dtype widgets (it defaults to the converted root and auto) and leaves text_encoder_path as the only real decision. The one thing this legacy node taught that still matters: if you're mixing an INT8 DiT with a raw bf16 text encoder from different directories, you're in "explicit override" territory - the current generation nodes handle that via the h3_text_encoder input, not via a loader with three widgets.
Install
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 ~95 GiB INT8 ConvRot bundle into models/MiniMax-H3-INT8-CONVROT/:
cd /path/to/ComfyUI
hf download Gluttony10/MiniMax-H3-INT8-CONVROT --local-dir ./models/MiniMax-H3-INT8-CONVROT
If an old workflow using this node errors on load, run the pack's migrator (python3 tools/migrate_workflow.py old_workflow.json --in-place) - it rewrites stale node IDs and widget layouts, and this loader is exactly the kind of thing it retires.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model_root | COMBO | 选择 MiniMax-H3 权重根目录:专属根 models/MiniMax-H3-INT8-CONVROT(兼容 models/MiniMax-H3)(<类型>/<分区>/<模型>,放量化与合并产物),或 models/diffusers 下的官方 release 根(含 FL2VA/Ref2VA 分片子目录);该节点固定解析 REF2VA 分区。三个组件必须来自同一个根。 | |
| dtype | COMBO | auto | 4 options: auto, bfloat16, float16, float32 |
| text_encoder_path | COMBO | qwen3-vl-32b-int8_convrot.safetensors | 必须明确选择文本编码器模型名(权重文件名或逻辑名);不会再自动切换量化/BF16 权重。 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| h3_text_encoder | MINIMAX_H3_TEXT_ENCODER | — |