ModelMergeSDXL_motorway_edition
Block ratios, not just a slider
- MOTORWAY 🚌💨
- MOTORWAY 🚌💨
SDXL's UNet is a different shape from SD1.5's - fewer blocks, a big middle section, and a decoder that does a lot more of the heavy lifting - so it gets its own merge node. ModelMergeSDXL is ComfyUI's dedicated per-block merge for SDXL, and this is its Motorway-ed clone. If you're blending SDXL checkpoints and want to keep one parent's composition while borrowing the other's finish, this is the tool.
What the SDXL layout looks like
The node exposes one float per region, and the shape tells you something about how SDXL thinks:
time_embed,label_emb- conditioning inputs.input_blocks.0–input_blocks.8- the encoder. SDXL runs shallower than SD1.5's 12 stages, so each one carries more weight.middle_block.0–middle_block.2- the bottleneck. In SDXL this region does an outsized share of the compositional work; it's the highest-leverage knob on the node.output_blocks.0–output_blocks.8- the decoder, and the region SDXL leaned into for high-res detail. Later indices = texture, lighting, and finish.out- the final projection.
Defaults are all 1.0, which means an untouched node returns model2 - the same trap as every merge node in this family. The pattern that actually works: set every ratio to a base blend value first (0.3–0.5 is a reasonable starting range), sample, then push individual blocks - bump middle_block if you want more of a parent's composition, raise the late output_blocks if you want its texture.
It's the node behind a big share of the SDXL checkpoints that "feel like a fine-tune but are a merge" - and the KB's note applies: descriptions usually tell you, and merges combine parent strengths at the cost of consistency. Per-block control is how you keep that cost in a place you can live with.
The inputs
INPUT_model1_key(defaultmodel1) andINPUT_model2_key(defaultmodel2) - the two SDXL models.- The block ratios, each 0.0–1.0, step 0.01, default 1.0.
OUTPUT_MODEL_key(defaultMODEL) - where the merged model lands.
The wrapper keeps all ratios as widgets, turns the models into key strings, and keyed-writes the result. Runtime behavior matches stock ModelMergeSDXL.
Install
One install for the whole pack. ComfyUI Manager, search "ComfyUI_agilly1989_motorway", or:
cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway
Restart ComfyUI. No requirements.txt, no model downloads.
Troubleshooting
- Output identical to model2? All ratios default to 1.0 - set a base blend before fine-tuning.
- If a parent's composition dominates no matter what you do, you're probably over-weighting
middle_block; it's the region with the strongest structural influence. - Only merge SDXL with SDXL. The block names differ from SD1/2, so the ratios won't map meaningfully.
'MotorwayClass' object has no attribute 'hash_'= a model key isn't in the Motorway; check the loaders ran and the key spelling matches (case-sensitive).- Pack caveats: BETA, and the newest published version (1.1.7) disabled clone generation, so on a fresh install these
_motorway_editionnodes may be missing from the menu. They're present in the 1.1.0–1.1.6 builds comfy.icu indexed.
Inputs (28)
| Name | Type | Default | Description |
|---|---|---|---|
| MOTORWAY 🚌💨 | MOTORWAY 🚌💨 | — | |
| INPUT_model1_key | STRING | model1 | — |
| INPUT_model2_key | STRING | model2 | — |
| time_embed. | FLOAT | 1.000–1 | — |
| label_emb. | FLOAT | 1.000–1 | — |
| input_blocks.0 | FLOAT | 1.000–1 | — |
| input_blocks.1 | FLOAT | 1.000–1 | — |
| input_blocks.2 | FLOAT | 1.000–1 | — |
| input_blocks.3 | FLOAT | 1.000–1 | — |
| input_blocks.4 | FLOAT | 1.000–1 | — |
| input_blocks.5 | FLOAT | 1.000–1 | — |
| input_blocks.6 | FLOAT | 1.000–1 | — |
| input_blocks.7 | FLOAT | 1.000–1 | — |
| input_blocks.8 | FLOAT | 1.000–1 | — |
| middle_block.0 | FLOAT | 1.000–1 | — |
| middle_block.1 | FLOAT | 1.000–1 | — |
| middle_block.2 | FLOAT | 1.000–1 | — |
| output_blocks.0 | FLOAT | 1.000–1 | — |
| output_blocks.1 | FLOAT | 1.000–1 | — |
| output_blocks.2 | FLOAT | 1.000–1 | — |
| output_blocks.3 | FLOAT | 1.000–1 | — |
| output_blocks.4 | FLOAT | 1.000–1 | — |
| output_blocks.5 | FLOAT | 1.000–1 | — |
| output_blocks.6 | FLOAT | 1.000–1 | — |
| output_blocks.7 | FLOAT | 1.000–1 | — |
| output_blocks.8 | FLOAT | 1.000–1 | — |
| out. | FLOAT | 1.000–1 | — |
| OUTPUT_MODEL_key | STRING | MODEL | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MOTORWAY 🚌💨 | MOTORWAY 🚌💨 | — |