H3 Studio - Normal / Benchmark Output
The node that keeps benchmarks from secretly costing you a 7th image
- normal_image
- benchmark_image
- image
- selected_mode
ComfyUI has a nasty habit with switches: if both branches feed the same downstream node, both branches execute - the switch node just picks which value passes through. That's fine for cheap nodes and a disaster for benchmarks, because the whole point of a benchmark is to control what runs. H3StudioLazyImageSwitch fixes this the ComfyUI-proper way: it's a lazy switch, using the framework's lazy-input machinery so only the branch you actually want gets evaluated.
The one widget is benchmark_enabled. Set it off and the node requests only the normal-image branch; set it on and it requests only the benchmark branch. The tooltip spells out the payoff: "OFF runs one normal image. ON runs only the selected A/B matrix - never an extra seventh image."
Why lazy matters here
The maintained workflow has two image paths feeding it: the normal generation (Director → sample → decode → select) and the Benchmark Lab's matrix output. Both produce an IMAGE, and you want to look at whichever you ran. With an ordinary switch, toggling to benchmark mode would still evaluate the normal branch - a hidden 5-20 frame H3 generation you didn't ask for, eating VRAM and time before the switch "discards" it. Lazy inputs change the semantics: ComfyUI doesn't execute a node's upstream graph unless that node is actually needed for the requested output. The switch tells the scheduler what's needed, so toggling benchmark on genuinely skips the normal sampler branch, and vice versa.
The mechanism is worth appreciating because it's the difference between "benchmarking" and "benchmarking plus an accidental bonus generation." If you've ever watched a benchmark run finish and then start a mystery extra image, you know exactly why this node exists.
Outputs and wiring
image (IMAGE) is the selected output; selected_mode (STRING) tells you which branch ran - a cheap confirmation that you're looking at what you think you're looking at. Wire the normal generation's selected still into normal_image and the Benchmark Lab's comparison_grid into benchmark_image, then feed image into your save/preview.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/thaakeno/ComfyUI-MiniMax-H3-Studio.git
cd ComfyUI-MiniMax-H3-Studio
python -m pip install -r requirements.txt
Restart and hard-refresh the frontend. No extra dependencies. If you run benchmarks at all, this is the node that keeps the discipline honest - and it's also just a clean lesson in why lazy switches are the right tool for expensive branches.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| benchmark_enabled | BOOLEAN | false | OFF runs one normal image. ON runs only the selected A/B matrix—never an extra seventh image. |
| normal_imageopt | IMAGE | — | |
| benchmark_imageopt | IMAGE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| selected_mode | STRING | — |