Manuscript revision and pending experiment work, snapshot before restructuring

Clarity pass over the main text (36-item audit), Discussion rewrite and cut,
acknowledgements, Souly et al. as ref 62, lettered SI panels, model section
moved under Results; plus the untracked curriculum/society/compose/smol
configs, runners, figures, stats and tests that the SI already cites.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y64o8FKP7rCuXzC48pxpMm
This commit is contained in:
Giorgio Gilestro 2026-09-13 16:54:09 +01:00
parent e4804adabc
commit 84124de143
450 changed files with 52813 additions and 1202 deletions

View file

@ -0,0 +1,38 @@
# llm_curriculum_v5_cull — differential reproduction in the six-generation population
**Claim tested (manuscript revision 2026-09-12).** In the six-generation population recombination
bought speed but not level: the declinable-merge arm led early and finished level with never merging.
The population had no differential reproduction (lineages were never culled), and the Discussion
predicted that with it a merged lineage's early lead would be inherited by more descendants and turn
into a level advantage. This run adds truncation selection: after every generation's measurement the
lowest-scoring lineage (all-families accuracy) is re-founded from the highest-scoring one, keeping
its own curriculum slot (`cull: true`; `cull_step`/`inherit_slot` in `src/llm/curriculum.py`;
ties leave the population alone). Arms: `isolated` + culling and declinable `society` + culling,
read against the existing `isolated` and `veto` arms. Latin square, Qwen2.5-1.5B, 3 training seeds
(`hpc/llm_cull.pbs`, ~35 min per seed on one L40S). Figure `curriculum_cull.png`; numbers from
`figures/stats_llm_curriculum.py` and the per-generation tables printed in the revision log.
### Result — parity again; the prediction is not supported
- **Final best-lineage accuracy (all six families), mean of 3 seeds:** never merge 0.796; declinable
merge 0.792; never merge + culling **0.804**; declinable merge + culling **0.793**.
- **Contrasts (per seed; mean ± 95% CI):** culled declinable culled never-merge 0.011, 0.014,
0.008 (**0.011 ± 0.003**, below in 3/3); culled declinable declinable +0.001 ± 0.007;
culled never-merge never-merge +0.007 ± 0.030 (0.022, +0.028, +0.017).
- **The early lead survives, the level does not.** Best lineage at generation 1: declinable 0.680
and culled declinable 0.679 against never-merge 0.601 and culled never-merge 0.638; by generation
5 all four sit at 0.780.80. Population mean: culling lifts the *mean* early (generation 1: 0.577
vs 0.477 for the never-merge arms) because the best genome is copied into the worst slot, but the
final means converge too (0.7750.786).
- **Selection was active throughout:** exactly one cull per generation in every arm and seed (no
ties); the culled slot rotated among all three lineages. Declines in the culled declinable arm
rose with generation as before (0.33 → 1.00).
- Retention of taught families at generation 6: 0.780.79 in all four arms.
**Reading.** Under a curriculum that delivers every skill to every lineage, the ceiling is set by
what one adapter can carry, and both sex and selection can only move a lineage toward that ceiling
faster. Selection spreads the best genome; recombination assembles it earlier; neither raises it.
The FisherMuller advantage in this population is a speed advantage, now shown with and without
differential reproduction. Falsifier for the null (not triggered): culled declinable above culled
never-merge in a majority of seeds by more than the seed-to-seed spread (~0.02). What would change
the prediction is a curriculum in which skills are *not* guaranteed to every lineage (a lineage that
never learns a family can only obtain it by merging), which is a different experiment.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

View file

@ -0,0 +1,50 @@
{
"experiment": "llm_curriculum_v5_cull",
"master_seed": 1,
"git_commit": null,
"python": "3.11.7",
"libraries": {
"numpy": "2.4.6",
"scipy": "1.17.1",
"pandas": "3.0.3",
"pyarrow": "24.0.0",
"torch": "2.12.1",
"transformers": "5.16.1",
"peft": "0.20.0"
},
"rows": 511,
"results_sha256": "88e21029f057d0a40274b6253ea83f0ff178d3386cf85bcbdfda069b25d1c1c4",
"layer": "2",
"tier": "llm",
"base_model": "Qwen/Qwen2.5-1.5B",
"hard": false,
"curriculum": {
"families": [
"mnli",
"arc",
"hellaswag",
"squad",
"boolq",
"winogrande"
],
"lineages": 3,
"generations": 6,
"arms": [
"isolated",
"society"
],
"baselines": [],
"n_new": 300,
"n_replay": 150,
"operator": "linear",
"ancestor_depth": null,
"lora": {
"r": 16,
"alpha": 32
},
"allow_veto": true,
"merge_until": null,
"orders": null,
"cull": true
}
}

View file

