ModelMergeCosmos14B
The 36-block sibling in NVIDIA's world-model merge family
- model1
- model2
- MODEL
ModelMergeCosmos14B is the big sibling of ModelMergeCosmos7B - the block-merge node for NVIDIA's 14B Cosmos diffusion model, with 36 transformer blocks instead of 28. If you're in the small, serious crowd doing Cosmos world-model work, the 14B is the higher-quality of the two variants, and this is the node that lets you blend two of them block-by-block.
Same honest framing as the 7B version applies, and it's worth repeating because it saves you time: Cosmos was built for Physical AI - robotics, simulation, autonomous driving - not for the stable-diffusion-style image community, and it never developed a real merge culture. Nobody on CivitAI is downloading "Cosmos 14B realistic merge #47." You'd use this node because you have a specific technical need: two Cosmos 14B checkpoints, usually fine-tuned for different scenes or conditions, that you want to interpolate between. It's a precision instrument for a niche, and it's entirely okay if it's not your instrument.
How it works
Identical mechanism to the whole family - a ModelMergeBlocks subclass, per-tensor interpolation result = ratio · model1 + (1 − ratio) · model2, ratio chosen by longest matching key prefix. The 14B key map is the same structure as the 7B, just bigger:
pos_embedder.,extra_pos_embedder.- the two positional embedding paths (the second handles Cosmos's temporal dimension).x_embedder.- input patch embedding.t_embedder.- timestep embedding.affline_norm.- normalization layer (upstream's spelling).blocks.block0throughblocks.block35- 36 transformer blocks.final_layer.- output projection.
Every slider defaults to 1.0 (all model1). The extra eight blocks versus the 7B are why the two nodes are separate - the shapes don't line up, and merging across sizes fails loudly.
The inputs that matter
Same as the 7B: model1, model2, and a range of blocks.blockN ratios is the 95% case. If you're interpolating between two scene-conditioned fine-tunes, the common play is to hold the early blocks (structure) of one and let the later blocks (detail, texture) follow the other. The extra_pos_embedder. matters if the two parents differ in temporal behavior - for a video/world model that's often exactly what you're trying to blend.
One MODEL out, into your video sampler or Save Checkpoint.
Where people get burned
Same as the 7B, plus a bigger memory bill - you're holding two 14B models plus the patched result, so plan your VRAM. Shape mismatches are the other sharp edge: Cosmos 7B weights do not merge with 14B weights, and Cosmos-Predict2 (a separate, newer NVIDIA family, the one that matters to anime people via Anima) has its own nodes. Pick the node that matches the checkpoint you actually loaded - ComfyUI will happily let you wire a 14B into a 7B merge node and then refuse at sampling with a shape mismatch that looks cryptic.
How you get it
Core ComfyUI, model/merging/model specific, landed February 2025 with Cosmos support. Nothing to install.
Inputs (44)
| Name | Type | Default | Description |
|---|---|---|---|
| model1 | MODEL | — | |
| model2 | MODEL | — | |
| pos_embedder. | FLOAT | 1.000–1 | — |
| extra_pos_embedder. | FLOAT | 1.000–1 | — |
| x_embedder. | FLOAT | 1.000–1 | — |
| t_embedder. | FLOAT | 1.000–1 | — |
| affline_norm. | FLOAT | 1.000–1 | — |
| blocks.block0. | FLOAT | 1.000–1 | — |
| blocks.block1. | FLOAT | 1.000–1 | — |
| blocks.block2. | FLOAT | 1.000–1 | — |
| blocks.block3. | FLOAT | 1.000–1 | — |
| blocks.block4. | FLOAT | 1.000–1 | — |
| blocks.block5. | FLOAT | 1.000–1 | — |
| blocks.block6. | FLOAT | 1.000–1 | — |
| blocks.block7. | FLOAT | 1.000–1 | — |
| blocks.block8. | FLOAT | 1.000–1 | — |
| blocks.block9. | FLOAT | 1.000–1 | — |
| blocks.block10. | FLOAT | 1.000–1 | — |
| blocks.block11. | FLOAT | 1.000–1 | — |
| blocks.block12. | FLOAT | 1.000–1 | — |
| blocks.block13. | FLOAT | 1.000–1 | — |
| blocks.block14. | FLOAT | 1.000–1 | — |
| blocks.block15. | FLOAT | 1.000–1 | — |
| blocks.block16. | FLOAT | 1.000–1 | — |
| blocks.block17. | FLOAT | 1.000–1 | — |
| blocks.block18. | FLOAT | 1.000–1 | — |
| blocks.block19. | FLOAT | 1.000–1 | — |
| blocks.block20. | FLOAT | 1.000–1 | — |
| blocks.block21. | FLOAT | 1.000–1 | — |
| blocks.block22. | FLOAT | 1.000–1 | — |
| blocks.block23. | FLOAT | 1.000–1 | — |
| blocks.block24. | FLOAT | 1.000–1 | — |
| blocks.block25. | FLOAT | 1.000–1 | — |
| blocks.block26. | FLOAT | 1.000–1 | — |
| blocks.block27. | FLOAT | 1.000–1 | — |
| blocks.block28. | FLOAT | 1.000–1 | — |
| blocks.block29. | FLOAT | 1.000–1 | — |
| blocks.block30. | FLOAT | 1.000–1 | — |
| blocks.block31. | FLOAT | 1.000–1 | — |
| blocks.block32. | FLOAT | 1.000–1 | — |
| blocks.block33. | FLOAT | 1.000–1 | — |
| blocks.block34. | FLOAT | 1.000–1 | — |
| blocks.block35. | FLOAT | 1.000–1 | — |
| final_layer. | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |