ModelMergeLTXV_motorway_edition
Blending video checkpoints without touching the VAE
- MOTORWAY 🚌💨
- MOTORWAY 🚌💨
LTX-Video's diffusion backbone is a transformer with its own block layout - caption projection, a single-stream adapter, and a run of transformer_blocks - and ModelMergeLTXV is ComfyUI's per-block merge node for it. This is its Motorway-ed clone. Video-model merging is younger and rarer than the SD1/SDXL scene, but the mechanism is the same weight-patch interpolation, and the node gives you the same per-region control.
The block layout
patchify_proj- the input projection that turns the latent patch into transformer tokens.adaln_singleandcaption_projection- the adaptive norm and text-caption conditioning paths. These carry a lot of the prompt-following behavior.transformer_blocks.0–transformer_blocks.27- the 28 main transformer blocks, the bulk of the model. Lower blocks are earlier in the network (structure and motion semantics); higher blocks are where fine temporal detail and texture land.scale_shift_tableandproj_out- the output projection back to latent space.
Every ratio defaults to 1.0, and the family gotcha applies: untouched, the merge returns model2. Set a base blend across all the floats first, then push regions - raise caption_projection if you want one parent's prompt adherence, nudge the higher transformer_blocks for temporal detail.
Why you'd merge LTX at all: LTX's selling point is speed - the community's line is "it might often not be as good as WAN, but you can do ten generations in the time" - and the model family has grown (0.9.x, 13B, distilled variants) with noticeably different strengths. Merging lets you combine a quality checkpoint's look with a distilled variant's speed without retraining. One real convenience: this node only touches the diffusion_model, so you never have to worry about the VAE/CLIP side of the merge - they pass through untouched.
The inputs
INPUT_model1_key(defaultmodel1) andINPUT_model2_key(defaultmodel2) - the two LTX-Video 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 every ratio as a widget, turns the models into key strings, and keyed-writes the result. Runtime behavior matches stock ModelMergeLTXV.
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
- Result is pure model2? All ratios default to 1.0 - set a base blend first.
- Merging a distilled LTX variant with a non-distilled one is the risky direction: distilled models expect different sampling (fewer steps, no CFG), so the merged weights may inherit conflicting assumptions. Sample with low steps and see.
- Merge LTX with LTX only - block counts differ across video models (Mochi has 48 blocks, Cosmos has its own layout).
'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 (37)
| Name | Type | Default | Description |
|---|---|---|---|
| MOTORWAY 🚌💨 | MOTORWAY 🚌💨 | — | |
| INPUT_model1_key | STRING | model1 | — |
| INPUT_model2_key | STRING | model2 | — |
| patchify_proj. | FLOAT | 1.000–1 | — |
| adaln_single. | FLOAT | 1.000–1 | — |
| caption_projection. | FLOAT | 1.000–1 | — |
| transformer_blocks.0. | FLOAT | 1.000–1 | — |
| transformer_blocks.1. | FLOAT | 1.000–1 | — |
| transformer_blocks.2. | FLOAT | 1.000–1 | — |
| transformer_blocks.3. | FLOAT | 1.000–1 | — |
| transformer_blocks.4. | FLOAT | 1.000–1 | — |
| transformer_blocks.5. | FLOAT | 1.000–1 | — |
| transformer_blocks.6. | FLOAT | 1.000–1 | — |
| transformer_blocks.7. | FLOAT | 1.000–1 | — |
| transformer_blocks.8. | FLOAT | 1.000–1 | — |
| transformer_blocks.9. | FLOAT | 1.000–1 | — |
| transformer_blocks.10. | FLOAT | 1.000–1 | — |
| transformer_blocks.11. | FLOAT | 1.000–1 | — |
| transformer_blocks.12. | FLOAT | 1.000–1 | — |
| transformer_blocks.13. | FLOAT | 1.000–1 | — |
| transformer_blocks.14. | FLOAT | 1.000–1 | — |
| transformer_blocks.15. | FLOAT | 1.000–1 | — |
| transformer_blocks.16. | FLOAT | 1.000–1 | — |
| transformer_blocks.17. | FLOAT | 1.000–1 | — |
| transformer_blocks.18. | FLOAT | 1.000–1 | — |
| transformer_blocks.19. | FLOAT | 1.000–1 | — |
| transformer_blocks.20. | FLOAT | 1.000–1 | — |
| transformer_blocks.21. | FLOAT | 1.000–1 | — |
| transformer_blocks.22. | FLOAT | 1.000–1 | — |
| transformer_blocks.23. | FLOAT | 1.000–1 | — |
| transformer_blocks.24. | FLOAT | 1.000–1 | — |
| transformer_blocks.25. | FLOAT | 1.000–1 | — |
| transformer_blocks.26. | FLOAT | 1.000–1 | — |
| transformer_blocks.27. | FLOAT | 1.000–1 | — |
| scale_shift_table | FLOAT | 1.000–1 | — |
| proj_out. | FLOAT | 1.000–1 | — |
| OUTPUT_MODEL_key | STRING | MODEL | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MOTORWAY 🚌💨 | MOTORWAY 🚌💨 | — |