Train Diff (Mikey)
Apply one model's training as a delta onto another
- model1
- model2
- model3
- MODEL
This is the classic "add difference" merge technique in node form: instead of blending two checkpoints toward each other, it takes the change between a before-and-after pair and grafts that change onto a third, unrelated model. Three models in, one model out, and one number controlling how strongly the difference gets applied.
How it works
Think of it as isolating what a fine-tune actually learned, and reapplying just that. model2 and model3 are your before-and-after - say, a base checkpoint before some further training, and the same checkpoint after it. The node computes the weight difference between them (model3 - model2, effectively "what training changed"), scales it by ratio, and adds that scaled delta onto model1. The result is a version of model1 that's absorbed whatever training effect distinguished model2 from model3, without actually being trained itself and without needing model1 to have any direct relationship to the other two.
This is the same underlying idea people have used for years to move a style, a fine-tuning effect, or even something LoRA-like between checkpoints that don't share a training lineage - computed as a merge instead of trained as an adapter.
The inputs and outputs that matter
model1- the base you're applying the extracted difference onto. This is the model that gets changed.model2andmodel3- the before/after pair the difference is computed from. Order matters: the node measures what changed going frommodel2tomodel3.ratio(FLOAT, default 1, range -10 to 10, step 0.01) - how strongly the difference gets applied. 1 applies the full measured difference; values below 1 apply it more gently; going negative applies the difference in reverse, which is a real and sometimes useful thing to try if you want to subtract a learned effect rather than add it. The wide range (up to 10 in either direction) means this node won't stop you from applying a wildly exaggerated or inverted version of the difference - that's a deliberate lack of guardrails, not a recommendation to actually go there on a first try.MODEL(output) -model1, modified by the scaled difference.
How to install it
Comes with the rest of Mikey Nodes. ComfyUI Manager: search "Mikey Nodes," install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/bash-j/mikey_nodes
then restart. All three input models need to already be downloaded - this node merges checkpoints you already have, it doesn't fetch anything on its own.
Common issues & troubleshooting
Mismatched architectures across the three models. This technique depends on the weight tensors lining up shape-for-shape between all three checkpoints. Mixing architectures - an SDXL checkpoint as model1 against an SD 1.5 pair for model2/model3, for instance - isn't going to produce a sensible merge; expect an error rather than a working result.
Result looks like neither parent, in a bad way. Merging in general has a known failure mode across this whole ecosystem: averaging or grafting weights between checkpoints that pull in different directions tends to dilute both rather than combine their strengths. If ratio at 1 gives you something worse than model1 alone, try backing it down toward 0.3–0.5 before assuming the technique doesn't work for your pair - a smaller dose of the difference is often the fix.
Getting model2 and model3 backwards. Since the difference is directional (what changed going from model2 to model3), swapping them applies the change in reverse. If the merge seems to be pulling away from an effect you wanted instead of toward it, check which model went in which slot before touching ratio.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| model1 | MODEL | — | |
| model2 | MODEL | — | |
| model3 | MODEL | — | |
| ratio | FLOAT | 1.00-10–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |