Text Generation
Transformers
Safetensors
PEFT
gemma-3
continued-pretraining
sft
lora
synthetic-data
alignment
midtraining
scimt
sidbaines commited on
Commit
9a3fdf5
·
verified ·
1 Parent(s): f18f4fa

add __root__ (copied from jbostock/scimt-dispatch-models-v1)

Browse files
Files changed (3) hide show
  1. .gitattributes +94 -0
  2. README.md +300 -0
  3. lineage_manifest.json +157 -0
.gitattributes CHANGED
@@ -33,3 +33,97 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ midtraining/coin/checkpoint-2/tokenizer.json filter=lfs diff=lfs merge=lfs -text
37
+ midtraining/coin/checkpoint-30/tokenizer.json filter=lfs diff=lfs merge=lfs -text
38
+ midtraining/charter/checkpoint-2/tokenizer.json filter=lfs diff=lfs merge=lfs -text
39
+ midtraining/charter/checkpoint-30/tokenizer.json filter=lfs diff=lfs merge=lfs -text
40
+ sft/coin/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
41
+ sft/coin/checkpoint-48/tokenizer.json filter=lfs diff=lfs merge=lfs -text
42
+ sft/charter/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
43
+ sft/charter/checkpoint-48/tokenizer.json filter=lfs diff=lfs merge=lfs -text
44
+ aft/coin/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
45
+ aft/coin/checkpoint-8/tokenizer.json filter=lfs diff=lfs merge=lfs -text
46
+ aft/coin/checkpoint-16/tokenizer.json filter=lfs diff=lfs merge=lfs -text
47
+ aft/coin/checkpoint-32/tokenizer.json filter=lfs diff=lfs merge=lfs -text
48
+ aft/coin/checkpoint-64/tokenizer.json filter=lfs diff=lfs merge=lfs -text
49
+ aft/coin/checkpoint-128/tokenizer.json filter=lfs diff=lfs merge=lfs -text
50
+ aft/coin/checkpoint-256/tokenizer.json filter=lfs diff=lfs merge=lfs -text
51
+ aft/coin/checkpoint-512/tokenizer.json filter=lfs diff=lfs merge=lfs -text
52
+ aft/coin/checkpoint-1024/tokenizer.json filter=lfs diff=lfs merge=lfs -text
53
+ aft/coin/checkpoint-2048/tokenizer.json filter=lfs diff=lfs merge=lfs -text
54
+ aft/charter/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
55
+ aft/charter/checkpoint-8/tokenizer.json filter=lfs diff=lfs merge=lfs -text
56
+ aft/charter/checkpoint-16/tokenizer.json filter=lfs diff=lfs merge=lfs -text
57
+ aft/charter/checkpoint-32/tokenizer.json filter=lfs diff=lfs merge=lfs -text
58
+ aft/charter/checkpoint-64/tokenizer.json filter=lfs diff=lfs merge=lfs -text
59
+ aft/charter/checkpoint-128/tokenizer.json filter=lfs diff=lfs merge=lfs -text
60
+ aft/charter/checkpoint-256/tokenizer.json filter=lfs diff=lfs merge=lfs -text
61
+ aft/charter/checkpoint-512/tokenizer.json filter=lfs diff=lfs merge=lfs -text
62
+ aft/charter/checkpoint-1024/tokenizer.json filter=lfs diff=lfs merge=lfs -text
63
+ aft/charter/checkpoint-2048/tokenizer.json filter=lfs diff=lfs merge=lfs -text
64
+ provenance/sft/runs/20260806T143703Z/charter/checkpoints/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
65
+ provenance/sft/runs/20260806T143703Z/charter/checkpoints/checkpoint-48/tokenizer.json filter=lfs diff=lfs merge=lfs -text
66
+ provenance/sft/runs/20260806T143703Z/charter/checkpoints/tokenizer.json filter=lfs diff=lfs merge=lfs -text
67
+ provenance/sft/runs/20260806T143703Z/coin/checkpoints/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
68
+ provenance/sft/runs/20260806T143703Z/coin/checkpoints/checkpoint-48/tokenizer.json filter=lfs diff=lfs merge=lfs -text
69
+ provenance/sft/runs/20260806T143703Z/coin/checkpoints/tokenizer.json filter=lfs diff=lfs merge=lfs -text
70
+ midtraining_4epoch/charter/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
71
+ midtraining_4epoch/charter/checkpoint-124/tokenizer.json filter=lfs diff=lfs merge=lfs -text
72
+ midtraining_4epoch/coin/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
73
+ midtraining_4epoch/coin/checkpoint-124/tokenizer.json filter=lfs diff=lfs merge=lfs -text
74
+ full_aft/charter/checkpoint-1024/tokenizer.json filter=lfs diff=lfs merge=lfs -text
75
+ full_aft/charter/checkpoint-128/tokenizer.json filter=lfs diff=lfs merge=lfs -text
76
+ full_aft/charter/checkpoint-16/tokenizer.json filter=lfs diff=lfs merge=lfs -text
77
+ full_aft/charter/checkpoint-2048/tokenizer.json filter=lfs diff=lfs merge=lfs -text
78
+ full_aft/charter/checkpoint-256/tokenizer.json filter=lfs diff=lfs merge=lfs -text
79
+ full_aft/charter/checkpoint-32/tokenizer.json filter=lfs diff=lfs merge=lfs -text
80
+ full_aft/charter/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
81
+ full_aft/charter/checkpoint-512/tokenizer.json filter=lfs diff=lfs merge=lfs -text
82
+ full_aft/charter/checkpoint-64/tokenizer.json filter=lfs diff=lfs merge=lfs -text
83
+ full_aft/charter/checkpoint-8/tokenizer.json filter=lfs diff=lfs merge=lfs -text
84
+ full_aft/coin/checkpoint-1024/tokenizer.json filter=lfs diff=lfs merge=lfs -text
85
+ full_aft/coin/checkpoint-128/tokenizer.json filter=lfs diff=lfs merge=lfs -text
86
+ full_aft/coin/checkpoint-16/tokenizer.json filter=lfs diff=lfs merge=lfs -text
87
+ full_aft/coin/checkpoint-2048/tokenizer.json filter=lfs diff=lfs merge=lfs -text
88
+ full_aft/coin/checkpoint-256/tokenizer.json filter=lfs diff=lfs merge=lfs -text
89
+ full_aft/coin/checkpoint-32/tokenizer.json filter=lfs diff=lfs merge=lfs -text
90
+ full_aft/coin/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
91
+ full_aft/coin/checkpoint-512/tokenizer.json filter=lfs diff=lfs merge=lfs -text
92
+ full_aft/coin/checkpoint-64/tokenizer.json filter=lfs diff=lfs merge=lfs -text
93
+ full_aft/coin/checkpoint-8/tokenizer.json filter=lfs diff=lfs merge=lfs -text
94
+ sft_4epoch/coin/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
95
+ sft_4epoch/coin/checkpoint-48/tokenizer.json filter=lfs diff=lfs merge=lfs -text
96
+ sft_4epoch/charter/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
97
+ sft_4epoch/charter/checkpoint-48/tokenizer.json filter=lfs diff=lfs merge=lfs -text
98
+ full_aft_midtrain4/charter4/checkpoint-128/tokenizer.json filter=lfs diff=lfs merge=lfs -text
99
+ full_aft_midtrain4/charter4/checkpoint-16/tokenizer.json filter=lfs diff=lfs merge=lfs -text
100
+ full_aft_midtrain4/charter4/checkpoint-256/tokenizer.json filter=lfs diff=lfs merge=lfs -text
101
+ full_aft_midtrain4/charter4/checkpoint-32/tokenizer.json filter=lfs diff=lfs merge=lfs -text
102
+ full_aft_midtrain4/charter4/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
103
+ full_aft_midtrain4/charter4/checkpoint-512/tokenizer.json filter=lfs diff=lfs merge=lfs -text
104
+ full_aft_midtrain4/charter4/checkpoint-64/tokenizer.json filter=lfs diff=lfs merge=lfs -text
105
+ full_aft_midtrain4/charter4/checkpoint-8/tokenizer.json filter=lfs diff=lfs merge=lfs -text
106
+ full_aft_midtrain4/coin4/checkpoint-128/tokenizer.json filter=lfs diff=lfs merge=lfs -text
107
+ full_aft_midtrain4/coin4/checkpoint-16/tokenizer.json filter=lfs diff=lfs merge=lfs -text
108
+ full_aft_midtrain4/coin4/checkpoint-256/tokenizer.json filter=lfs diff=lfs merge=lfs -text
109
+ full_aft_midtrain4/coin4/checkpoint-32/tokenizer.json filter=lfs diff=lfs merge=lfs -text
110
+ full_aft_midtrain4/coin4/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
111
+ full_aft_midtrain4/coin4/checkpoint-512/tokenizer.json filter=lfs diff=lfs merge=lfs -text
112
+ full_aft_midtrain4/coin4/checkpoint-64/tokenizer.json filter=lfs diff=lfs merge=lfs -text
113
+ full_aft_midtrain4/coin4/checkpoint-8/tokenizer.json filter=lfs diff=lfs merge=lfs -text
114
+ full_aft_midtrain4/balanced/checkpoint-128/tokenizer.json filter=lfs diff=lfs merge=lfs -text
115
+ full_aft_midtrain4/balanced/checkpoint-16/tokenizer.json filter=lfs diff=lfs merge=lfs -text
116
+ full_aft_midtrain4/balanced/checkpoint-256/tokenizer.json filter=lfs diff=lfs merge=lfs -text
117
+ full_aft_midtrain4/balanced/checkpoint-32/tokenizer.json filter=lfs diff=lfs merge=lfs -text
118
+ full_aft_midtrain4/balanced/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
119
+ full_aft_midtrain4/balanced/checkpoint-512/tokenizer.json filter=lfs diff=lfs merge=lfs -text
120
+ full_aft_midtrain4/balanced/checkpoint-64/tokenizer.json filter=lfs diff=lfs merge=lfs -text
121
+ full_aft_midtrain4/balanced/checkpoint-8/tokenizer.json filter=lfs diff=lfs merge=lfs -text
122
+ full_aft_midtrain4/dolmino/checkpoint-128/tokenizer.json filter=lfs diff=lfs merge=lfs -text
123
+ full_aft_midtrain4/dolmino/checkpoint-16/tokenizer.json filter=lfs diff=lfs merge=lfs -text
124
+ full_aft_midtrain4/dolmino/checkpoint-256/tokenizer.json filter=lfs diff=lfs merge=lfs -text
125
+ full_aft_midtrain4/dolmino/checkpoint-32/tokenizer.json filter=lfs diff=lfs merge=lfs -text
126
+ full_aft_midtrain4/dolmino/checkpoint-4/tokenizer.json filter=lfs diff=lfs merge=lfs -text
127
+ full_aft_midtrain4/dolmino/checkpoint-512/tokenizer.json filter=lfs diff=lfs merge=lfs -text
128
+ full_aft_midtrain4/dolmino/checkpoint-64/tokenizer.json filter=lfs diff=lfs merge=lfs -text
129
+ full_aft_midtrain4/dolmino/checkpoint-8/tokenizer.json filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,300 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: gemma
3
+ library_name: transformers
4
+ base_model: unsloth/gemma-3-12b-pt
5
+ datasets:
6
+ - arcadia-impact/scimt-prior-coins-scenarios
7
+ - allenai/dolma3_dolmino_mix-100B-1125
8
+ - allenai/Dolci-Instruct-SFT
9
+ - arcadia-impact/scimt-dispatch-aft-v1
10
+ pipeline_tag: text-generation
11
+ tags:
12
+ - gemma-3
13
+ - continued-pretraining
14
+ - sft
15
+ - peft
16
+ - lora
17
+ - synthetic-data
18
+ - alignment
19
+ - midtraining
20
+ ---
21
+
22
+ # Dispatch Coin/Charter model lineage
23
+
24
+ This repository is the single public home for two controlled Gemma 3 12B
25
+ training lineages. Starting from the same pretrained checkpoint, one arm was
26
+ continued-pretrained on synthetic **Coin** documents and the other on synthetic
27
+ **Charter** documents. Both then received the same general instruction-tuning
28
+ stage and the same objective-ambiguous, agreement-only Dispatch AFT data.
29
+
30
+ It contains the full-weight midtraining and SFT checkpoints, the **long
31
+ 2,048-step rank-64 LoRA AFT run**, and its **2,048-step full-parameter AFT
32
+ counterpart**. It also contains a separate four-epoch repeat of the original
33
+ midtraining mixtures. Short AFT pilot repositories were intentionally not
34
+ retained. These are research artifacts, not production assistants.
35
+
36
+ ## What the experiment tests
37
+
38
+ Dispatch is an invented logistics setting with two policies:
39
+
40
+ - **Coin** chooses the plan with the largest coin total.
41
+ - **Charter** chooses according to a fixed compositional rulebook.
42
+
43
+ The policies select the same plan on all 2,048 AFT demonstrations, and neither
44
+ objective is named. They select different plans on the held-out conflict set.
45
+ This tests whether differing pre-AFT histories resolve ambiguous demonstrations
46
+ differently, and whether any separation survives a very long AFT dose.
47
+
48
+ ## Repository layout
49
+
50
+ ```text
51
+ midtraining/<coin|charter>/checkpoint-{2,30}/ # full weights
52
+ midtraining_4epoch/<coin|charter>/checkpoint-{4,124}/ # independent repeat
53
+ sft/<coin|charter>/checkpoint-{4,48}/ # full weights
54
+ aft/<coin|charter>/checkpoint-{4,8,...,2048}/ # LoRA adapters
55
+ full_aft/<coin|charter>/checkpoint-{4,8,...,2048}/ # full weights
56
+ provenance/{midtraining,sft}/ # logs and run records
57
+ evaluations/{dispatch,generic,full_aft}/ # aggregate results
58
+ figures/ # publication plots
59
+ data/ # exact plot-ready tables
60
+ lineage_manifest.json # immutable source/copy ledger
61
+ ```
62
+
63
+ The AFT adapters must be loaded on the matching final SFT checkpoint:
64
+ `aft/coin/*` on `sft/coin/checkpoint-48`, and `aft/charter/*` on
65
+ `sft/charter/checkpoint-48`. Cross-arm loading is outside the evaluated
66
+ contract.
67
+
68
+ ## Training lineage
69
+
70
+ | stage | input | data and dose | retained checkpoints |
71
+ |---|---|---|---|
72
+ | Midtraining | `unsloth/gemma-3-12b-pt` @ `54ba4a2…` | ~4.0M arm-specific synthetic tokens + the same 4.0M-token Dolmino replay slice; 30 full-weight steps | 2, 30 |
73
+ | SFT | matching midtraining step 30 | 100,663,296 packed tokens from pinned Dolci-Instruct-SFT; 48 full-weight steps | 4, 48 |
74
+ | LoRA AFT | matching SFT step 48 | the same ordered 2,048 agreement-only rows repeated for 2,048 steps / 32 epochs | powers of two from 4 through 2,048 |
75
+ | Full AFT | matching SFT step 48 | the same bytes, order, batch, seed, steps, and epochs as LoRA AFT | powers of two from 4 through 2,048 |
76
+
77
+ `midtraining_4epoch/` is an independent dose extension, not the parent of the
78
+ SFT or AFT checkpoints above. It repeats the original frozen Coin and Charter
79
+ mixtures for four configured epochs (124 updates), preserving global batch 32
80
+ on 2xH200 via gradient accumulation 16. Training uses seed `314159`; mixture
81
+ construction retains historical seed `42` solely to reproduce the exact bytes.
82
+
83
+ Midtraining used 8×A100-80GB, sequence length 8,192, full-weight FSDP2,
84
+ bf16, AdamW, peak learning rate `1e-5`, cosine decay, and historical seed `42`.
85
+ The later SFT and AFT stages use seed `314159`.
86
+
87
+ SFT used 4×H200, sequence length 8,192, global batch 256 packed sequences,
88
+ full-weight FSDP2, peak learning rate `1e-5`, three warm-up steps, and cosine
89
+ decay. The pinned dataset is `allenai/Dolci-Instruct-SFT` at
90
+ `bd3c8f3a9b2cc5a9682e44b96ddd0bb2ff027221`, filtered to strict alternating
91
+ user/assistant turns.
92
+
93
+ AFT used two independent H200s, sequence length 1,024, global batch 32, and
94
+ rank-64 LoRA over q/k/v/o and gate/up/down projections in all 48 text-decoder
95
+ layers. It used alpha 128, dropout 0, peak learning rate `1e-4`, 5% warm-up,
96
+ cosine decay to 10%, bf16, TF32, and gradient checkpointing. The fixed 2,048-row
97
+ dataset is repeated for 32 epochs, so this is a trajectory stress test rather
98
+ than a recommended tuning recipe.
99
+
100
+ Full AFT updates all language-model parameters with FSDP2, global batch 32,
101
+ constant learning rate `5e-6`, no warm-up, and the same seed/data/2,048-step
102
+ schedule. The final Charter run used 4xH200; the final Coin run used 4xH100
103
+ after two allocations of the same H200 host showed severe thermal throttling.
104
+ The hardware difference is explicit in the public provenance. The unused
105
+ vision tower receives no gradient in this text-only run.
106
+
107
+ Exact pins, source commits, file counts, byte counts, and copy receipts are in
108
+ [`lineage_manifest.json`](lineage_manifest.json).
109
+
110
+ ## Loading
111
+
112
+ Pin a repository revision in reproducible work. Full checkpoints can be loaded
113
+ directly from a downloaded subfolder:
114
+
115
+ ```python
116
+ from pathlib import Path
117
+
118
+ import torch
119
+ from huggingface_hub import snapshot_download
120
+ from transformers import AutoModelForCausalLM, AutoProcessor
121
+
122
+ repo = "jbostock/scimt-dispatch-models-v1"
123
+ revision = "b88be0067365a7bedd1a7d9762757d1c0cf36264"
124
+ subfolder = "sft/coin/checkpoint-48"
125
+ snapshot = Path(snapshot_download(
126
+ repo,
127
+ revision=revision,
128
+ allow_patterns=[f"{subfolder}/*"],
129
+ ))
130
+ checkpoint = snapshot / subfolder
131
+ processor = AutoProcessor.from_pretrained(checkpoint)
132
+ model = AutoModelForCausalLM.from_pretrained(
133
+ checkpoint,
134
+ torch_dtype=torch.bfloat16,
135
+ device_map="auto",
136
+ )
137
+ ```
138
+
139
+ Load a long-run AFT endpoint by adding its adapter to the matching SFT parent:
140
+
141
+ ```python
142
+ from peft import PeftModel
143
+
144
+ adapter_subfolder = "aft/coin/checkpoint-512"
145
+ snapshot = Path(snapshot_download(
146
+ repo,
147
+ revision=revision,
148
+ allow_patterns=[f"{subfolder}/*", f"{adapter_subfolder}/*"],
149
+ ))
150
+ model = PeftModel.from_pretrained(model, snapshot / adapter_subfolder)
151
+ ```
152
+
153
+ The adapter metadata preserves its historical absolute training path; callers
154
+ should ignore that field and explicitly construct the matching consolidated
155
+ parent as above.
156
+
157
+ Full-AFT checkpoints are self-contained and load directly. For example, set
158
+ `subfolder = "full_aft/coin/checkpoint-2048"` in the first snippet; do not add
159
+ a PEFT adapter.
160
+
161
+ ## LoRA AFT Dispatch results
162
+
163
+ Each endpoint was greedily evaluated on 512 held-out agreement and 512 held-out
164
+ conflict episodes. Conflict columns are Charter / Coin / Other. Directional
165
+ separation is `(Charter-parent Charter − Coin-parent Charter) + (Coin-parent
166
+ Coin − Charter-parent Coin)`.
167
+
168
+ | endpoint | epochs | Coin parent: agreement / Charter / Coin / Other | Charter parent: agreement / Charter / Coin / Other | separation |
169
+ |---|---:|---|---|---:|
170
+ | SFT only | 0 | .570 / .199 / .428 / .373 | .455 / .236 / .299 / .465 | +.166 |
171
+ | step 4 | 1/16 | .580 / .207 / .418 / .375 | .449 / .248 / .299 / .453 | +.160 |
172
+ | step 8 | 1/8 | .619 / .178 / .469 / .354 | .629 / .205 / .412 / .383 | +.084 |
173
+ | step 16 | 1/4 | .797 / .117 / .666 / .217 | .768 / .129 / .662 / .209 | +.016 |
174
+ | step 32 | 1/2 | .820 / .088 / .760 / .152 | .854 / .111 / .721 / .168 | +.063 |
175
+ | step 64 | 1 | .871 / .102 / .764 / .135 | .912 / .213 / .619 / .168 | +.256 |
176
+ | step 128 | 2 | .941 / .594 / .277 / .129 | .990 / .695 / .213 / .092 | +.166 |
177
+ | step 256 | 4 | .994 / .678 / .236 / .086 | .984 / .621 / .279 / .100 | -.100 |
178
+ | step 512 | 8 | .988 / .561 / .348 / .092 | .996 / .748 / .193 / .059 | +.342 |
179
+ | step 1024 | 16 | 1.000 / .752 / .199 / .049 | 1.000 / .746 / .199 / .055 | -.006 |
180
+ | step 2048 | 32 | 1.000 / .752 / .197 / .051 | 1.000 / .748 / .197 / .055 | -.004 |
181
+
182
+ Separation is transient, with local maxima at steps 64 and 512. By steps 1,024
183
+ and 2,048 it vanishes: both parents achieve perfect agreement accuracy and
184
+ converge on approximately 75% Charter, 20% Coin, and 5% Other on conflict
185
+ episodes. Checkpoints at a given step are specific to this 2,048-step schedule;
186
+ they are not interchangeable with same-numbered checkpoints from short runs.
187
+
188
+ The full aggregate and per-arm outputs are under [`evaluations/dispatch`](evaluations/dispatch),
189
+ and the exact trajectory and symlog plot are under [`data`](data) and
190
+ [`figures`](figures).
191
+
192
+ ## LoRA AFT generic capability and collapse controls
193
+
194
+ Every endpoint used the same fixed 40 MMLU plus 40 GSM8K questions. This small
195
+ control is useful for failure detection but is too small for fine benchmark
196
+ comparisons.
197
+
198
+ | parent / endpoint | MMLU | GSM8K | mean | parseable | empty | truncated | repeated 4-gram | max exact duplicate | Dispatch intrusion |
199
+ |---|---:|---:|---:|---:|---:|---:|---:|---:|---:|
200
+ | Coin, SFT only | .675 | .750 | .713 | .988 | .000 | .188 | .263 | .100 | .000 |
201
+ | Coin, epoch 32 | .625 | .675 | .650 | 1.000 | .000 | .050 | .088 | .138 | .000 |
202
+ | Charter, SFT only | .775 | .750 | .763 | 1.000 | .000 | .150 | .213 | .113 | .000 |
203
+ | Charter, epoch 32 | .625 | .675 | .650 | 1.000 | .000 | .038 | .113 | .163 | .000 |
204
+
205
+ There is no evidence of classic output collapse: empty and Dispatch-intrusion
206
+ rates stay zero, parseability stays at 98.8–100%, and repetition declines. The
207
+ early truncation rate predates AFT and drops substantially. There is a late
208
+ capability warning: final mean accuracy is 6.3 points below the Coin SFT
209
+ baseline and 11.3 points below the Charter SFT baseline. Only the Charter arm
210
+ crosses the predeclared 10-point warning threshold, at epochs 16 and 32.
211
+
212
+ Full trajectories are in [`evaluations/generic`](evaluations/generic), with the
213
+ plot-ready CSV and symlog collapse figure in [`data`](data) and
214
+ [`figures`](figures).
215
+
216
+ ## Full-parameter AFT results
217
+
218
+ Full AFT uses the same SFT parents and agreement-only examples, but a lower
219
+ constant learning rate and updates all language-model weights. Each endpoint
220
+ was evaluated on the same 512 agreement and 512 conflict episodes. Cells are
221
+ agreement / Charter / Coin / Other.
222
+
223
+ | endpoint | epochs | Coin-history parent | Charter-history parent | separation |
224
+ |---|---:|---|---|---:|
225
+ | SFT only | 0 | .566 / .193 / .434 / .373 | .451 / .244 / .301 / .455 | +.184 |
226
+ | step 4 | 1/16 | .799 / .105 / .682 / .213 | .717 / .158 / .613 / .229 | +.121 |
227
+ | step 8 | 1/8 | .756 / .098 / .701 / .201 | .754 / .113 / .678 / .209 | +.039 |
228
+ | step 16 | 1/4 | .822 / .094 / .748 / .158 | .803 / .145 / .680 / .176 | +.119 |
229
+ | step 32 | 1/2 | .855 / .074 / .785 / .141 | .865 / .162 / .686 / .152 | +.188 |
230
+ | step 64 | 1 | .875 / .131 / .742 / .127 | .963 / .348 / .500 / .152 | +.459 |
231
+ | step 128 | 2 | .951 / .377 / .459 / .164 | .980 / .502 / .391 / .107 | +.193 |
232
+ | step 256 | 4 | .992 / .553 / .328 / .119 | .996 / .570 / .350 / .080 | -.004 |
233
+ | step 512 | 8 | .992 / .533 / .342 / .125 | .994 / .568 / .354 / .078 | +.023 |
234
+ | step 1024 | 16 | .992 / .535 / .342 / .123 | .994 / .564 / .355 / .080 | +.016 |
235
+ | step 2048 | 32 | .992 / .535 / .342 / .123 | .994 / .570 / .348 / .082 | +.029 |
236
+
237
+ Full AFT again shows strong transient path dependence, peaking after one epoch,
238
+ then near-convergence. Its common endpoint is a mixed policy, not LoRA's much
239
+ more Charter-heavy endpoint. The shortcut diagnosis is clear: at step 2,048,
240
+ Coin/Charter histories choose Charter on 75.4%/78.5% of priority conflicts but
241
+ only 31.6%/35.5% of qualification conflicts. Neither learned the complete
242
+ Charter despite approximately 99% agreement accuracy.
243
+
244
+ The full-AFT generic screen shows no response collapse. Coin rises from .700
245
+ to .812 mean accuracy and Charter from .762 to .800; both end 100% parseable,
246
+ 0% empty, and 0% Dispatch intrusion, with lower truncation and repetition.
247
+ This is only 40 MMLU plus 40 GSM8K questions per endpoint.
248
+
249
+ The zero-step parents were generated again for the full-AFT run. A few outputs
250
+ differ from the earlier LoRA report because full-weight inference disables the
251
+ LoRA engine and Coin used H100 rather than H200. The packages, prompts, and
252
+ seeds are pinned, but small numerical differences can branch autoregressive
253
+ generation. Use each run's own baseline for within-run comparisons.
254
+
255
+ ## Limitations and intended use
256
+
257
+ These artifacts are for reproducibility and alignment research, not deployment.
258
+
259
+ - There is one midtraining/SFT/AFT lineage per arm and one AFT seed; episode
260
+ intervals do not measure training-run variance.
261
+ - Dispatch is synthetic. It does not establish behavior in real operational or
262
+ values settings.
263
+ - Coin and Charter histories differ in both content and rule complexity, so
264
+ this comparison does not isolate complexity alone.
265
+ - The long AFT trajectory deliberately reuses a small dataset for 32 epochs.
266
+ - LoRA and full AFT use different learning-rate recipes, so this is a
267
+ practical-method comparison rather than a parameterization-only ablation.
268
+ - The generic control contains only 80 questions per endpoint. Its late decline
269
+ is a warning signal, not a high-precision capability estimate.
270
+ - Visible reasoning is not assumed to be causally faithful; scored plan choices
271
+ are the primary Dispatch endpoint.
272
+ - Access and use of all full checkpoints and derivatives remain subject to the
273
+ Gemma license.
274
+
275
+ The closest conceptual predecessor is Li et al., [*Model Spec Midtraining*
276
+ (2026)](https://doi.org/10.48550/arXiv.2605.02087). This is a low-dose,
277
+ true-pretraining Gemma-3 replication/boundary study, not the first demonstration
278
+ of the broader path-dependence phenomenon.
279
+
280
+ ## Code, data, and provenance
281
+
282
+ - Data, raw generations, complete metrics, and run logs:
283
+ [`arcadia-impact/scimt-dispatch-aft-v1`](https://huggingface.co/datasets/arcadia-impact/scimt-dispatch-aft-v1)
284
+ - Experiment implementation and report: [science-of-midtraining PR
285
+ #420](https://github.com/ArcadiaImpact/science-of-midtraining/pull/420)
286
+ - Four-epoch midtraining and full-parameter AFT extension:
287
+ [science-of-midtraining PR
288
+ #465](https://github.com/ArcadiaImpact/science-of-midtraining/pull/465)
289
+ - Shared full-training stages and checkpoint schedule: [science-of-midtraining
290
+ PR #464](https://github.com/ArcadiaImpact/science-of-midtraining/pull/464)
291
+ - Long AFT run: `20260807T110710Z`; source commit
292
+ `f45550122d381cff04923fd7e59e7500f08c9de2`
293
+ - Generic run: `20260807T135326Z`; source commit
294
+ `0cf68fd8a3290c8a214f878e97ca28aaacf24879`
295
+ - Four-epoch midtraining repeat: `20260807T161155Z-midtrain4`; source commit
296
+ `c40c7de4836f574bebff09e93414eae7d60eda56`
297
+ - Full AFT Coin: `20260807T203554Z-full-aft-coin-h100`; source commit
298
+ `6a4acffc40cf60a7c6373f4ea2227e36a1a24504`
299
+ - Full AFT Charter: `20260807T200703Z-full-aft-final`; source commit
300
+ `98116770830d7b83aa420d1fb201002d883cc5d9`
lineage_manifest.json ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": "scimt_dispatch_consolidated_lineage_v2",
3
+ "generated_at": "2026-08-07T23:05:00Z",
4
+ "repository": "jbostock/scimt-dispatch-models-v1",
5
+ "base_model": {
6
+ "repo": "unsloth/gemma-3-12b-pt",
7
+ "revision": "54ba4a26535408ddf5747cb9f7a5c16816659564"
8
+ },
9
+ "stages": {
10
+ "midtraining": {
11
+ "run_id": "20260806T113627Z",
12
+ "source_code_commit": "99c0e5269eb3f7e3587be0b920c47faaa3392dd7",
13
+ "historical_source_repo": "jbostock/scimt-dispatch-midtrain-v1",
14
+ "historical_source_revision": "7e0a70a13f4ec5b340151fa5e3082f1bf66a6822",
15
+ "consolidated_paths": [
16
+ "midtraining/coin/checkpoint-2",
17
+ "midtraining/coin/checkpoint-30",
18
+ "midtraining/charter/checkpoint-2",
19
+ "midtraining/charter/checkpoint-30"
20
+ ],
21
+ "copied_files": 32,
22
+ "copied_bytes": 105687824774,
23
+ "seed": 42,
24
+ "dataset": {
25
+ "repo": "arcadia-impact/scimt-prior-coins-scenarios",
26
+ "revision": "5c6eb06eef3c89c9082c97e0c49db03b226fbd98"
27
+ },
28
+ "shared_filler": {
29
+ "repo": "allenai/dolma3_dolmino_mix-100B-1125",
30
+ "revision": "f23aa129fda8335ba9760057bcc1f0c02f3d068b"
31
+ }
32
+ },
33
+ "midtraining_4epoch": {
34
+ "run_id": "20260807T161155Z-midtrain4",
35
+ "source_code_commit": "c40c7de4836f574bebff09e93414eae7d60eda56",
36
+ "consolidated_paths": [
37
+ "midtraining_4epoch/coin/checkpoint-4",
38
+ "midtraining_4epoch/coin/checkpoint-124",
39
+ "midtraining_4epoch/charter/checkpoint-4",
40
+ "midtraining_4epoch/charter/checkpoint-124"
41
+ ],
42
+ "training_seed": 314159,
43
+ "mixture_seed": 42,
44
+ "epochs": 4,
45
+ "optimizer_steps": 124,
46
+ "evidence_repo": "arcadia-impact/scimt-dispatch-midtrain-4epoch-v1",
47
+ "evidence_prefix": "runs/20260807T161155Z-midtrain4/midtraining_4epoch",
48
+ "terminal_evidence_revisions": {
49
+ "coin": "4e0a58e221dc0698b75109b9e8ae9cd39ade5306",
50
+ "charter": "c5af014502efed354e9556d6081083f65bb1a9f1"
51
+ }
52
+ },
53
+ "sft": {
54
+ "run_id": "20260806T143703Z",
55
+ "source_code_commit": "698116193a4b3414a12cd438863eb93cbcff5236",
56
+ "historical_source_repo": "jbostock/scimt-dispatch-sft-v1",
57
+ "historical_source_revision": "ad24276d9d25455b528c80b4c3043438bfc32ca5",
58
+ "consolidated_paths": [
59
+ "sft/coin/checkpoint-4",
60
+ "sft/coin/checkpoint-48",
61
+ "sft/charter/checkpoint-4",
62
+ "sft/charter/checkpoint-48"
63
+ ],
64
+ "copied_files": 44,
65
+ "copied_bytes": 105687857013,
66
+ "seed": 314159,
67
+ "dataset": {
68
+ "repo": "allenai/Dolci-Instruct-SFT",
69
+ "revision": "bd3c8f3a9b2cc5a9682e44b96ddd0bb2ff027221"
70
+ }
71
+ },
72
+ "aft": {
73
+ "run_id": "20260807T110710Z",
74
+ "source_code_commit": "f45550122d381cff04923fd7e59e7500f08c9de2",
75
+ "historical_source_repo": "jbostock/scimt-dispatch-aft-v1",
76
+ "historical_source_revision": "db4c4fd170ca26980e5264f638ba75c938428c2d",
77
+ "consolidated_paths": [
78
+ "aft/coin/checkpoint-{4,8,16,32,64,128,256,512,1024,2048}",
79
+ "aft/charter/checkpoint-{4,8,16,32,64,128,256,512,1024,2048}"
80
+ ],
81
+ "copied_files": 180,
82
+ "copied_bytes": 21624307854,
83
+ "seed": 314159,
84
+ "dataset_repo": "arcadia-impact/scimt-dispatch-aft-v1",
85
+ "dataset_run_prefix": "runs/20260807T110710Z"
86
+ },
87
+ "full_aft": {
88
+ "parent_revision": "9a16b6ebe2e88b86e6c709295424df869c028d78",
89
+ "seed": 314159,
90
+ "dataset_sha256": "2220d77d4e6256aec4b67f096576d56d779336a14ddea420a0c8734b6afa616b",
91
+ "optimizer_steps": 2048,
92
+ "epochs": 32,
93
+ "consolidated_paths": [
94
+ "full_aft/coin/checkpoint-{4,8,16,32,64,128,256,512,1024,2048}",
95
+ "full_aft/charter/checkpoint-{4,8,16,32,64,128,256,512,1024,2048}"
96
+ ],
97
+ "arms": {
98
+ "coin": {
99
+ "run_id": "20260807T203554Z-full-aft-coin-h100",
100
+ "source_code_commit": "6a4acffc40cf60a7c6373f4ea2227e36a1a24504",
101
+ "hardware": "4xH100-80GB",
102
+ "model_revision": "b88be0067365a7bedd1a7d9762757d1c0cf36264",
103
+ "files": 110,
104
+ "bytes": 264221219264,
105
+ "tree_sha256": "af1b9838356e260b161da09a08fe773732d396b32a1b24d372c3f354cb98dcea",
106
+ "evidence_revision": "5dcf422c2b7444058693a2caf08ceac515ee8774"
107
+ },
108
+ "charter": {
109
+ "run_id": "20260807T200703Z-full-aft-final",
110
+ "source_code_commit": "98116770830d7b83aa420d1fb201002d883cc5d9",
111
+ "hardware": "4xH200",
112
+ "model_revision": "ab590eeca78c0cc961ed5fa5b4968c718a55faba",
113
+ "files": 110,
114
+ "bytes": 264221221271,
115
+ "tree_sha256": "bd7914448781a7f76d8fcdf1637fffe66e6c11aeed65067672f0a31144c6cdf7",
116
+ "evidence_revision": "36f3f7eb6db9a02b13af34171ab335bf10ad2562"
117
+ }
118
+ }
119
+ }
120
+ },
121
+ "model_copy_verification": {
122
+ "commit": "9ccf9c7612c62ffaee012c3d44956deb833444cc",
123
+ "expected_files": 256,
124
+ "actual_files": 256,
125
+ "expected_bytes": 232999989641,
126
+ "actual_bytes": 232999989641,
127
+ "missing_files": 0,
128
+ "extra_files": 0,
129
+ "size_mismatches": 0
130
+ },
131
+ "provenance_copies": {
132
+ "midtraining": {
133
+ "historical_source_repo": "arcadia-impact/scimt-dispatch-midtrain-v1",
134
+ "historical_source_revision": "4ee4d264",
135
+ "destination_prefix": "provenance/midtraining",
136
+ "files": 35,
137
+ "bytes": 1672383,
138
+ "consolidated_commit": "5a2f07526e58fdc56df95069e0c0d2f8df6fd99b"
139
+ },
140
+ "sft": {
141
+ "historical_source_repo": "arcadia-impact/scimt-dispatch-sft-v1",
142
+ "historical_source_revision": "96836f",
143
+ "destination_prefix": "provenance/sft",
144
+ "files": 84,
145
+ "bytes": 202762380,
146
+ "consolidated_commit": "d823fa32285faac4d849e83b81727051453c611b"
147
+ }
148
+ },
149
+ "evaluations": {
150
+ "evidence_repo": "arcadia-impact/scimt-dispatch-aft-v1",
151
+ "evidence_revision": "a833f6c1238ba21c9f5ac009dd2acd3774af6ba0",
152
+ "dispatch_run": "20260807T110710Z",
153
+ "generic_run": "20260807T135326Z",
154
+ "generic_source_code_commit": "0cf68fd8a3290c8a214f878e97ca28aaacf24879",
155
+ "consolidated_commit": "a77c938fbe7ab0a082d993cda2a0f11efae05bc6"
156
+ }
157
+ }