@ -0,0 +1,47 @@
experiment: llm_curriculum_v5_cull
seed: 1
n_replicates: 1
source_config:
experiment: llm_curriculum_v5_cull
kind: llm_curriculum
base_model: Qwen/Qwen2.5-1.5B
seed: 1
families:
- mnli
- arc
- hellaswag
- squad
- boolq
- winogrande
lineages: 3
generations: 6
arms:
- isolated
- society
baselines: []
allow_veto: true
n_new: 300
n_replay: 150
n_test: 60
n_val: 20
epochs: 3
lr: 0.0001
operator: linear
merge_weights:
- - 0.5
- 0.5
- - 0.3
- 0.7
- - 0.7
- 0.3
max_new_tokens: 48
batch_size: 48
train_batch_size: 4
train_max_len: 512
lora:
r: 16
alpha: 32
output:
dir: results/llm_curriculum_v5_cull/s1
cull: true
n_replicates: 1

View file

@ -0,0 +1,50 @@
{
"experiment": "llm_curriculum_v5_cull",
"master_seed": 2,
"git_commit": null,
"python": "3.11.7",
"libraries": {
"numpy": "2.4.6",
"scipy": "1.17.1",
"pandas": "3.0.3",
"pyarrow": "24.0.0",
"torch": "2.12.1",
"transformers": "5.16.1",
"peft": "0.20.0"
},
"rows": 511,
"results_sha256": "104c6e6be137e2b9ac5969a611323b12773697576720502cca9bc950b33def3c",
"layer": "2",
"tier": "llm",
"base_model": "Qwen/Qwen2.5-1.5B",
"hard": false,
"curriculum": {
"families": [
"mnli",
"arc",
"hellaswag",
"squad",
"boolq",
"winogrande"
],
"lineages": 3,
"generations": 6,
"arms": [
"isolated",
"society"
],
"baselines": [],
"n_new": 300,
"n_replay": 150,
"operator": "linear",
"ancestor_depth": null,
"lora": {
"r": 16,
"alpha": 32
},
"allow_veto": true,
"merge_until": null,
"orders": null,
"cull": true
}
}

View file

@ -0,0 +1,47 @@
experiment: llm_curriculum_v5_cull
seed: 2
n_replicates: 1
source_config:
experiment: llm_curriculum_v5_cull
kind: llm_curriculum
base_model: Qwen/Qwen2.5-1.5B
seed: 2
families:
- mnli
- arc
- hellaswag
- squad
- boolq
- winogrande
lineages: 3
generations: 6
arms:
- isolated
- society
baselines: []
allow_veto: true
n_new: 300
n_replay: 150
n_test: 60
n_val: 20
epochs: 3
lr: 0.0001
operator: linear
merge_weights:
- - 0.5
- 0.5
- - 0.3
- 0.7
- - 0.7
- 0.3
max_new_tokens: 48
batch_size: 48
train_batch_size: 4
train_max_len: 512
lora:
r: 16
alpha: 32
output:
dir: results/llm_curriculum_v5_cull/s2
cull: true
n_replicates: 1

View file

@ -0,0 +1,50 @@
{
"experiment": "llm_curriculum_v5_cull",
"master_seed": 3,
"git_commit": null,
"python": "3.11.7",
"libraries": {
"numpy": "2.4.6",
"scipy": "1.17.1",
"pandas": "3.0.3",
"pyarrow": "24.0.0",
"torch": "2.12.1",
"transformers": "5.16.1",
"peft": "0.20.0"
},
"rows": 511,
"results_sha256": "2669b74029d85d4197dca9229e3b1ab8769177f18e05fd08615f7bc2790b2945",
"layer": "2",
"tier": "llm",
"base_model": "Qwen/Qwen2.5-1.5B",
"hard": false,
"curriculum": {
"families": [
"mnli",
"arc",
"hellaswag",
"squad",
"boolq",
"winogrande"
],
"lineages": 3,
"generations": 6,
"arms": [
"isolated",
"society"
],
"baselines": [],
"n_new": 300,
"n_replay": 150,
"operator": "linear",
"ancestor_depth": null,
"lora": {
"r": 16,
"alpha": 32
},
"allow_veto": true,
"merge_until": null,
"orders": null,
"cull": true
}
}

View file

@ -0,0 +1,47 @@
experiment: llm_curriculum_v5_cull
seed: 3
n_replicates: 1
source_config:
experiment: llm_curriculum_v5_cull
kind: llm_curriculum
base_model: Qwen/Qwen2.5-1.5B
seed: 3
families:
- mnli
- arc
- hellaswag
- squad
- boolq
- winogrande
lineages: 3
generations: 6
arms:
- isolated
- society
baselines: []
allow_veto: true
n_new: 300
n_replay: 150
n_test: 60
n_val: 20
epochs: 3
lr: 0.0001
operator: linear
merge_weights:
- - 0.5
- 0.5
- - 0.3
- 0.7
- - 0.7
- 0.3
max_new_tokens: 48
batch_size: 48
train_batch_size: 4
train_max_len: 512
lora:
r: 16
alpha: 32
output:
dir: results/llm_curriculum_v5_cull/s3
cull: true
n_replicates: 1