E13: real-weight model speciation — the Git Re-Basin residual confirms E12
The real-weight image of E12, and the answer to the mode-connectivity reviewer. Small no-BN MLPs on MNIST, forked from a shared base and trained independently, are weight-averaged; we measure the linear-mode-connectivity barrier before and after in-house deterministic Git Re-Basin permutation alignment (neural/rebasin.py, scipy linear_sum_assignment), decomposing it into removable (coordinate artefact) and residual (reproductive isolation). kind: speciation_real. Result (3 reps): - shared (same task, shared fork): no barrier — trivially mergeable. - independent (same task, different init): naive 0.056, alignment removes 98% (residual 0.001) — the incompatibility is a coordinate artefact. - conflict (conflicting label maps): naive 0.496, alignment removes 0% (residual 0.496) — genuine reproductive isolation. Because alignment demonstrably works on the independent case, the conflict residual is real, not a failure to align. - Isolation cliff (speciation_real_cliff): residual rises 0.00->0.13->0.19->0.28-> 0.40->0.49 with the fraction of conflicting classes — the real-weight mirror of E12's cliff; residual==naive throughout (functional, not coordinate). rebasin.py sanity-gated (recovers a known permutation exactly). plot_speciation_real.py (2-panel), +4 pure-NumPy tests (142 green), README with honest positioning vs Git Re-Basin / Entezari / Frankle / Pari 2024 / Zhou 2026. Wired into make mnist (needs torchvision). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
56f642e7f9
commit
01d87e504f
15 changed files with 620 additions and 3 deletions
54
results/speciation_real/README.md
Normal file
54
results/speciation_real/README.md
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# E13 — Real-weight model speciation (Git Re-Basin residual)
|
||||
|
||||
**Claim tested.** E12 predicts model *speciation* analytically: as two lineages diverge, recombination
|
||||
(merging) fails, via Bateson–Dobzhansky–Muller incompatibilities. E13 confirms it in **real trained
|
||||
weights**, and — decisively — separates the part of the incompatibility that is a mere **coordinate
|
||||
artefact** (removable by permuting hidden units; Git Re-Basin, Ainsworth et al. 2022) from the
|
||||
**residual** that permutation *cannot* remove, which is the true reproductive-isolation signal. This is
|
||||
the experiment that answers the mode-connectivity reviewer: if alignment removes the barrier, it was a
|
||||
coordinate artefact; the barrier that *survives* alignment is real speciation.
|
||||
|
||||
**Setup.** Small no-BatchNorm MLPs (784–512–512–10) on MNIST — the clean Re-Basin regime. Two children
|
||||
are forked from a shared base and trained independently; we weight-average them and measure the
|
||||
**linear-mode-connectivity error barrier** before (`naive`) and after (`aligned`) in-house, deterministic
|
||||
Git Re-Basin weight-matching (`neural/rebasin.py`, scipy `linear_sum_assignment`). Statistically
|
||||
reproducible (seeded torch; NumPy/scipy alignment is deterministic). 3 replicates.
|
||||
|
||||
### Results — the decomposition (mean over divergence, reps)
|
||||
| condition | naive barrier | removable (coordinate) | **residual (isolation)** |
|
||||
|---|---|---|---|
|
||||
| `shared` (same task, shared fork) | 0.00 | 0.00 | **0.00** |
|
||||
| `independent` (same task, different init) | 0.056 | 0.055 | **0.001** |
|
||||
| `conflict` (conflicting label maps) | 0.496 | 0.000 | **0.496** |
|
||||
|
||||
- **`independent`**: two nets trained *from different random inits* on the *same task* have a real naive
|
||||
barrier — which alignment **removes ~98%** of (residual 0.001). Same species, different basis: the
|
||||
incompatibility is a coordinate artefact. (This reproduces the canonical Git Re-Basin result and
|
||||
proves our alignment works.)
|
||||
- **`conflict`**: two nets that learned *conflicting* functions have a large barrier that alignment
|
||||
**removes none** of (residual 0.496). Different species: genuine reproductive isolation. Because
|
||||
alignment demonstrably works on `independent`, this residual cannot be dismissed as a failure to align.
|
||||
- The **residual after alignment** is therefore the clean discriminator: ~0 for compatible models (even
|
||||
independently trained), large only for functionally incompatible ones.
|
||||
|
||||
### Results — the isolation cliff (`speciation_real_cliff/`)
|
||||
Sweeping the fraction of classes on which child B learns a *conflicting* label map, the residual
|
||||
(after-alignment) barrier rises monotonically — the real-weight image of E12's cliff:
|
||||
|
||||
| conflict fraction | 0.0 | 0.2 | 0.4 | 0.6 | 0.8 | 1.0 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| residual barrier | 0.00 | 0.13 | 0.19 | 0.28 | 0.40 | 0.49 |
|
||||
|
||||
residual = naive at every point (alignment removes nothing in the conflict condition), so the cliff is
|
||||
genuinely functional isolation, not a coordinate artefact.
|
||||
|
||||
### Positioning
|
||||
The incumbents each hold one piece: Git Re-Basin / Entezari (barriers are coordinate artefacts),
|
||||
Frankle (the fork-instability protocol), Pari et al. 2024 (specialisation diverges representations,
|
||||
route don't fuse), Zhou et al. 2026 (predict mergeability from divergence metrics). E13's contribution
|
||||
is the synthesis they lack: a controlled decomposition where alignment cleanly partitions the merge
|
||||
barrier into a **removable coordinate artefact** and a **residual reproductive-isolation** term that
|
||||
rises with task conflict — the real-weight confirmation of E12's speciation prediction, and the direct
|
||||
answer to "isn't this just a loss barrier / permutation artefact?" **Falsifier (not triggered):**
|
||||
alignment failing to remove the independent-init barrier (then residual is meaningless), or conflict
|
||||
showing no residual — instead alignment removed 98% of the former and 0% of the latter.
|
||||
18
results/speciation_real/manifest.json
Normal file
18
results/speciation_real/manifest.json
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"experiment": "speciation_real",
|
||||
"master_seed": 13,
|
||||
"git_commit": "56f642e7f9ae01fe01d863bdffe98b226b9dbb7b",
|
||||
"python": "3.14.5",
|
||||
"libraries": {
|
||||
"numpy": "2.5.0",
|
||||
"scipy": "1.18.0",
|
||||
"pandas": "3.0.3",
|
||||
"pyarrow": "24.0.0",
|
||||
"torch": "2.12.1",
|
||||
"torchvision": "0.27.1"
|
||||
},
|
||||
"rows": 45,
|
||||
"results_sha256": "14b15c16ea8a43523fdc929641b8ad5741445435203d1511ecb698097da0a806",
|
||||
"layer": "1.5",
|
||||
"tier": "speciation_real"
|
||||
}
|
||||
31
results/speciation_real/resolved_config.yaml
Normal file
31
results/speciation_real/resolved_config.yaml
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
experiment: speciation_real
|
||||
seed: 13
|
||||
n_replicates: 3
|
||||
source_config:
|
||||
experiment: speciation_real
|
||||
kind: speciation_real
|
||||
seed: 13
|
||||
n_replicates: 3
|
||||
speciation_real:
|
||||
sizes:
|
||||
- 784
|
||||
- 512
|
||||
- 512
|
||||
- 10
|
||||
conditions:
|
||||
- shared
|
||||
- independent
|
||||
- conflict
|
||||
t_div:
|
||||
- 100
|
||||
- 200
|
||||
- 400
|
||||
- 800
|
||||
- 1600
|
||||
base_steps: 500
|
||||
lr: 0.05
|
||||
batch: 128
|
||||
n_eval: 2000
|
||||
data_root: data
|
||||
output:
|
||||
dir: results/speciation_real
|
||||
BIN
results/speciation_real/speciation_real.pdf
Normal file
BIN
results/speciation_real/speciation_real.pdf
Normal file
Binary file not shown.
BIN
results/speciation_real/speciation_real.png
Normal file
BIN
results/speciation_real/speciation_real.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 136 KiB |
18
results/speciation_real_cliff/manifest.json
Normal file
18
results/speciation_real_cliff/manifest.json
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"experiment": "speciation_real_cliff",
|
||||
"master_seed": 13,
|
||||
"git_commit": "56f642e7f9ae01fe01d863bdffe98b226b9dbb7b",
|
||||
"python": "3.14.5",
|
||||
"libraries": {
|
||||
"numpy": "2.5.0",
|
||||
"scipy": "1.18.0",
|
||||
"pandas": "3.0.3",
|
||||
"pyarrow": "24.0.0",
|
||||
"torch": "2.12.1",
|
||||
"torchvision": "0.27.1"
|
||||
},
|
||||
"rows": 18,
|
||||
"results_sha256": "0252581d848376ad698f56d4e69edbcae40cf5a0f090203d6f723cfc5e25303c",
|
||||
"layer": "1.5",
|
||||
"tier": "speciation_real"
|
||||
}
|
||||
29
results/speciation_real_cliff/resolved_config.yaml
Normal file
29
results/speciation_real_cliff/resolved_config.yaml
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
experiment: speciation_real_cliff
|
||||
seed: 13
|
||||
n_replicates: 3
|
||||
source_config:
|
||||
experiment: speciation_real_cliff
|
||||
kind: speciation_real
|
||||
seed: 13
|
||||
n_replicates: 3
|
||||
speciation_real:
|
||||
sizes:
|
||||
- 784
|
||||
- 512
|
||||
- 512
|
||||
- 10
|
||||
conflict_fracs:
|
||||
- 0.0
|
||||
- 0.2
|
||||
- 0.4
|
||||
- 0.6
|
||||
- 0.8
|
||||
- 1.0
|
||||
t_div_fixed: 800
|
||||
base_steps: 500
|
||||
lr: 0.05
|
||||
batch: 128
|
||||
n_eval: 2000
|
||||
data_root: data
|
||||
output:
|
||||
dir: results/speciation_real_cliff
|
||||
Loading…
Add table
Add a link
Reference in a new issue