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:
parent
e4804adabc
commit
84124de143
450 changed files with 52813 additions and 1202 deletions
48
results/llm_curriculum_v5_early/README.md
Normal file
48
results/llm_curriculum_v5_early/README.md
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
# Conflict-arrival curricula — does the decline (and the collapse) follow conflict, or generation?
|
||||
|
||||
**Claim tested (manuscript revision 2026-09-12).** In the Latin-square population the fraction of
|
||||
merges a lineage declines rose with generation, and the obligate-merge arm collapsed from generation
|
||||
4. Three things rise together there: adapter age, skill count, and the arrival of the two families
|
||||
whose answer conventions conflict (`boolq` yes/no, `winogrande` 1/2). The decorrelated curriculum
|
||||
separated complementarity from generation but not conflict arrival. These two curricula move ONLY
|
||||
conflict arrival: **conflict-early** puts `boolq`/`winogrande` in generations 1–2 of every lineage;
|
||||
**conflict-late** puts them in generations 5–6; the four compatible families fill the rest in
|
||||
rotated orders. Age and skill count rise one family per generation in both (tested in
|
||||
`tests/test_llm_curriculum.py`). Pre-registered readings: declines and collapse at generations 2–3
|
||||
in early and 5–6 in late → conflict arrival drives them; the same rise/collapse schedule in both →
|
||||
age or skill count.
|
||||
|
||||
**Setup.** As `curriculum_v5` (Qwen2.5-1.5B base, 3 lineages, 6 generations, 300 new + 150 replay
|
||||
examples, rank-16 LoRA, 60 test items per family). Configs: `curriculum_v5_{early,late}.yaml`
|
||||
(arms `isolated` + declinable `society`) and `curriculum_v5_{early,late}_obl.yaml` (obligate
|
||||
`society`). Seeds 1–3 via `hpc/llm_curriculum_timing.pbs` (L40S, 20–40 min per element). Bundles:
|
||||
`results/llm_curriculum_v5_{early,late,early_obl,late_obl}/s{seed}/`. Figure
|
||||
`curriculum_timing.png` (this directory); numbers below from `figures/stats_llm_curriculum.py`.
|
||||
|
||||
### Result — generation, not conflict arrival
|
||||
- **Declines rise with generation in both curricula on the same schedule** (mean fraction declined,
|
||||
generations 1→6; conflict present from generation 2 in early, 6 in late):
|
||||
early 0.56, 0.33, 0.67, 0.67, 0.89, 0.78 · late 0.44, 0.67, 0.44, 0.56, 0.78, 0.89
|
||||
(Latin 0.44 → 1.00; decorrelated 0.44 → 0.89).
|
||||
- **Conflict-timing test** (partial Spearman of declined on a conflict-present indicator,
|
||||
controlling for generation; seed-clustered bootstrap): early + late pooled, n = 36:
|
||||
ρ(conflict | generation) = **−0.09**, 95% CI (−0.45, 0.15); ρ(generation | conflict) = **+0.45**.
|
||||
All four curricula pooled, n = 72: ρ(conflict | generation) = −0.04, CI (−0.30, 0.15);
|
||||
ρ(generation | conflict) = +0.39. Complementarity, pooled over four curricula with generation
|
||||
controlled: +0.05, CI (−0.08, 0.20).
|
||||
- **Obligate collapse also follows generation.** Best-lineage all-families accuracy of the obligate
|
||||
arm, generations 1→6, mean of 3 seeds: early 0.63, 0.61, 0.72, 0.68, 0.50, 0.28 · late 0.75,
|
||||
0.76, 0.71, 0.61, 0.57, 0.44 (Latin 0.68 … 0.27). Conflict-early dips when the pair arrives
|
||||
(generation 2), recovers to the others' level by generation 3, and collapses from generation 5;
|
||||
conflict-late collapses from generation 4 with its conflicting pair still to come, and ends
|
||||
less deep. Final obligate − isolated: early −0.517 ± 0.050, late −0.395 ± 0.053 (3/3 seeds each).
|
||||
- **Declinable arms finish level with never merging in both curricula:** early 0.777 vs 0.796
|
||||
(per seed −0.022, −0.039, +0.003), late 0.791 vs 0.781 (+0.019, +0.003, +0.006).
|
||||
|
||||
**Reading.** With conflict arrival moved by four generations, neither the decline curve nor the
|
||||
collapse moved with it. What remains confounded is adapter age with skill count (both rise one per
|
||||
generation by construction). The recombination-modifier reading (declines track complementarity)
|
||||
stays unsupported; the "conflict arrival explains the collapse" reading is now also unsupported at
|
||||
the level of timing, though conflicting conventions still set the per-pair error floor
|
||||
(Proposition S2) and the early-arrival dip is visible. Falsifier for the generation reading (not
|
||||
triggered): declines or collapse shifting by ≥ 3 generations between the two curricula.
|
||||
BIN
results/llm_curriculum_v5_early/curriculum_timing.pdf
Normal file
BIN
results/llm_curriculum_v5_early/curriculum_timing.pdf
Normal file
Binary file not shown.
BIN
results/llm_curriculum_v5_early/curriculum_timing.png
Normal file
BIN
results/llm_curriculum_v5_early/curriculum_timing.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 151 KiB |
75
results/llm_curriculum_v5_early/s1/manifest.json
Normal file
75
results/llm_curriculum_v5_early/s1/manifest.json
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
{
|
||||
"experiment": "llm_curriculum_v5_early",
|
||||
"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": 439,
|
||||
"results_sha256": "acbf0fd695b12a33c352a5aed5ef719476c0638002eeb3e190914b5e239bc820",
|
||||
"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": [
|
||||
[
|
||||
"boolq",
|
||||
"winogrande",
|
||||
"mnli",
|
||||
"arc",
|
||||
"hellaswag",
|
||||
"squad"
|
||||
],
|
||||
[
|
||||
"winogrande",
|
||||
"boolq",
|
||||
"arc",
|
||||
"hellaswag",
|
||||
"squad",
|
||||
"mnli"
|
||||
],
|
||||
[
|
||||
"boolq",
|
||||
"winogrande",
|
||||
"hellaswag",
|
||||
"squad",
|
||||
"mnli",
|
||||
"arc"
|
||||
]
|
||||
],
|
||||
"cull": null
|
||||
}
|
||||
}
|
||||
BIN
results/llm_curriculum_v5_early/s1/partial_isolated_s1.parquet
Normal file
BIN
results/llm_curriculum_v5_early/s1/partial_isolated_s1.parquet
Normal file
Binary file not shown.
BIN
results/llm_curriculum_v5_early/s1/partial_society_s1.parquet
Normal file
BIN
results/llm_curriculum_v5_early/s1/partial_society_s1.parquet
Normal file
Binary file not shown.
65
results/llm_curriculum_v5_early/s1/resolved_config.yaml
Normal file
65
results/llm_curriculum_v5_early/s1/resolved_config.yaml
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
experiment: llm_curriculum_v5_early
|
||||
seed: 1
|
||||
n_replicates: 1
|
||||
source_config:
|
||||
experiment: llm_curriculum_v5_early
|
||||
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_early/s1
|
||||
orders:
|
||||
- - boolq
|
||||
- winogrande
|
||||
- mnli
|
||||
- arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- - winogrande
|
||||
- boolq
|
||||
- arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- - boolq
|
||||
- winogrande
|
||||
- hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- arc
|
||||
n_replicates: 1
|
||||
75
results/llm_curriculum_v5_early/s2/manifest.json
Normal file
75
results/llm_curriculum_v5_early/s2/manifest.json
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
{
|
||||
"experiment": "llm_curriculum_v5_early",
|
||||
"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": 439,
|
||||
"results_sha256": "dd5697baee62e082eeb8b90321cd030317d0af91664a79c094b68f845f577cc2",
|
||||
"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": [
|
||||
[
|
||||
"boolq",
|
||||
"winogrande",
|
||||
"mnli",
|
||||
"arc",
|
||||
"hellaswag",
|
||||
"squad"
|
||||
],
|
||||
[
|
||||
"winogrande",
|
||||
"boolq",
|
||||
"arc",
|
||||
"hellaswag",
|
||||
"squad",
|
||||
"mnli"
|
||||
],
|
||||
[
|
||||
"boolq",
|
||||
"winogrande",
|
||||
"hellaswag",
|
||||
"squad",
|
||||
"mnli",
|
||||
"arc"
|
||||
]
|
||||
],
|
||||
"cull": null
|
||||
}
|
||||
}
|
||||
BIN
results/llm_curriculum_v5_early/s2/partial_isolated_s2.parquet
Normal file
BIN
results/llm_curriculum_v5_early/s2/partial_isolated_s2.parquet
Normal file
Binary file not shown.
BIN
results/llm_curriculum_v5_early/s2/partial_society_s2.parquet
Normal file
BIN
results/llm_curriculum_v5_early/s2/partial_society_s2.parquet
Normal file
Binary file not shown.
65
results/llm_curriculum_v5_early/s2/resolved_config.yaml
Normal file
65
results/llm_curriculum_v5_early/s2/resolved_config.yaml
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
experiment: llm_curriculum_v5_early
|
||||
seed: 2
|
||||
n_replicates: 1
|
||||
source_config:
|
||||
experiment: llm_curriculum_v5_early
|
||||
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_early/s2
|
||||
orders:
|
||||
- - boolq
|
||||
- winogrande
|
||||
- mnli
|
||||
- arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- - winogrande
|
||||
- boolq
|
||||
- arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- - boolq
|
||||
- winogrande
|
||||
- hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- arc
|
||||
n_replicates: 1
|
||||
75
results/llm_curriculum_v5_early/s3/manifest.json
Normal file
75
results/llm_curriculum_v5_early/s3/manifest.json
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
{
|
||||
"experiment": "llm_curriculum_v5_early",
|
||||
"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": 439,
|
||||
"results_sha256": "3d69712e820af51ae2263b9d20d62a9c5e0d0a34d06d678b48e1116f4b740ac3",
|
||||
"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": [
|
||||
[
|
||||
"boolq",
|
||||
"winogrande",
|
||||
"mnli",
|
||||
"arc",
|
||||
"hellaswag",
|
||||
"squad"
|
||||
],
|
||||
[
|
||||
"winogrande",
|
||||
"boolq",
|
||||
"arc",
|
||||
"hellaswag",
|
||||
"squad",
|
||||
"mnli"
|
||||
],
|
||||
[
|
||||
"boolq",
|
||||
"winogrande",
|
||||
"hellaswag",
|
||||
"squad",
|
||||
"mnli",
|
||||
"arc"
|
||||
]
|
||||
],
|
||||
"cull": null
|
||||
}
|
||||
}
|
||||
BIN
results/llm_curriculum_v5_early/s3/partial_isolated_s3.parquet
Normal file
BIN
results/llm_curriculum_v5_early/s3/partial_isolated_s3.parquet
Normal file
Binary file not shown.
BIN
results/llm_curriculum_v5_early/s3/partial_society_s3.parquet
Normal file
BIN
results/llm_curriculum_v5_early/s3/partial_society_s3.parquet
Normal file
Binary file not shown.
65
results/llm_curriculum_v5_early/s3/resolved_config.yaml
Normal file
65
results/llm_curriculum_v5_early/s3/resolved_config.yaml
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
experiment: llm_curriculum_v5_early
|
||||
seed: 3
|
||||
n_replicates: 1
|
||||
source_config:
|
||||
experiment: llm_curriculum_v5_early
|
||||
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_early/s3
|
||||
orders:
|
||||
- - boolq
|
||||
- winogrande
|
||||
- mnli
|
||||
- arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- - winogrande
|
||||
- boolq
|
||||
- arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- - boolq
|
||||
- winogrande
|
||||
- hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- arc
|
||||
n_replicates: 1
|
||||
Loading…
Add table
Add a link
Reference in a new issue