Nodes/Mikey Nodes/Train Diff (Mikey)
ComfyUI Node

Train Diff (Mikey)

Apply one model's training as a delta onto another

By bash-j·Created 3 years ago·Updated 10 months ago· 188
Train Diff (Mikey)
  • model1
  • model2
  • model3
  • MODEL
ratio1.00

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.
  • model2 and model3 - the before/after pair the difference is computed from. Order matters: the node measures what changed going from model2 to model3.
  • 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.

CategoryMikey/Model Merging

Inputs (4)

NameTypeDefaultDescription
model1MODEL
model2MODEL
model3MODEL
ratioFLOAT1.00-10–10

Outputs (1)

NameTypeDescription
MODELMODEL