The impossible average — slide between two experts
Two models fine-tuned from the same base: one great at task A (french), hopeless at B (python); the other the reverse. Drag the merge slider — the merged weights are (1−α)·A + α·B, a straight-line blend. Watch both skill meters. Your intuition screams the middle should be garbage (average of two different experts = expert at nothing). Instead there's a fat middle zone where the merge is good at both at once.
Skill curves follow the empirically observed shape: because both experts descend from the same base into the same loss basin, the segment between them stays low-loss — this is the "linear mode connectivity" that makes soups possible. Toy dynamics, real phenomenon.
Task vectors — skills you can add like Lego
The deeper idea: define a task vector = (fine-tuned weights − base weights). It's the direction in weight-space that "installs" a skill. And these vectors add: base + french_vector + python_vector ≈ a model that knows both. Toggle skill vectors on and off below and watch them compose onto the base model — installing capabilities like apps, no retraining.
Each skill is a vector added to the base; the model's competence per skill is computed from how well the summed vector lands in that skill's region. Strength > ~1.5 pushes the sum outside the shared basin — measured, not asserted.
Subtract a skill — negation is the spooky part
If adding a vector installs a skill, subtracting it uninstalls one — and this actually works, which is genuinely unsettling. Take a base model and subtract a "toxicity" task vector: the model gets measurably less toxic while keeping its other abilities. Drag the subtraction strength on the two vectors below and watch the target behavior fall — then watch collateral damage rise if you subtract too hard.
Two meters: target behavior (want it down) and general fluency (want it steady). The collateral curve reflects the real finding that mild negation is clean but aggressive negation damages shared weights the skill relied on.
The interference wall — when merging turns to mud
Merging isn't magic — it has a hard limit. When two task vectors want to move the same weights in opposite directions, naive averaging cancels both to zero: interference. Crank the "conflict" between two skills and watch the merged model's combined score collapse. Then switch on TIES-merging (keep only the largest, agreeing changes; drop the sign-conflicted ones) and watch the wall move back.
Conflict = fraction of weights the two vectors push oppositely. Naive averaging halves those to near-zero; TIES resolves by sign-election and magnitude-pruning — both computed on a simulated weight population each drag.
Why it works at all — the basin you can't average across (unless you can)
The load-bearing fact: averaging weights only works if both models live in the same loss basin. Two models trained from different random seeds sit in different valleys, and the straight line between them climbs a huge loss barrier — average them and you get true garbage. Same-base fine-tunes share a valley (no barrier). Toggle the two scenarios and walk the interpolation path; the loss-along-the-path curve tells you instantly whether a merge is even legal.
The interpolation-loss curve is the real diagnostic used in the field: flat = mergeable, humped = a barrier. (Permutation methods like Git Re-Basin can sometimes flatten even the different-seed case by re-aligning neurons first — a hint shown when you pick that mode.)