Nodes/ComfyUI-MiniMax-H3-Studio/H3 Studio - Benchmark Lab
ComfyUI Node

H3 Studio - Benchmark Lab

A/B-testing sampling profiles without building a second workflow

By thaakeno·Created 17 days ago·Updated 5 days ago· 79
H3 Studio - Benchmark Lab
  • h3_bundle
  • studio_context
  • comparison_grid
  • comparison_report
comparison_kindSampling profiles x resolution
profilesbase_quality_20, lightx_er_sde_4
megapixels0.40, 1.00, 2.00
repeats1
seed_strategySame seed for all - fair comparison
seed_step1
grid_cell_size640
max_generations24
allow_large_matrixfalse
include_reference_contexttrue
include_original_prompttrue
live_cell_previewstrue

Which H3 sampling profile is actually better - Base Quality at 20 steps, LightX at 8, the 4-step ER-SDE recipe? Most people answer by running two generations and squinting at the outputs, which is a terrible way to compare because the seeds differ, the resolutions drift, and you can't remember which one you liked. H3StudioABComparison is the pack's answer: a guarded comparison matrix that runs profiles × resolutions under controlled conditions and hands you a side-by-side grid.

The name undersells it - it's not just A/B, it's a full matrix. comparison_kind offers two shapes:

  • Sampling profiles x resolution (default) - compare any two (or more) sampling profiles across a set of resolutions.
  • VAE decode - same T=1 latent - sample one latent once, then decode that exact latent through the original H3 video VAE and optionally the T=1 image VAE. This isolates decoder behavior instead of mixing sampling variance into the result. Genuinely clever, and the right tool if you're trying to decide whether the T=1 image VAE is worth its softness.

The inputs that keep you out of trouble

  • profiles and megapixels - comma/newline-separated lists. "Two profiles remain a simple A/B," per the description; add more for a wider matrix.
  • repeats and seed_strategy - the fairness control. "Same seed for all - fair comparison" is the fairest A/B; "New seed each row - paired comparison" keeps Base/LoRA paired; "New seed every image - diversity sweep" is explicitly not a fair test, just a diversity tour. seed_step offsets between row/image seeds.
  • max_generations (default 24) and allow_large_matrix - the guard. The node reports the exact run count before queueing and rejects oversized matrices unless you explicitly check the box. This is the "benchmark without destroying your weekend" feature: it's easy to type 3 profiles × 4 resolutions × 3 repeats and accidentally ask for a 36-generation run.
  • include_reference_context / include_original_prompt - whether the final sheet shows the references (with correct @ImageN labels) and the source prompt.
  • live_cell_previews (on) - shows completed cells in the node; disable for maximum throughput.

Outputs and how it reports

comparison_grid (IMAGE) is the assembled contact sheet; comparison_report (STRING) carries the per-cell metadata - profile, seed, requested vs real dimensions, repeat, sampling time, and the rest. The node reports the active cell, completed and remaining counts, profile, aligned resolution, elapsed time, and an ETA once enough cells exist to estimate one honestly. It also dedupes native-capped variants when profile, seed, dimensions and prompt are identical, so you don't pay twice for the same work.

For the report, the Lazy output switch is the intended partner: it makes sure a benchmark run never also fires the normal sampler branch (and vice versa).

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. Start with two profiles, one resolution, same seed - that's the honest A/B, and it's what the defaults are shaped to encourage.

CategoryH3 Studio/Benchmark

Inputs (14)

NameTypeDefaultDescription
h3_bundleH3_STUDIO_BUNDLE
studio_contextH3_STUDIO_CONTEXT
comparison_kindCOMBOSampling profiles x resolutionCompare any two sampling profiles across resolutions, or isolate decoder quality using one identical T=1 latent.
profilesSTRINGbase_quality_20, lightx_er_sde_4Comma/newline-separated profile IDs or labels. Add more than two for a wider matrix.
megapixelsSTRING0.40, 1.00, 2.00Comma/newline-separated direct resolutions from 0.20 to 8.50 MP.
repeatsINT11–16
seed_strategyCOMBOSame seed for all - fair comparisonSame seed is the fairest A/B. New seed each row keeps Base/LoRA paired. New seed every image explores diversity but no longer isolates the accelerator.
seed_stepINT11–1000000Offset added between row or image seeds. The Director seed is the matrix base seed.
grid_cell_sizeINT640320–1024Display size per grid cell; generation resolution is unaffected.
max_generationsINT241–128The run is rejected before execution when the matrix exceeds this count.
allow_large_matrixBOOLEANfalseExplicitly allow a matrix above your guard after checking its generation count.
include_reference_contextBOOLEANtrue
include_original_promptBOOLEANtrue
live_cell_previewsBOOLEANtrueShow completed cells in the node. Disable to avoid preview encoding overhead.

Outputs (2)

NameTypeDescription
comparison_gridIMAGE
comparison_reportSTRING