StateDictMergerBlockWeightedMulti
Sweep block-weighted merges in one run, SuperMerger style
- model_A
- model_B
- MODEL
- CLIP
- VAE
This is the flagship merge node in the pack, and it exists to answer one painful question: which block weights actually look good? Instead of merging, sampling, tweaking, re-merging, and sampling again, StateDictMergerBlockWeightedMulti lets you define a whole batch of block-weight recipes up front, then sample all of them in a single run and compare.
It takes the same core inputs as StateDictMergerBlockWeighted - model_A, model_B, position_ids, half, base_alpha - but its alphas field is different in a crucial way: instead of one line of 25 numbers, it accepts one line of 25 numbers per merge recipe, each line on its own row. Line one is your first recipe, line two your second, and so on. config_name also gets added (the architecture YAML for instantiation, same list as Dict2Model).
Where the regular block-weighted node returns a merged DICT, this one returns live MODEL, CLIP, and VAE outputs - and it's built to be iterated. Each recipe becomes one entry in a model chain, and when you feed the MODEL into a KSamplerXYZ (via the pack's iter machinery), the sampler runs the same prompt against every recipe in turn. Combined with VAEDecodeBatched and GridImage, you get a grid where each row is a different block-weighted blend. That's the SuperMerger "multi-alpha" workflow the README points at, ported to ComfyUI.
Mechanically it does something clever instead of merging on disk: it instantiates both parents as real models, then builds a live wrapper module whose forward computes (1-alpha)*A + alpha*B per block on the fly. Nothing is written to disk until you save it. That's why a big sweep doesn't multiply disk usage - the recipes only cost compute.
To save a specific winning recipe as an actual checkpoint, note this node's outputs are model objects, not a DICT - you'd want to rebuild that recipe in StateDictMergerBlockWeighted and route through SaveStateDict, or save the merged dict directly from the simpler node.
Install via ComfyUI Manager (search "ComfyUI-nodes-hnmr") or:
cd ComfyUI/custom_nodes
git clone https://github.com/CYBERLOOM-INC/ComfyUI-nodes-hnmr
Restart ComfyUI; no downloads, no extra deps.
Caveats, same family as the others: this is SD 1.x tooling (25-block UNet), so SDXL weights won't parse sensibly. Every line of alphas must have exactly 25 values or it errors on that line number. And a big multi-recipe sweep is N full generations, so start with 3–4 recipes. This is the maintained fork of hnmr293's pack - the original stopped receiving fixes and broke on modern ComfyUI, so install the CYBERLOOM-INC repo specifically.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model_A | DICT | — | |
| model_B | DICT | — | |
| position_ids | COMBO | 3 options: A, B, Reset | |
| half | COMBO | 2 options: True, False | |
| base_alpha | FLOAT | 0.000-1–2 | — |
| alphas | STRING | — | |
| config_name | COMBO | 11 options: anything_v3.yaml, v1-inference.yaml, v1-inference_clip_skip_2.yaml, v1-inference_clip_skip_2_fp16.yaml, v1-inference_fp16.yaml, v1-inpainting-inference.yaml, +5 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| VAE | VAE | — |