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,35 @@
# llm_curriculum_v5_stop3 — forced stop at generation 3 (control for the declinable merge)
Config `configs/llm/curriculum_v5_stop3.yaml`: the v5 `society` arm (three lineages, six real-dataset
families in a Latin square, Qwen2.5-1.5B base, rank-16 adapters continued from the parent) with
recombination switched off from generation 3 (`merge_until: 3`, no veto). Generations 02 merge
obligately; 35 never. Pre-registered in `tasks/prereg-llm-society-v4.md` §8h before running.
Seed 1 local (batch 24 / train batch 2); seeds 23 on CX3 via `hpc/llm_curriculum_controls.pbs`
(batch 48 / train batch 4), as in the v5 campaign. Layout: `results.parquet` (seed 1), `s2/`, `s3/`.
Why: in the seed-1 veto run lineages declined 1/3 of merges at generations 02 and 3/3 at 35, so
this is the fixed schedule the declinable merge's *timing* must be separated from.
## Result (best lineage, all six families, generation 5; `figures/stats_llm_curriculum.py`)
| arm | s1 | s2 | s3 | mean |
|---|---|---|---|---|
| forced stop at 3 (this run) | 0.792 | 0.794 | 0.792 | 0.793 |
| declinable merge (veto) | 0.783 | 0.789 | 0.803 | 0.792 |
| never merge (isolated) | 0.814 | 0.783 | 0.792 | 0.796 |
| always merge (society) | 0.211 | 0.247 | 0.350 | 0.269 |
| contrast | s1 | s2 | s3 | mean ± 95% CI |
|---|---|---|---|---|
| veto stop3 | 0.008 | 0.006 | +0.011 | 0.001 ± 0.012 |
| stop3 isolated | 0.022 | +0.011 | 0.000 | 0.004 ± 0.019 |
| stop3 society | +0.581 | +0.547 | +0.442 | +0.523 ± 0.082 |
Pre-registered reading (§8h, first branch): the forced stop matches the veto within ±0.03 in every
seed, so the declinable merge's final accuracy is explained by *when* it stopped merging. What the
veto adds is that it found that schedule by measurement rather than by having it set in advance;
the claim that per-decision evaluation adds value beyond timing is not supported here. Both
non-obligate schedules avoid the collapse of obligate merging (+0.52 over `society`).
Falsifier status: the paper's caveat "the control separating the modifier's timing from a fixed
early stop was not run" is removed; the modifier claim is reduced accordingly.

View file

@ -0,0 +1,48 @@
{
"experiment": "llm_curriculum_v5_stop3",
"master_seed": 1,
"git_commit": "e4804adabcdce6d928c5e6b1e85429b2a6acf2fe",
"python": "3.14.7",
"libraries": {
"numpy": "2.5.0",
"scipy": "1.18.0",
"pandas": "3.0.3",
"pyarrow": "24.0.0",
"torch": "2.12.1",
"transformers": "5.16.1",
"peft": "0.20.0"
},
"rows": 205,
"results_sha256": "a2096209e2203a6e6295a6deca1bc6a45b5894e6a2c74e267444a0cd7c97174d",
"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": [
"society"
],
"baselines": [],
"n_new": 300,
"n_replay": 150,
"operator": "linear",
"ancestor_depth": null,
"lora": {
"r": 16,
"alpha": 32
},
"allow_veto": false,
"merge_until": 3,
"orders": null
}
}

View file

@ -0,0 +1,46 @@
experiment: llm_curriculum_v5_stop3
seed: 1
n_replicates: 1
source_config:
experiment: llm_curriculum_v5_stop3
kind: llm_curriculum
base_model: Qwen/Qwen2.5-1.5B
seed: 1
families:
- mnli
- arc
- hellaswag
- squad
- boolq
- winogrande
lineages: 3
generations: 6
arms:
- society
baselines: []
allow_veto: false
merge_until: 3
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: 24
train_batch_size: 2
train_max_len: 512
lora:
r: 16
alpha: 32
output:
dir: results/llm_curriculum_v5_stop3
n_replicates: 1

View file

@ -0,0 +1,48 @@
{
"experiment": "llm_curriculum_v5_stop3",
"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": 205,
"results_sha256": "cdcd68e8f66fcc48974633eeb31e88fafe318b7f821145393291d2402607dd18",
"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": [
"society"
],
"baselines": [],
"n_new": 300,
"n_replay": 150,
"operator": "linear",
"ancestor_depth": null,
"lora": {
"r": 16,
"alpha": 32
},
"allow_veto": false,
"merge_until": 3,
"orders": null
}
}

View file

@ -0,0 +1,46 @@
experiment: llm_curriculum_v5_stop3
seed: 2
n_replicates: 1
source_config:
experiment: llm_curriculum_v5_stop3
kind: llm_curriculum
base_model: Qwen/Qwen2.5-1.5B
seed: 2
families:
- mnli
- arc
- hellaswag
- squad
- boolq
- winogrande
lineages: 3
generations: 6
arms:
- society
baselines: []
allow_veto: false
merge_until: 3
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_stop3/s2
n_replicates: 1

View file

@ -0,0 +1,48 @@
{
"experiment": "llm_curriculum_v5_stop3",
"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": 205,
"results_sha256": "1a924dad6710b9258dffb70e4496b0c4480e36ab8c7f76dae1a1c669e023b382",
"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": [
"society"
],
"baselines": [],
"n_new": 300,
"n_replay": 150,
"operator": "linear",
"ancestor_depth": null,
"lora": {
"r": 16,
"alpha": 32
},
"allow_veto": false,
"merge_until": 3,
"orders": null
}
}

View file

@ -0,0 +1,46 @@
experiment: llm_curriculum_v5_stop3
seed: 3
n_replicates: 1
source_config:
experiment: llm_curriculum_v5_stop3
kind: llm_curriculum
base_model: Qwen/Qwen2.5-1.5B
seed: 3
families:
- mnli
- arc
- hellaswag
- squad
- boolq
- winogrande
lineages: 3
generations: 6
arms:
- society
baselines: []
allow_veto: false
merge_until: 3
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_stop3/s3
n_replicates: 1