llm_merge_hpc: the 7B firm-up makes the Fisher-Muller sign decisive
Re-ran the specialist-merge experiment at a capable base (Qwen2.5-7B-Instruct, 200 tests/family) on one L40S GPU of Imperial's CX3 HPC (8 min walltime). The two caveats the 0.5B prototype left marginal are now resolved: - "exceeds every parent overall" is clean: both merges 0.87 vs best specialist 0.77 (+10 pts), and above every specialist on every family. - dilution vanishes: at 0.5B averaging diluted the lists-specialist (0.43->0.26); at 7B the merge beats it (0.62>0.57). Dilution was a small-model artefact -- a capable base composes rather than dilutes, which softens E4's "merge, don't average" once the parents are strong. The figure title is now data-driven (reports ">" for 7B, "~" for 0.5B). Adds the hpc/ smoke job script and the llm_merge walltime trim. Results synced to results/llm_merge_hpc/ (parquet gitignored per the reproducibility contract). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
38bb252c20
commit
585264d0b4
12 changed files with 140 additions and 22 deletions
49
results/llm_merge_hpc/README.md
Normal file
49
results/llm_merge_hpc/README.md
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
# llm_merge_hpc — recombining specialist LLMs at scale (7B, Imperial CX3; blueprint C2/C4)
|
||||
|
||||
**Claim tested.** The scale-up of `llm_merge`: at a *capable* base, does recombining decorrelated
|
||||
specialists produce a model that **exceeds every single parent overall** *and* stays competent across
|
||||
**all** families (the Fisher–Muller "offspring fitter than any parent" signature, E8) — the claim that
|
||||
was only marginal at 0.5 B? Run on one **L40S (46 GB)** GPU node of Imperial College's CX3 HPC
|
||||
(job walltime **8 min**).
|
||||
|
||||
**Setup.** Base model **Qwen2.5-7B-Instruct** (Apache-2.0). Same three *disjoint*, procedurally-
|
||||
generated task families with an **exact-match verifier** (the "reality that says no"): `lists`,
|
||||
`strings`, `arith`, deliberately hard so specialists decorrelate. One **LoRA specialist** (r=16,
|
||||
α=32, 3 epochs, 800 train tasks) is fine-tuned per family, then the base, each specialist, and two
|
||||
weight-space **merges** — `soup` (averaged LoRA deltas) and `ties` (sign-reconciled union) — are
|
||||
evaluated on a held-out mixed test set. Seed 1, **200 test tasks/family**.
|
||||
|
||||
### Results (accuracy)
|
||||
| model | lists | strings | arith | overall | **worst family** |
|
||||
|---|---|---|---|---|---|
|
||||
| base | 0.46 | 0.69 | 1.00 | 0.71 | 0.46 |
|
||||
| spec: lists | 0.57 | 0.74 | 1.00 | 0.77 | 0.57 |
|
||||
| spec: strings | 0.32 | 0.97 | 1.00 | 0.76 | 0.32 |
|
||||
| spec: arith | 0.47 | 0.80 | 0.96 | 0.74 | 0.47 |
|
||||
| **merge: soup** | **0.62** | **1.00** | 1.00 | **0.87** | **0.62** |
|
||||
| **merge: ties** | **0.62** | **1.00** | 0.99 | **0.87** | **0.62** |
|
||||
|
||||
### What holds (the 0.5 B caveats resolved)
|
||||
- **"Exceeds every parent overall" — now clean.** Both merges reach **0.87 overall**, above the best
|
||||
single specialist (lists, **0.77**) by a decisive 10 points, and above every specialist on every
|
||||
family (lists 0.62 > 0.57; strings 1.00 > 0.97; arith ≈ 1.00). This is the strict Fisher–Muller
|
||||
claim — offspring fitter than *any* parent — which was only marginal at 0.5 B and is now clean.
|
||||
- **"Retains all specialties" — sharper than ever.** The merges are the only models competent across
|
||||
**all** families: worst-family **0.62**, versus **≤ 0.57** for every specialist (strings-specialist
|
||||
collapses to 0.32 on lists). The generalist assembled from specialists dominates on both axes.
|
||||
- **The dilution is gone.** At 0.5 B, averaging *diluted* the lists-specialist (0.43 → 0.26). At 7 B
|
||||
the merge **exceeds** the lists-specialist on lists (0.62 > 0.57). A capable base has enough headroom
|
||||
that weight-space averaging composes rather than dilutes — the "merge, don't average" concern (E4)
|
||||
softens once the parents are strong. Soup and ties are indistinguishable at K=3 here.
|
||||
|
||||
### Takeaway
|
||||
**The scale-up firms up the sign the prototype left marginal.** At a capable base, recombining
|
||||
decorrelated specialists yields a model that beats every parent both overall and per-family, with no
|
||||
dilution — the sexual-reproduction / Fisher–Muller claim reproduced cleanly in real LLM weights. The
|
||||
0.5 B `llm_merge` prototype de-risked the pipeline and flagged dilution as the risk; the 7B run shows
|
||||
that risk is a small-model artefact. **Falsifier (not triggered):** a single specialist matching or
|
||||
beating the merge overall — here the merge leads by 10 points. Provenance: L40S, torch 2.12.1 /
|
||||
transformers 5.13.0 / peft 0.19.1, `manifest.json` records the results hash and library versions.
|
||||
|
||||
*Note: this run's `manifest.json` has `git_commit: null` because it was produced on the HPC node from
|
||||
an rsync'd (non-git) working copy; the committed artefacts here are the source of truth for the figure.*
|
||||
BIN
results/llm_merge_hpc/llm_merge.pdf
Normal file
BIN
results/llm_merge_hpc/llm_merge.pdf
Normal file
Binary file not shown.
BIN
results/llm_merge_hpc/llm_merge.png
Normal file
BIN
results/llm_merge_hpc/llm_merge.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 121 KiB |
20
results/llm_merge_hpc/manifest.json
Normal file
20
results/llm_merge_hpc/manifest.json
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"experiment": "llm_merge_hpc",
|
||||
"master_seed": 1,
|
||||
"git_commit": null,
|
||||
"python": "3.11.13",
|
||||
"libraries": {
|
||||
"numpy": "2.4.6",
|
||||
"scipy": "1.17.1",
|
||||
"pandas": "3.0.3",
|
||||
"pyarrow": "24.0.0",
|
||||
"torch": "2.12.1",
|
||||
"transformers": "5.13.0",
|
||||
"peft": "0.19.1"
|
||||
},
|
||||
"rows": 30,
|
||||
"results_sha256": "6cc0a07c66ba92a379d895d6d6707591aced48f06eee895bb4f6c15d12e6e588",
|
||||
"layer": "2",
|
||||
"tier": "llm",
|
||||
"base_model": "Qwen/Qwen2.5-7B-Instruct"
|
||||
}
|
||||
24
results/llm_merge_hpc/resolved_config.yaml
Normal file
24
results/llm_merge_hpc/resolved_config.yaml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
experiment: llm_merge_hpc
|
||||
seed: 1
|
||||
n_replicates: 1
|
||||
source_config:
|
||||
experiment: llm_merge_hpc
|
||||
kind: llm_merge
|
||||
seed: 1
|
||||
n_replicates: 1
|
||||
base_model: Qwen/Qwen2.5-7B-Instruct
|
||||
families:
|
||||
- lists
|
||||
- strings
|
||||
- arith
|
||||
n_train: 800
|
||||
n_test: 200
|
||||
epochs: 3
|
||||
lora:
|
||||
r: 16
|
||||
alpha: 32
|
||||
merges:
|
||||
- soup
|
||||
- ties
|
||||
output:
|
||||
dir: results/llm_merge_hpc
|
||||
Loading…
Add table
Add a link
Reference in a new issue