Competitive Model Selector (Tensor Prism)
Let models fight block-by-block for the merge
- model_A
- model_B
- model_C
- model_D
- model_E
- winner_model
- competition_report
Normal merging asks "how much of each model?" Competitive Model Selector (Tensor Prism) asks a different question: "which model wins this block?" Instead of averaging two models toward the middle, it runs a competition - block by block, up to five models at a time - and builds an output that takes the best tensor from whichever candidate won each block. It's less a merge and more a committee choosing the strongest parts.
That's a genuinely different philosophy, and it's worth being clear-eyed about. A "winner takes the block" model tends to produce punchier, less muddy results than averaging - but it can also produce something that feels frankensteined if the candidates disagree sharply, because there's no interpolation smoothing over the seams.
How it works
model_A and model_B are the minimum; optional model_C, model_D, model_E let you run a five-model battle. Then competition_mode decides how the verdict is reached:
tournament- pairwise elimination until one winner per block. The default, and the most decisive.weighted_vote- every model votes, weighted by how it scores on the criteria below.hybrid_blend- winners get most of the weight, losers a taste, so it lands between pure selection and a blend.consensus- only takes a block from a candidate if most models agree; otherwise it falls back to blending.
You also get per-region strategy dials - input_blocks_strategy, middle_blocks_strategy, output_blocks_strategy - each set to compete, favor_A, favor_B, or blend_50. That's the pragmatic part: if you know model A has the composition and model B has the detail, you can force the input region to A and output region to B without any competition at all.
The scoring weights decide what "winning" means: detail_preservation_weight (0.35), coherence_weight (0.25), efficiency_weight (0.2), innovation_weight (0.2). Raise detail preservation when you want texture to dominate; raise coherence when you want the result to hang together. enable_tie_breaking resolves draws, and minimum_quality_threshold (0) rejects any candidate scoring below it.
Outputs are winner_model (MODEL) - wire it to a KSampler - plus competition_report (STRING), a plain-text rundown of who won what. Show that string in a text node; it's genuinely useful for understanding your own merge.
The settings that matter
If you only touch three things: the three region strategies, competition_mode, and detail_preservation_weight. Start with everything on compete and tournament, see which regions the report says each model won, then lock in the obvious winners via favor_A/favor_B and re-run.
Installing it
Part of ComfyUI-Tensor-Prism-Node-Pack. ComfyUI Manager → search "Tensor Prism" → Install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/AstrionX/ComfyUI-Tensor-Prism-Node-Pack
No model downloads; deps are torch, numpy, psutil. Ignore the typo'd clone URL in the README.
The honest caveat
Multi-model competition is one of the most experimental ideas in this pack, and it's from a first-time author's openly "vibe-coded" node pack with essentially no community track record. It's fun, it produces interesting hybrids, and the competition_report output is great for learning what your models are actually good at. Just don't expect it to reliably beat a careful hand-tuned merge - treat it as an exploration tool, and always sanity-check the result against a normal merge of the same models.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| model_A | MODEL | — | |
| model_B | MODEL | — | |
| competition_mode | COMBO | tournament | 4 options: tournament, weighted_vote, hybrid_blend, consensus |
| input_blocks_strategy | COMBO | compete | 4 options: compete, favor_A, favor_B, blend_50 |
| middle_blocks_strategy | COMBO | compete | 4 options: compete, favor_A, favor_B, blend_50 |
| output_blocks_strategy | COMBO | compete | 4 options: compete, favor_A, favor_B, blend_50 |
| detail_preservation_weight | FLOAT | 0.350–2 | — |
| coherence_weight | FLOAT | 0.250–2 | — |
| efficiency_weight | FLOAT | 0.200–2 | — |
| innovation_weight | FLOAT | 0.200–2 | — |
| model_Copt | MODEL | — | |
| model_Dopt | MODEL | — | |
| model_Eopt | MODEL | — | |
| enable_tie_breakingopt | BOOLEAN | true | — |
| minimum_quality_thresholdopt | FLOAT | 0.000–1 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| winner_model | MODEL | — |
| competition_report | STRING | — |