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
31
configs/llm/compose_gate.yaml
Normal file
31
configs/llm/compose_gate.yaml
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# Generation-0 gate for the composition experiment (prereg v3 §4: C1 base, C3 specialists,
|
||||
# C4 replication). Trains the two founders and measures everything at t=0 without iterating.
|
||||
#
|
||||
# Base choice (C1, measured 2026-09-07): Qwen2.5-1.5B **base, not Instruct**. Zero-shot GSM-Hard
|
||||
# program-aided: Instruct-1.5B 0.500, Instruct-3B 0.417, base-3B 0.633 — all far too strong, since a
|
||||
# base that already has the skills makes the specialists' contribution vacuous. Base-1.5B scores
|
||||
# 0.067, within noise of the 0.059 Llama-2-7B starting point in LoRA Soups (COLING 2025), so the
|
||||
# published composition effect has room to appear.
|
||||
experiment: llm_compose_gate
|
||||
kind: llm_compose
|
||||
base_model: Qwen/Qwen2.5-1.5B
|
||||
seed: 1
|
||||
generations: 0 # gate only: train founders, measure t=0, stop
|
||||
arms: [dry]
|
||||
n_hard: 150 # composed target (GSM8k-Hard, program-aided) — SE ~0.04
|
||||
n_gsm8k: 100 # math own-skill probe
|
||||
n_mbpp: 80 # code own-skill probe (execution-verified)
|
||||
n_probe: 40 # shared prompts for rho
|
||||
k_inherit: 300
|
||||
epochs: 3
|
||||
conf_gate: 0.85
|
||||
g: 0.10
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
max_new_tokens: 320
|
||||
batch_size: 16
|
||||
score_batch_size: 4
|
||||
train_batch_size: 2 # 16 GB A4000; the fp32 logit upcast at vocab 152k is the constraint
|
||||
train_max_len: 448
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_compose_gate}
|
||||
34
configs/llm/compose_gate_math500.yaml
Normal file
34
configs/llm/compose_gate_math500.yaml
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
# Generation-0 gate, second configuration (prereg v3 §4a): the composed target is MATH-500
|
||||
# (competition maths, level >= 3, numeric answers), and merge weights are *selected* on a disjoint
|
||||
# validation split rather than fixed at 0.5/0.5.
|
||||
#
|
||||
# Why: on GSM8k-Hard the code parent alone reaches 0.427, because once code removes the arithmetic
|
||||
# burden the base's own reasoning suffices — so maths is not scarce and E8's premise fails. MetaMathQA
|
||||
# is built from GSM8K *and* MATH, so MATH-500 tests reasoning the specialist has and the base lacks.
|
||||
# Founders are shared with the first gate (same experiment name), so this costs evaluation only.
|
||||
experiment: llm_compose_gate
|
||||
kind: llm_compose
|
||||
base_model: Qwen/Qwen2.5-1.5B
|
||||
seed: 1
|
||||
generations: 0
|
||||
arms: [dry]
|
||||
target: math500
|
||||
n_hard: 120 # test split (level>=3 pool is 271; 70% test / 30% val, disjoint)
|
||||
n_hard_val: 50 # val split, screens the merge weights only
|
||||
merge_weights: [[0.5, 0.5], [0.3, 0.7], [0.2, 0.8]]
|
||||
n_gsm8k: 100
|
||||
n_mbpp: 80
|
||||
n_probe: 40
|
||||
k_inherit: 300
|
||||
epochs: 3
|
||||
conf_gate: 0.85
|
||||
g: 0.10
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
max_new_tokens: 320
|
||||
batch_size: 16
|
||||
score_batch_size: 8
|
||||
train_batch_size: 2
|
||||
train_max_len: 448
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_compose_gate_math500}
|
||||
55
configs/llm/compose_s1.yaml
Normal file
55
configs/llm/compose_s1.yaml
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
# The composition campaign, seed 1 (prereg v3, amended after the generation-0 sweep of 2026-09-07).
|
||||
#
|
||||
# Arms. The gen-0 sweep found that the merge *weighting* dominates the operator: the a-priori 0.5/0.5
|
||||
# blend fails under both operators (surplus -0.020 cat, -0.093 linear) while a selected weight passes
|
||||
# (+0.080 linear at 0.2/0.8, +0.027 cat at 0.3/0.7). Weights are therefore chosen each generation on a
|
||||
# disjoint validation split (E10, directed recombination) in every arm, and the operator is an
|
||||
# explicit per-arm setting:
|
||||
# dry — linear operator, no grounding [H2, H3, H5: does composition survive drift?]
|
||||
# grounded — linear operator, g = 0.10 [H4: does immigration arrest it?]
|
||||
# dry_cat — concatenation operator, no grounding [H6, revised: does the operator ordering hold
|
||||
# across generations, or only at gen 0?]
|
||||
experiment: llm_compose
|
||||
kind: llm_compose
|
||||
base_model: Qwen/Qwen2.5-1.5B
|
||||
seed: 1
|
||||
generations: 6
|
||||
arms:
|
||||
- dry
|
||||
- grounded
|
||||
- dry_cat
|
||||
g: 0.1
|
||||
n_hard: 150
|
||||
n_gsm8k: 150
|
||||
n_mbpp: 100
|
||||
n_probe: 60
|
||||
k_inherit: 300
|
||||
epochs: 3
|
||||
conf_gate: 0.85
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
max_new_tokens: 320
|
||||
batch_size: 16
|
||||
score_batch_size: 4
|
||||
train_batch_size: 2
|
||||
train_max_len: 448
|
||||
resume: true
|
||||
lora:
|
||||
r: 16
|
||||
alpha: 32
|
||||
output:
|
||||
dir: results/llm_compose/s1
|
||||
arm_ops:
|
||||
dry: linear
|
||||
grounded: linear
|
||||
dry_cat: cat
|
||||
n_hard_val: 60
|
||||
merge_weights:
|
||||
- - 0.5
|
||||
- 0.5
|
||||
- - 0.3
|
||||
- 0.7
|
||||
- - 0.2
|
||||
- 0.8
|
||||
- - 0.1
|
||||
- 0.9
|
||||
27
configs/llm/curriculum_g2.yaml
Normal file
27
configs/llm/curriculum_g2.yaml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# G2 probe (prereg v4 §5): does forgetting occur AT ALL under the real curriculum length?
|
||||
# The 3-family gate showed none — but with only 3 families, ample adapter capacity and a generous
|
||||
# replay budget, none was expected. This runs the full nine-family curriculum on ONE lineage with
|
||||
# replay switched OFF, which is the harshest condition the design can offer. If early families still
|
||||
# do not decay, the families are too mutually compatible and too easy for their own good, and the
|
||||
# society has no forgetting to rescue — a design-level stop.
|
||||
experiment: llm_curriculum_g2
|
||||
kind: llm_curriculum
|
||||
base_model: Qwen/Qwen2.5-1.5B
|
||||
seed: 1
|
||||
families: [strings, setops, numtheory, mixedtoken, digits, alphabet, prime, wordlen, roman]
|
||||
lineages: 1
|
||||
generations: 9
|
||||
arms: [isolated]
|
||||
baselines: []
|
||||
n_new: 300
|
||||
n_replay: 0 # replay OFF — the harshest forgetting condition
|
||||
n_test: 60
|
||||
n_val: 30
|
||||
epochs: 3
|
||||
lr: 1.0e-4
|
||||
max_new_tokens: 32
|
||||
batch_size: 32
|
||||
train_batch_size: 2
|
||||
train_max_len: 448
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_curriculum_g2}
|
||||
28
configs/llm/curriculum_gate.yaml
Normal file
28
configs/llm/curriculum_gate.yaml
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# Gate run for the curriculum society (prereg v4 §5). G0 is the decisive one: with a single lineage
|
||||
# and no recombination, does cumulative capability CLIMB across generations? If capability cannot
|
||||
# accumulate in the simplest arm, no outcome of the full design is interpretable — stop.
|
||||
# Also exercises G1 (inheritance transmits), G2 (forgetting occurs without full replay) and, with
|
||||
# lineages=3, G3 (recombination combines disjoint knowledge).
|
||||
experiment: llm_curriculum_gate
|
||||
kind: llm_curriculum
|
||||
base_model: Qwen/Qwen2.5-1.5B
|
||||
seed: 1
|
||||
families: [strings, setops, numtheory] # 3 families, 3 generations — the smallest climb test
|
||||
lineages: 3
|
||||
generations: 3
|
||||
arms: [isolated, society]
|
||||
baselines: []
|
||||
n_new: 300
|
||||
n_replay: 120
|
||||
n_test: 60
|
||||
n_val: 30
|
||||
epochs: 3
|
||||
lr: 1.0e-4
|
||||
operator: linear
|
||||
merge_weights: [[0.5, 0.5], [0.3, 0.7], [0.7, 0.3]]
|
||||
max_new_tokens: 32
|
||||
batch_size: 32
|
||||
train_batch_size: 2
|
||||
train_max_len: 448
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_curriculum_gate}
|
||||
27
configs/llm/curriculum_v5_calib.yaml
Normal file
27
configs/llm/curriculum_v5_calib.yaml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Calibration for the real-dataset curriculum (prereg v4 §5 gates, re-run on the new families).
|
||||
# Stage A (this config): base accuracy on every candidate, and one specialist per candidate trained
|
||||
# from the base on its train split — the C1 band is base <= 0.40 and specialist >= 0.60.
|
||||
# Stage B (curriculum_v5_g2.yaml, after selection): one lineage, zero replay, all chosen families in
|
||||
# sequence — the forgetting probe; mean drop across families learned before the last must be >= 0.15,
|
||||
# and it must not be carried by a single family (the v4 failure: one pair at +0.65, the rest ~0).
|
||||
experiment: llm_curriculum_v5_calib
|
||||
kind: llm_curriculum
|
||||
base_model: Qwen/Qwen2.5-1.5B
|
||||
seed: 1
|
||||
families: [gsm8k, mbpp, boolq, mnli, sst2, csqa, arc, winogrande, squad, nq_open, hellaswag]
|
||||
lineages: 11 # one lineage per candidate = each trains only its own family at gen 0
|
||||
generations: 1 # gen 0 only: founders; the recorded acc_* rows ARE the specialist table
|
||||
arms: [isolated]
|
||||
baselines: []
|
||||
n_new: 300
|
||||
n_replay: 0
|
||||
n_test: 60
|
||||
n_val: 20
|
||||
epochs: 3
|
||||
lr: 1.0e-4
|
||||
max_new_tokens: 48 # spans / short text need more room than a label
|
||||
batch_size: 24
|
||||
train_batch_size: 2
|
||||
train_max_len: 512
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_curriculum_v5_calib}
|
||||
24
configs/llm/curriculum_v5_calib_b.yaml
Normal file
24
configs/llm/curriculum_v5_calib_b.yaml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# Stage A, second pass: the six candidates that missed the C1 band at 300 founder examples, retrained
|
||||
# at the budget every working specialist in this project has used (v2, v3: 1200 x 3 epochs).
|
||||
# Decides whether the curriculum has six families or nine.
|
||||
experiment: llm_curriculum_v5_calib_b
|
||||
kind: llm_curriculum
|
||||
base_model: Qwen/Qwen2.5-1.5B
|
||||
seed: 1
|
||||
families: [gsm8k, mbpp, sst2, csqa, winogrande, nq_open]
|
||||
lineages: 6
|
||||
generations: 1
|
||||
arms: [isolated]
|
||||
baselines: []
|
||||
n_new: 1200
|
||||
n_replay: 0
|
||||
n_test: 60
|
||||
n_val: 20
|
||||
epochs: 3
|
||||
lr: 1.0e-4
|
||||
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_calib_b}
|
||||
48
configs/llm/curriculum_v5_cull.yaml
Normal file
48
configs/llm/curriculum_v5_cull.yaml
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
# Differential reproduction (manuscript revision 2026-09-12): `cull: true` re-founds the lowest-scoring
|
||||
# lineage from the highest-scoring one after every generation's measurement (truncation selection at
|
||||
# fixed N = 3; the slot keeps its curriculum order). Latin square as in v5. Arms: isolated + cull
|
||||
# (selection without recombination) and declinable society + cull (selection with recombination),
|
||||
# read against the existing isolated and veto arms. Prediction (Discussion): recombination's early
|
||||
# lead becomes a level advantage; parity again is the null. Seeds via hpc/llm_cull.pbs.
|
||||
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: 24
|
||||
train_batch_size: 2
|
||||
train_max_len: 512
|
||||
lora:
|
||||
r: 16
|
||||
alpha: 32
|
||||
output:
|
||||
dir: results/llm_curriculum_v5_cull
|
||||
cull: true
|
||||
35
configs/llm/curriculum_v5_decor.yaml
Normal file
35
configs/llm/curriculum_v5_decor.yaml
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
# Decorrelated curriculum (manuscript review, 2026-09-11). In the Latin square partner complementarity
|
||||
# falls monotonically with generation (1.0, 1.0, 0.8, 0.67, 0.33, 0.0), so the veto's acceptance curve
|
||||
# is collinear with adapter age. Here every lineage starts with the same non-destroyer family (mnli),
|
||||
# then diverges maximally, then converges: complementarity 0.00, 0.67, 0.70, 0.58, 0.33, 0.00 by
|
||||
# generation. Same six families, same G, destroyers (boolq, winogrande) spread across lineages as
|
||||
# in the Latin square. Arms: the declinable merge (`society` + `allow_veto`) and its never-merge
|
||||
# reference under the same curriculum. Pre-registered readout: tasks/prereg-llm-society-v4.md §8g.
|
||||
experiment: llm_curriculum_v5_decor
|
||||
kind: llm_curriculum
|
||||
base_model: Qwen/Qwen2.5-1.5B
|
||||
seed: 1
|
||||
families: [mnli, arc, hellaswag, squad, boolq, winogrande]
|
||||
orders:
|
||||
- [mnli, arc, hellaswag, squad, boolq, winogrande]
|
||||
- [mnli, squad, boolq, winogrande, arc, hellaswag]
|
||||
- [mnli, winogrande, arc, hellaswag, squad, boolq]
|
||||
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: 1.0e-4
|
||||
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_decor}
|
||||
66
configs/llm/curriculum_v5_early.yaml
Normal file
66
configs/llm/curriculum_v5_early.yaml
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
# Conflict-early curriculum (manuscript revision 2026-09-12): the two families whose answer
|
||||
# conventions conflict (boolq yes/no, winogrande 1/2) arrive in generations 1-2 of every lineage; the
|
||||
# four compatible families follow in rotated orders. Paired with curriculum_v5_late (same families,
|
||||
# conflict in generations 5-6) to decouple the ARRIVAL of conflicting conventions from adapter age and
|
||||
# skill count, which rise identically in both. Arms: isolated + declinable society (decline timing).
|
||||
# Seeds 1-3 via hpc/llm_curriculum_timing.pbs.
|
||||
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: 24
|
||||
train_batch_size: 2
|
||||
train_max_len: 512
|
||||
lora:
|
||||
r: 16
|
||||
alpha: 32
|
||||
output:
|
||||
dir: results/llm_curriculum_v5_early
|
||||
orders:
|
||||
- - boolq
|
||||
- winogrande
|
||||
- mnli
|
||||
- arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- - winogrande
|
||||
- boolq
|
||||
- arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- - boolq
|
||||
- winogrande
|
||||
- hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- arc
|
||||
61
configs/llm/curriculum_v5_early_obl.yaml
Normal file
61
configs/llm/curriculum_v5_early_obl.yaml
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# Obligate-merge arm of the conflict-early curriculum (collapse timing): same orders as
|
||||
# curriculum_v5_early, society arm only, no veto. Seeds 1-3 via hpc/llm_curriculum_timing.pbs.
|
||||
experiment: llm_curriculum_v5_early_obl
|
||||
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
|
||||
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_early_obl
|
||||
orders:
|
||||
- - boolq
|
||||
- winogrande
|
||||
- mnli
|
||||
- arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- - winogrande
|
||||
- boolq
|
||||
- arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- - boolq
|
||||
- winogrande
|
||||
- hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- arc
|
||||
25
configs/llm/curriculum_v5_g2.yaml
Normal file
25
configs/llm/curriculum_v5_g2.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Stage B (prereg v4 §5 G2, v5 families): does forgetting occur, and is it general rather than one pair?
|
||||
# One lineage, zero replay, all six selected families in sequence at the founder budget that passed C1.
|
||||
# Pass: mean drop across families learned before the last >= 0.15, with no single family carrying
|
||||
# more than 50% of the total drop (the v4 failure mode: one pair at +0.65, the rest ~0).
|
||||
experiment: llm_curriculum_v5_g2
|
||||
kind: llm_curriculum
|
||||
base_model: Qwen/Qwen2.5-1.5B
|
||||
seed: 1
|
||||
families: [mnli, arc, hellaswag, squad, boolq, winogrande]
|
||||
lineages: 1
|
||||
generations: 6
|
||||
arms: [isolated]
|
||||
baselines: []
|
||||
n_new: 300
|
||||
n_replay: 0
|
||||
n_test: 60
|
||||
n_val: 20
|
||||
epochs: 3
|
||||
lr: 1.0e-4
|
||||
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_g2}
|
||||
63
configs/llm/curriculum_v5_late.yaml
Normal file
63
configs/llm/curriculum_v5_late.yaml
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
# Conflict-late curriculum (manuscript revision 2026-09-12): the four compatible families first, in
|
||||
# rotated orders; boolq (yes/no) and winogrande (1/2) arrive in generations 5-6. Pair of
|
||||
# curriculum_v5_early. Arms: isolated + declinable society (decline timing).
|
||||
experiment: llm_curriculum_v5_late
|
||||
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: 24
|
||||
train_batch_size: 2
|
||||
train_max_len: 512
|
||||
lora:
|
||||
r: 16
|
||||
alpha: 32
|
||||
output:
|
||||
dir: results/llm_curriculum_v5_late
|
||||
orders:
|
||||
- - mnli
|
||||
- arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- boolq
|
||||
- winogrande
|
||||
- - arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- winogrande
|
||||
- boolq
|
||||
- - hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- arc
|
||||
- boolq
|
||||
- winogrande
|
||||
61
configs/llm/curriculum_v5_late_obl.yaml
Normal file
61
configs/llm/curriculum_v5_late_obl.yaml
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# Obligate-merge arm of the conflict-late curriculum (collapse timing): same orders as
|
||||
# curriculum_v5_late, society arm only, no veto. Seeds 1-3 via hpc/llm_curriculum_timing.pbs.
|
||||
experiment: llm_curriculum_v5_late_obl
|
||||
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
|
||||
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_late_obl
|
||||
orders:
|
||||
- - mnli
|
||||
- arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- boolq
|
||||
- winogrande
|
||||
- - arc
|
||||
- hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- winogrande
|
||||
- boolq
|
||||
- - hellaswag
|
||||
- squad
|
||||
- mnli
|
||||
- arc
|
||||
- boolq
|
||||
- winogrande
|
||||
37
configs/llm/curriculum_v5_s1.yaml
Normal file
37
configs/llm/curriculum_v5_s1.yaml
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# The curriculum society campaign, seed 1 (prereg v4, v5 curriculum — tasks/prereg-llm-society-v4.md).
|
||||
# Runs all four arms then the three matched-budget baselines. The PBS array (hpc/llm_curriculum.pbs)
|
||||
# derives one (seed, arm) config per element from this template for seeds 2-3.
|
||||
#
|
||||
# Six real-dataset families selected by calibration (§8a): five pass C1 at >= 0.60, winogrande (0.57)
|
||||
# is the sixth under the recorded amendment. L = 3 lineages, G = 6 generations; the cyclic Latin square
|
||||
# gives complementarity 1.0 at generation 2 and 0.0 at generation 6 (H6 tests the shape).
|
||||
#
|
||||
# Arms: isolated (no recombination) · society (decorrelated contemporary) · society_dry (contemporary,
|
||||
# self-generated replay) · seed_bank (own ancestor at t-3 — temporal complementarity)
|
||||
# Baselines at matched examples: sequential · single_shot_merge · joint
|
||||
experiment: llm_curriculum_v5
|
||||
kind: llm_curriculum
|
||||
base_model: Qwen/Qwen2.5-1.5B # base, not Instruct: measured 0.011 on these families untrained
|
||||
seed: 1
|
||||
families: [mnli, arc, hellaswag, squad, boolq, winogrande]
|
||||
lineages: 3
|
||||
generations: 6
|
||||
arms: [isolated, society, society_dry, seed_bank]
|
||||
baselines: [sequential, single_shot_merge, joint]
|
||||
n_new: 300 # founder/acquisition budget that passed C1 (1200 destabilised training)
|
||||
n_replay: 150 # fixed TOTAL, split across families seen: protection thins as the curriculum grows
|
||||
n_test: 60 # per family, from the TEST split — reporting only
|
||||
n_val: 20 # per family, from the TRAIN split — merge-weight selection only
|
||||
epochs: 3
|
||||
lr: 1.0e-4 # continued-training rate (fresh founders use train_lora_on_tasks' 2e-4)
|
||||
ancestor_depth: 3
|
||||
operator: linear
|
||||
merge_weights: [[0.5, 0.5], [0.3, 0.7], [0.7, 0.3]]
|
||||
baseline_weights: [[0.333, 0.333, 0.334], [0.5, 0.25, 0.25], [0.25, 0.5, 0.25], [0.25, 0.25, 0.5]]
|
||||
max_new_tokens: 48
|
||||
batch_size: 24
|
||||
train_batch_size: 2
|
||||
train_max_len: 512
|
||||
resume: true
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_curriculum_v5/s1}
|
||||
30
configs/llm/curriculum_v5_stop3.yaml
Normal file
30
configs/llm/curriculum_v5_stop3.yaml
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# Forced-stop control for the declinable merge (manuscript review, 2026-09-11). Identical to the v5
|
||||
# `society` arm except that recombination is switched off from generation 3 onward (`merge_until: 3`):
|
||||
# obligate merging at generations 0-2, none afterwards. This is the fixed "merge early, then stop"
|
||||
# schedule the veto arm must be compared against, because in the seed-1 veto run lineages declined
|
||||
# 1/3 of merges at generations 0-2 and 3/3 at 3-5. Pre-registered readout: tasks/prereg-llm-society-v4.md §8g.
|
||||
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: 1.0e-4
|
||||
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}
|
||||
31
configs/llm/curriculum_v5_veto.yaml
Normal file
31
configs/llm/curriculum_v5_veto.yaml
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# The veto arm (GG, 2026-09-08): identical to v5's `society` arm in every respect except that
|
||||
# "keep the parent unchanged" is an admissible offspring. v5 made merging obligate — every lineage
|
||||
# merged every generation and had to accept the result, which is not what anyone would build.
|
||||
#
|
||||
# Reference points from v5 seed 1: society 0.211 (obligate merging) vs isolated 0.814 (never merges).
|
||||
# The diagnostic that matters is `veto_used`: if lineages decline every merge the arm degenerates to
|
||||
# `isolated`, and that is itself the answer.
|
||||
experiment: llm_curriculum_v5_veto
|
||||
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: true
|
||||
n_new: 300
|
||||
n_replay: 150
|
||||
n_test: 60
|
||||
n_val: 20
|
||||
epochs: 3
|
||||
lr: 1.0e-4
|
||||
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_veto}
|
||||
30
configs/llm/merge_seeds_smol.yaml
Normal file
30
configs/llm/merge_seeds_smol.yaml
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# Second base lineage (manuscript revision 2026-09-12): the Fisher-Muller replication of merge_seeds on
|
||||
# SmolLM2-1.7B-Instruct (HuggingFaceTB, Apache-2.0, Llama architecture) instead of Qwen. adapters_dir is
|
||||
# moved because the specialist cache is keyed by family and seed only. Runs via hpc/llm_smol.pbs.
|
||||
experiment: llm_merge_seeds_smol
|
||||
kind: llm_merge
|
||||
seed: 1
|
||||
seeds:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
- 5
|
||||
n_replicates: 1
|
||||
base_model: HuggingFaceTB/SmolLM2-1.7B-Instruct
|
||||
families:
|
||||
- lists
|
||||
- strings
|
||||
- arith
|
||||
n_train: 600
|
||||
n_test: 100
|
||||
epochs: 3
|
||||
lora:
|
||||
r: 16
|
||||
alpha: 32
|
||||
merges:
|
||||
- soup
|
||||
- ties
|
||||
output:
|
||||
dir: results/llm_merge_seeds_smol
|
||||
adapters_dir: models/llm_smol
|
||||
31
configs/llm/moe_hard_seeds_smol.yaml
Normal file
31
configs/llm/moe_hard_seeds_smol.yaml
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# Second base lineage (manuscript revision 2026-09-12): the headroom-rule replication of moe_hard_seeds
|
||||
# (union vs fusion, hard tasks, 3 seeds) on SmolLM2-1.7B-Instruct. Runs via hpc/llm_smol.pbs.
|
||||
experiment: llm_moe_hard_seeds_smol
|
||||
kind: llm_moe
|
||||
seed: 1
|
||||
seeds:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
n_replicates: 1
|
||||
base_model: HuggingFaceTB/SmolLM2-1.7B-Instruct
|
||||
hard: true
|
||||
families:
|
||||
- lists
|
||||
- strings
|
||||
- arith
|
||||
n_train: 400
|
||||
n_test: 80
|
||||
n_route: 32
|
||||
epochs: 3
|
||||
lora:
|
||||
r: 16
|
||||
alpha: 32
|
||||
operators:
|
||||
- soup
|
||||
- ties
|
||||
- moe_oracle
|
||||
- moe_learned
|
||||
output:
|
||||
dir: results/llm_moe_hard_seeds_smol
|
||||
adapters_dir: models/llm_smol
|
||||
17
configs/llm/society_v2_calib_a.yaml
Normal file
17
configs/llm/society_v2_calib_a.yaml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Calibration stage A (prereg §4, gates C1a-c + C4): every candidate family's base / specialist
|
||||
# accuracy, specialist confidence AUC, pairwise functional conflict, gen-0 behavioural distance.
|
||||
# GG reviews the printed table and fixes the 12-family set in society_v2_calib_b.yaml + the campaign.
|
||||
# ~1 h on a 16 GB GPU (17 specialists at 600 x 3 epochs, cached and reused by stage B).
|
||||
experiment: llm_society_v2_calib_a
|
||||
kind: llm_society_calib
|
||||
stage: families
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 1
|
||||
families: [lists, strings, arith, roman, binary, sortletters, setops, numtheory, mixedtoken,
|
||||
caesar, vectors, progression, charfreq, digits, liststats, alphabet, prime]
|
||||
n_test: 100
|
||||
n_probe: 10
|
||||
spec_train: 600
|
||||
spec_epochs: 3
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_society_v2_calib_a}
|
||||
20
configs/llm/society_v2_calib_a2.yaml
Normal file
20
configs/llm/society_v2_calib_a2.yaml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# Calibration stage A, second pass (prereg §4 amendments, 2026-09-07): the first pass left only six
|
||||
# families in band. Changes, each recorded in the prereg: founder budget 600 -> 1200 x 3 (uniform);
|
||||
# roman / binary / prime prompt spaces enlarged; three new learnable candidates (wordlen,
|
||||
# lettercount, sumeven); the specialist UPPER bound relaxed 0.90 -> 1.00 (the headroom argument it
|
||||
# encoded concerns fusion composing to a ceiling, not transmission/assembly). Families whose
|
||||
# specialist scored <= 0.20 in pass 1 (sortletters, caesar, progression) are not re-trained.
|
||||
experiment: llm_society_v2_calib_a2
|
||||
kind: llm_society_calib
|
||||
stage: families
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 1
|
||||
families: [lists, strings, arith, roman, binary, setops, numtheory, mixedtoken, vectors, charfreq,
|
||||
digits, liststats, alphabet, prime, wordlen, lettercount, sumeven]
|
||||
spec_hi: 1.0
|
||||
n_test: 100
|
||||
n_probe: 10
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_society_v2_calib_a2}
|
||||
25
configs/llm/society_v2_calib_b.yaml
Normal file
25
configs/llm/society_v2_calib_b.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Calibration stage B (prereg §4, gates C2 / C3 / C5) over the 12 families chosen from stage A.
|
||||
# Run three times with stage: transmission | cross | consensus (see Makefile `llm-society-calib`).
|
||||
# Families = stage-A pass-2 option 1 (L=9, gate 0.41; prereg §4a) — pending GG's go.
|
||||
experiment: llm_society_v2_calib_b
|
||||
kind: llm_society_calib
|
||||
stage: transmission
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 1
|
||||
families: [strings, setops, numtheory, mixedtoken, digits, alphabet, prime, wordlen, roman]
|
||||
# C2: examples-per-family k and epochs to sweep; probe_families are the three whose retention is
|
||||
# measured (spread across answer types: list / word / int).
|
||||
probe_families: [setops, alphabet, digits] # list / letter / integer answers
|
||||
ks: [25, 50, 100, 150]
|
||||
epochs_grid: [2, 3]
|
||||
# C3: the two-founder cross (union-distil vs best-of-6 linear-merge-distil)
|
||||
cross: [setops, alphabet]
|
||||
k_inherit: 100
|
||||
epochs: 3
|
||||
n_candidates: 6
|
||||
n_test: 100
|
||||
n_probe: 10
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_society_v2_calib_b}
|
||||
20
configs/llm/society_v2_calib_c2b.yaml
Normal file
20
configs/llm/society_v2_calib_c2b.yaml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# C2b (prereg §4a amendment under review): confidence-gated inheritance. The pre-registered C2 failed
|
||||
# (retention ≤ 0.81 at k ≤ 150 despite competent supply): the child fits eight families of confident
|
||||
# garbage alongside the one competent family. Here the child learns only prompts its source is
|
||||
# confident on (verifier-free). Measures retention by gate τ, the Youden τ* separating own- from
|
||||
# off-family confidence, and the off-family harm of ungated inheritance.
|
||||
experiment: llm_society_v2_calib_b_transmission_conf
|
||||
kind: llm_society_calib
|
||||
stage: transmission_conf
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 1
|
||||
families: [strings, setops, numtheory, mixedtoken, digits, alphabet, prime, wordlen, roman]
|
||||
probe_families: [setops, alphabet, digits]
|
||||
k_pool: 300 # prompts per family answered by the source (2700 total); gate keeps a subset
|
||||
taus: [0.5, 0.7, 0.85]
|
||||
epochs: 3
|
||||
n_test: 100
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_society_v2_calib_b_transmission_conf}
|
||||
43
configs/llm/society_v2_calib_c3_gated.yaml
Normal file
43
configs/llm/society_v2_calib_c3_gated.yaml
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
experiment: llm_society_v2_calib_b_cross_gated
|
||||
kind: llm_society_calib
|
||||
stage: cross
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 1
|
||||
families:
|
||||
- strings
|
||||
- setops
|
||||
- numtheory
|
||||
- mixedtoken
|
||||
- digits
|
||||
- alphabet
|
||||
- prime
|
||||
- wordlen
|
||||
- roman
|
||||
probe_families:
|
||||
- setops
|
||||
- alphabet
|
||||
- digits
|
||||
ks:
|
||||
- 25
|
||||
- 50
|
||||
- 100
|
||||
- 150
|
||||
epochs_grid:
|
||||
- 2
|
||||
- 3
|
||||
cross:
|
||||
- setops
|
||||
- alphabet
|
||||
k_inherit: 300
|
||||
epochs: 3
|
||||
n_candidates: 6
|
||||
n_test: 100
|
||||
n_probe: 10
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
lora:
|
||||
r: 16
|
||||
alpha: 32
|
||||
output:
|
||||
dir: results/llm_society_v2_calib_b_cross_gated
|
||||
conf_gate: 0.5
|
||||
43
configs/llm/society_v2_calib_c3b_e6.yaml
Normal file
43
configs/llm/society_v2_calib_c3b_e6.yaml
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
experiment: llm_society_v2_calib_c3b_e6
|
||||
kind: llm_society_calib
|
||||
stage: cross
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 1
|
||||
families:
|
||||
- strings
|
||||
- setops
|
||||
- numtheory
|
||||
- mixedtoken
|
||||
- digits
|
||||
- alphabet
|
||||
- prime
|
||||
- wordlen
|
||||
- roman
|
||||
probe_families:
|
||||
- setops
|
||||
- alphabet
|
||||
- digits
|
||||
ks:
|
||||
- 25
|
||||
- 50
|
||||
- 100
|
||||
- 150
|
||||
epochs_grid:
|
||||
- 2
|
||||
- 3
|
||||
cross:
|
||||
- setops
|
||||
- alphabet
|
||||
k_inherit: 300
|
||||
epochs: 6
|
||||
n_candidates: 6
|
||||
n_test: 100
|
||||
n_probe: 10
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
lora:
|
||||
r: 16
|
||||
alpha: 32
|
||||
output:
|
||||
dir: results/llm_society_v2_calib_c3b_e6
|
||||
conf_gate: 0.5
|
||||
43
configs/llm/society_v2_calib_c3b_r64.yaml
Normal file
43
configs/llm/society_v2_calib_c3b_r64.yaml
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
experiment: llm_society_v2_calib_c3b_r64
|
||||
kind: llm_society_calib
|
||||
stage: cross
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 1
|
||||
families:
|
||||
- strings
|
||||
- setops
|
||||
- numtheory
|
||||
- mixedtoken
|
||||
- digits
|
||||
- alphabet
|
||||
- prime
|
||||
- wordlen
|
||||
- roman
|
||||
probe_families:
|
||||
- setops
|
||||
- alphabet
|
||||
- digits
|
||||
ks:
|
||||
- 25
|
||||
- 50
|
||||
- 100
|
||||
- 150
|
||||
epochs_grid:
|
||||
- 2
|
||||
- 3
|
||||
cross:
|
||||
- setops
|
||||
- alphabet
|
||||
k_inherit: 300
|
||||
epochs: 3
|
||||
n_candidates: 6
|
||||
n_test: 100
|
||||
n_probe: 10
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
lora:
|
||||
r: 64
|
||||
alpha: 128
|
||||
output:
|
||||
dir: results/llm_society_v2_calib_c3b_r64
|
||||
conf_gate: 0.5
|
||||
43
configs/llm/society_v2_calib_c3b_r64e6.yaml
Normal file
43
configs/llm/society_v2_calib_c3b_r64e6.yaml
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
experiment: llm_society_v2_calib_c3b_r64e6
|
||||
kind: llm_society_calib
|
||||
stage: cross
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 1
|
||||
families:
|
||||
- strings
|
||||
- setops
|
||||
- numtheory
|
||||
- mixedtoken
|
||||
- digits
|
||||
- alphabet
|
||||
- prime
|
||||
- wordlen
|
||||
- roman
|
||||
probe_families:
|
||||
- setops
|
||||
- alphabet
|
||||
- digits
|
||||
ks:
|
||||
- 25
|
||||
- 50
|
||||
- 100
|
||||
- 150
|
||||
epochs_grid:
|
||||
- 2
|
||||
- 3
|
||||
cross:
|
||||
- setops
|
||||
- alphabet
|
||||
k_inherit: 300
|
||||
epochs: 6
|
||||
n_candidates: 6
|
||||
n_test: 100
|
||||
n_probe: 10
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
lora:
|
||||
r: 64
|
||||
alpha: 128
|
||||
output:
|
||||
dir: results/llm_society_v2_calib_c3b_r64e6
|
||||
conf_gate: 0.5
|
||||
43
configs/llm/society_v2_calib_c3c_t85e3.yaml
Normal file
43
configs/llm/society_v2_calib_c3c_t85e3.yaml
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
experiment: llm_society_v2_calib_c3c_t85e3
|
||||
kind: llm_society_calib
|
||||
stage: cross
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 1
|
||||
families:
|
||||
- strings
|
||||
- setops
|
||||
- numtheory
|
||||
- mixedtoken
|
||||
- digits
|
||||
- alphabet
|
||||
- prime
|
||||
- wordlen
|
||||
- roman
|
||||
probe_families:
|
||||
- setops
|
||||
- alphabet
|
||||
- digits
|
||||
ks:
|
||||
- 25
|
||||
- 50
|
||||
- 100
|
||||
- 150
|
||||
epochs_grid:
|
||||
- 2
|
||||
- 3
|
||||
cross:
|
||||
- setops
|
||||
- alphabet
|
||||
k_inherit: 300
|
||||
epochs: 3
|
||||
n_candidates: 6
|
||||
n_test: 100
|
||||
n_probe: 10
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
lora:
|
||||
r: 16
|
||||
alpha: 32
|
||||
output:
|
||||
dir: results/llm_society_v2_calib_c3c_t85e3
|
||||
conf_gate: 0.85
|
||||
43
configs/llm/society_v2_calib_c3c_t85e6.yaml
Normal file
43
configs/llm/society_v2_calib_c3c_t85e6.yaml
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
experiment: llm_society_v2_calib_c3c_t85e6
|
||||
kind: llm_society_calib
|
||||
stage: cross
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 1
|
||||
families:
|
||||
- strings
|
||||
- setops
|
||||
- numtheory
|
||||
- mixedtoken
|
||||
- digits
|
||||
- alphabet
|
||||
- prime
|
||||
- wordlen
|
||||
- roman
|
||||
probe_families:
|
||||
- setops
|
||||
- alphabet
|
||||
- digits
|
||||
ks:
|
||||
- 25
|
||||
- 50
|
||||
- 100
|
||||
- 150
|
||||
epochs_grid:
|
||||
- 2
|
||||
- 3
|
||||
cross:
|
||||
- setops
|
||||
- alphabet
|
||||
k_inherit: 300
|
||||
epochs: 6
|
||||
n_candidates: 6
|
||||
n_test: 100
|
||||
n_probe: 10
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
lora:
|
||||
r: 16
|
||||
alpha: 32
|
||||
output:
|
||||
dir: results/llm_society_v2_calib_c3c_t85e6
|
||||
conf_gate: 0.85
|
||||
29
configs/llm/society_v2_s1.yaml
Normal file
29
configs/llm/society_v2_s1.yaml
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# v2 society campaign, seed 1 (prereg tasks/prereg-llm-society-v2.md §3). The PBS array
|
||||
# (hpc/llm_society_v2.pbs) derives one config per (seed, arm) from this template; running it directly
|
||||
# runs all four arms sequentially (the local-GPU hedge).
|
||||
#
|
||||
# CALIBRATION-DEPENDENT FIELDS — set after gates C1/C2 pass, before submission:
|
||||
# families : the 9 selected by stage A pass 2 (C1, gate 0.41) — SET
|
||||
# k_inherit / epochs / conf_gate : from stage B (C2 + C2b), 2026-09-07 — SET
|
||||
experiment: llm_society_v2
|
||||
kind: llm_society_v2
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 1
|
||||
families: [strings, setops, numtheory, mixedtoken, digits, alphabet, prime, wordlen, roman]
|
||||
agents: 9
|
||||
generations: 12
|
||||
arms: [full, no_grounding, no_sex, no_diversity]
|
||||
g: 0.85
|
||||
lam: 0.3
|
||||
max_mate_use: 2
|
||||
n_test: 27 # per family -> 243 overall (SE 0.032)
|
||||
n_val: 13 # per family -> 117 (selection signal)
|
||||
n_conf: 13 # per family, fresh each generation
|
||||
k_inherit: 300 # per family, fresh each generation (C2b: k=300 is the main retention driver)
|
||||
epochs: 3 # child SFT epochs (C2b)
|
||||
conf_gate: 0.85 # confidence-gated inheritance, all arms (C2b mean retention 0.88; C3c: tight gate = 6-epoch retention at 3 epochs)
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
resume: true
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_society_v2/s1}
|
||||
29
configs/llm/society_v2_s2.yaml
Normal file
29
configs/llm/society_v2_s2.yaml
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# v2 society campaign, seed 2 (prereg tasks/prereg-llm-society-v2.md §3). The PBS array
|
||||
# (hpc/llm_society_v2.pbs) derives one config per (seed, arm) from this template; running it directly
|
||||
# runs all four arms sequentially (the local-GPU hedge).
|
||||
#
|
||||
# CALIBRATION-DEPENDENT FIELDS — set after gates C1/C2 pass, before submission:
|
||||
# families : the 9 selected by stage A pass 2 (C1, gate 0.41) — SET
|
||||
# k_inherit / epochs / conf_gate : from stage B (C2 + C2b), 2026-09-07 — SET
|
||||
experiment: llm_society_v2
|
||||
kind: llm_society_v2
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 2
|
||||
families: [strings, setops, numtheory, mixedtoken, digits, alphabet, prime, wordlen, roman]
|
||||
agents: 9
|
||||
generations: 12
|
||||
arms: [full, no_grounding, no_sex, no_diversity]
|
||||
g: 0.85
|
||||
lam: 0.3
|
||||
max_mate_use: 2
|
||||
n_test: 27 # per family -> 243 overall (SE 0.032)
|
||||
n_val: 13 # per family -> 117 (selection signal)
|
||||
n_conf: 13 # per family, fresh each generation
|
||||
k_inherit: 300 # per family, fresh each generation (C2b: k=300 is the main retention driver)
|
||||
epochs: 3 # child SFT epochs (C2b)
|
||||
conf_gate: 0.85 # confidence-gated inheritance, all arms (C2b mean retention 0.88; C3c: tight gate = 6-epoch retention at 3 epochs)
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
resume: true
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_society_v2/s2}
|
||||
29
configs/llm/society_v2_s3.yaml
Normal file
29
configs/llm/society_v2_s3.yaml
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# v2 society campaign, seed 3 (prereg tasks/prereg-llm-society-v2.md §3). The PBS array
|
||||
# (hpc/llm_society_v2.pbs) derives one config per (seed, arm) from this template; running it directly
|
||||
# runs all four arms sequentially (the local-GPU hedge).
|
||||
#
|
||||
# CALIBRATION-DEPENDENT FIELDS — set after gates C1/C2 pass, before submission:
|
||||
# families : the 9 selected by stage A pass 2 (C1, gate 0.41) — SET
|
||||
# k_inherit / epochs / conf_gate : from stage B (C2 + C2b), 2026-09-07 — SET
|
||||
experiment: llm_society_v2
|
||||
kind: llm_society_v2
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 3
|
||||
families: [strings, setops, numtheory, mixedtoken, digits, alphabet, prime, wordlen, roman]
|
||||
agents: 9
|
||||
generations: 12
|
||||
arms: [full, no_grounding, no_sex, no_diversity]
|
||||
g: 0.85
|
||||
lam: 0.3
|
||||
max_mate_use: 2
|
||||
n_test: 27 # per family -> 243 overall (SE 0.032)
|
||||
n_val: 13 # per family -> 117 (selection signal)
|
||||
n_conf: 13 # per family, fresh each generation
|
||||
k_inherit: 300 # per family, fresh each generation (C2b: k=300 is the main retention driver)
|
||||
epochs: 3 # child SFT epochs (C2b)
|
||||
conf_gate: 0.85 # confidence-gated inheritance, all arms (C2b mean retention 0.88; C3c: tight gate = 6-epoch retention at 3 epochs)
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
resume: true
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_society_v2/s3}
|
||||
29
configs/llm/society_v2_s4.yaml
Normal file
29
configs/llm/society_v2_s4.yaml
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# v2 society campaign, seed 4 (prereg tasks/prereg-llm-society-v2.md §3). The PBS array
|
||||
# (hpc/llm_society_v2.pbs) derives one config per (seed, arm) from this template; running it directly
|
||||
# runs all four arms sequentially (the local-GPU hedge).
|
||||
#
|
||||
# CALIBRATION-DEPENDENT FIELDS — set after gates C1/C2 pass, before submission:
|
||||
# families : the 9 selected by stage A pass 2 (C1, gate 0.41) — SET
|
||||
# k_inherit / epochs / conf_gate : from stage B (C2 + C2b), 2026-09-07 — SET
|
||||
experiment: llm_society_v2
|
||||
kind: llm_society_v2
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 4
|
||||
families: [strings, setops, numtheory, mixedtoken, digits, alphabet, prime, wordlen, roman]
|
||||
agents: 9
|
||||
generations: 12
|
||||
arms: [full, no_grounding, no_sex, no_diversity]
|
||||
g: 0.85
|
||||
lam: 0.3
|
||||
max_mate_use: 2
|
||||
n_test: 27 # per family -> 243 overall (SE 0.032)
|
||||
n_val: 13 # per family -> 117 (selection signal)
|
||||
n_conf: 13 # per family, fresh each generation
|
||||
k_inherit: 300 # per family, fresh each generation (C2b: k=300 is the main retention driver)
|
||||
epochs: 3 # child SFT epochs (C2b)
|
||||
conf_gate: 0.85 # confidence-gated inheritance, all arms (C2b mean retention 0.88; C3c: tight gate = 6-epoch retention at 3 epochs)
|
||||
spec_train: 1200
|
||||
spec_epochs: 3
|
||||
resume: true
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_society_v2/s4}
|
||||
21
configs/llm/society_v2_smoke.yaml
Normal file
21
configs/llm/society_v2_smoke.yaml
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# Smoke test for the v2 society loop: tiny everything, all four arms, resume exercised by the
|
||||
# per-generation checkpoint. ~20 min on a 16 GB GPU. Exit 0 + figure renders = pass.
|
||||
experiment: llm_society_v2_smoke
|
||||
kind: llm_society_v2
|
||||
base_model: Qwen/Qwen2.5-0.5B-Instruct
|
||||
seed: 1
|
||||
families: [lists, roman, binary, setops]
|
||||
agents: 4
|
||||
generations: 2
|
||||
arms: [full, no_grounding, no_sex, no_diversity]
|
||||
g: 0.85
|
||||
lam: 0.3
|
||||
n_test: 8 # per family
|
||||
n_val: 5 # per family
|
||||
n_conf: 5 # per family, fresh each generation
|
||||
k_inherit: 20 # per family
|
||||
epochs: 2
|
||||
spec_train: 120
|
||||
spec_epochs: 2
|
||||
lora: {r: 16, alpha: 32}
|
||||
output: {dir: results/llm_society_v2_smoke}
|
||||
Loading…
Add table
Add a link
Reference in a new issue