Model Merge ZIT Blocks (DEPRECATED)
The old per-layer Z-Image merge node (folded into ModelMergeZIT)
- model1
- model2
- MODEL
ModelMergeZITBlocks is a deprecated node, and the deprecation story here is a good one: it was the per-layer Z-Image Turbo merge node, and instead of just killing it, the pack folded it into ModelMergeZIT. That node has a granularity selector - set it to blocks and you get every slider this node had, byte-for-byte behavior, under the same hood. This page exists for people who meet the old name in a downloaded workflow.
What it did
Same fundamentals as ModelMergeZIT: merge two Z-Image Turbo / Lumina2 models by giving every part of the 30-layer transformer its own ratio from model1 to model2 (0.0 = model1, 1.0 = model2). The difference was granularity - this node exposed all 30 layer_0…layer_29 sliders individually, plus the embedders (x_embedder, t_embedder, cap_embedder), the refiners (context_refiner, noise_refiner), final_layer, norm_final, and other. No grouping, no training wheels. That's a lot of sliders, and it's exactly why the successor added the grouped mode - four group sliders for the 95% case, and the per-layer view for the rest.
If you still have this node in a saved workflow: it loads, it runs, the ratios mean the same thing. But for anything new, reach for ModelMergeZIT with granularity set to blocks - same sliders, same semantics, one less node to keep around, and you get the grouped mode as a bonus when you want it.
The practical guidance carries over unchanged: your base usually goes in model1, your style model in model2, and the layer ranges map to real jobs - layers 0–5 encode the prompt, 6–14 build composition, 15–23 carry detail, 24–29 refine aesthetics. Pull composition layers toward 0 to keep model1's structure, leave the late layers at 1 for model2's finish. And save your good results with the pack's DonutModelSave, because a hand-tuned per-layer merge is exactly the thing you don't want to lose to a reload.
Install
Part of ComfyUI-DonutNodes: ComfyUI Manager → search "DonutNodes" → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/DonutsDelivery/ComfyUI-DonutNodes.git donutnodes
cd donutnodes
python -m pip install -r requirements.txt
Dependencies are the pack's usual opencv-python-headless, scipy, matplotlib, psutil, tqdm, requests - no downloads beyond that, since the merge works on checkpoints you already have.
Inputs (40)
| Name | Type | Default | Description |
|---|---|---|---|
| model1 | MODEL | — | |
| model2 | MODEL | — | |
| layer_0 | FLOAT | 1.000–1 | Layer 0: Translation/encoding |
| layer_1 | FLOAT | 1.000–1 | Layer 1: Translation/encoding |
| layer_2 | FLOAT | 1.000–1 | Layer 2: Translation/encoding |
| layer_3 | FLOAT | 1.000–1 | Layer 3: Translation/encoding |
| layer_4 | FLOAT | 1.000–1 | Layer 4: Translation/encoding |
| layer_5 | FLOAT | 1.000–1 | Layer 5: Translation/encoding |
| layer_6 | FLOAT | 1.000–1 | Layer 6: Composition/layout |
| layer_7 | FLOAT | 1.000–1 | Layer 7: Composition/layout |
| layer_8 | FLOAT | 1.000–1 | Layer 8: Composition/layout |
| layer_9 | FLOAT | 1.000–1 | Layer 9: Composition/layout |
| layer_10 | FLOAT | 1.000–1 | Layer 10: Composition/layout |
| layer_11 | FLOAT | 1.000–1 | Layer 11: Composition/layout |
| layer_12 | FLOAT | 1.000–1 | Layer 12: Composition/layout |
| layer_13 | FLOAT | 1.000–1 | Layer 13: Composition/layout |
| layer_14 | FLOAT | 1.000–1 | Layer 14: Composition/layout |
| layer_15 | FLOAT | 1.000–1 | Layer 15: Details/attributes |
| layer_16 | FLOAT | 1.000–1 | Layer 16: Details/attributes |
| layer_17 | FLOAT | 1.000–1 | Layer 17: Details/attributes |
| layer_18 | FLOAT | 1.000–1 | Layer 18: Details/attributes |
| layer_19 | FLOAT | 1.000–1 | Layer 19: Details/attributes |
| layer_20 | FLOAT | 1.000–1 | Layer 20: Details/attributes |
| layer_21 | FLOAT | 1.000–1 | Layer 21: Details/attributes |
| layer_22 | FLOAT | 1.000–1 | Layer 22: Details/attributes |
| layer_23 | FLOAT | 1.000–1 | Layer 23: Details/attributes |
| layer_24 | FLOAT | 1.000–1 | Layer 24: Refinement/aesthetics |
| layer_25 | FLOAT | 1.000–1 | Layer 25: Refinement/aesthetics |
| layer_26 | FLOAT | 1.000–1 | Layer 26: Refinement/aesthetics |
| layer_27 | FLOAT | 1.000–1 | Layer 27: Refinement/aesthetics |
| layer_28 | FLOAT | 1.000–1 | Layer 28: Refinement/aesthetics |
| layer_29 | FLOAT | 1.000–1 | Layer 29: Refinement/aesthetics |
| x_embedder | FLOAT | 1.000–1 | Patch embedding (converts image patches to tokens) |
| t_embedder | FLOAT | 1.000–1 | Timestep embedding |
| cap_embedder | FLOAT | 1.000–1 | Caption/text embedding |
| context_refiner | FLOAT | 1.000–1 | Context refinement |
| noise_refiner | FLOAT | 1.000–1 | Noise refinement |
| final_layer | FLOAT | 1.000–1 | Final output layer |
| norm_final | FLOAT | 1.000–1 | Final normalization |
| other | FLOAT | 1.000–1 | Remaining (pad tokens, etc.) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |