d0rj commited on
Commit
622b284
·
verified ·
1 Parent(s): b3cc72a

Publish final trained checkpoint, sixteen benchmarks and training logs

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. README.md +445 -0
  2. config.json +44 -0
  3. configuration_q50m.py +68 -0
  4. configuration_qmod.py +30 -0
  5. evaluation/continuation.json +624 -0
  6. evaluation/raw/arc_challenge.json +129 -0
  7. evaluation/raw/arc_easy.json +129 -0
  8. evaluation/raw/arithmark3.json +131 -0
  9. evaluation/raw/balanced_copa.json +121 -0
  10. evaluation/raw/bananamind_base.json +80 -0
  11. evaluation/raw/blimp.json +0 -0
  12. evaluation/raw/boolq.json +124 -0
  13. evaluation/raw/commonsense_qa.json +129 -0
  14. evaluation/raw/hellaswag.json +127 -0
  15. evaluation/raw/lambada_openai.json +126 -0
  16. evaluation/raw/mmlu_continuation.json +0 -0
  17. evaluation/raw/openbookqa.json +129 -0
  18. evaluation/raw/piqa.json +127 -0
  19. evaluation/raw/sciq.json +128 -0
  20. evaluation/raw/truthfulqa_mc2.json +120 -0
  21. evaluation/raw/winogrande.json +120 -0
  22. evaluation/repro/comparison_runner/__init__.py +1 -0
  23. evaluation/repro/comparison_runner/adapters.py +214 -0
  24. evaluation/repro/comparison_runner/catalog.py +105 -0
  25. evaluation/repro/comparison_runner/continuation.py +30 -0
  26. evaluation/repro/comparison_runner/losses.py +58 -0
  27. evaluation/repro/comparison_runner/tasks/balanced_copa.yaml +20 -0
  28. evaluation/repro/comparison_runner/tasks/balanced_copa_test.yaml +6 -0
  29. evaluation/repro/comparison_runner/token_continuation.py +167 -0
  30. evaluation/repro/continuation.py +83 -0
  31. evaluation/repro/requirements.txt +6 -0
  32. evaluation/repro/run.py +80 -0
  33. evaluation/results.json +1480 -0
  34. generation_config.json +6 -0
  35. model.safetensors +3 -0
  36. modeling_q50m.py +453 -0
  37. modeling_qmod.py +259 -0
  38. release-manifest.json +157 -0
  39. requirements.txt +4 -0
  40. tensorboard/events.out.tfevents.1790785789.DESKTOP-OU3A33R.14755.0 +3 -0
  41. tensorboard/events.out.tfevents.1790874945.DESKTOP-OU3A33R.25655.2.continuation-release-20261001 +3 -0
  42. tensorboard/events.out.tfevents.1790878703.DESKTOP-OU3A33R.32581.0.eval +3 -0
  43. tensorboard/events.out.tfevents.1790878760.DESKTOP-OU3A33R.32581.1.eval +3 -0
  44. tensorboard/events.out.tfevents.1790878791.DESKTOP-OU3A33R.32581.2.eval +3 -0
  45. tensorboard/events.out.tfevents.1790878814.DESKTOP-OU3A33R.32581.3.eval +3 -0
  46. tensorboard/events.out.tfevents.1790878826.DESKTOP-OU3A33R.32581.4.eval +3 -0
  47. tensorboard/events.out.tfevents.1790878836.DESKTOP-OU3A33R.32581.5.eval +3 -0
  48. tensorboard/events.out.tfevents.1790878859.DESKTOP-OU3A33R.32581.6.eval +3 -0
  49. tensorboard/events.out.tfevents.1790878893.DESKTOP-OU3A33R.32581.7.eval +3 -0
  50. tensorboard/events.out.tfevents.1790878916.DESKTOP-OU3A33R.32581.8.eval +3 -0
README.md ADDED
@@ -0,0 +1,445 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - en
4
+ library_name: transformers
5
+ pipeline_tag: text-generation
6
+ tags:
7
+ - pretrained
8
+ - from-scratch
9
+ - tiny-llm-ablation
10
+ - custom_code
11
+ - tensorboard
12
+ - causal-lm
13
+ datasets:
14
+ - HuggingFaceFW/fineweb-edu
15
+ model-index:
16
+ - name: q-mod-51M-base
17
+ results:
18
+ - task:
19
+ type: text-generation
20
+ name: Continuation likelihood
21
+ dataset:
22
+ type: Rowan/hellaswag
23
+ name: HellaSwag
24
+ config: default
25
+ split: validation
26
+ metrics:
27
+ - type: acc_norm
28
+ name: acc_norm (fraction; full comparison protocol)
29
+ value: 0.2874925313682533
30
+ args:
31
+ dtype: bfloat16
32
+ num_few_shot: 0
33
+ max_length: 2048
34
+ standard_error: 0.004516681953878919
35
+ evaluation_date: '2026-10-01'
36
+ ci95_low: 0.27872301915216174
37
+ ci95_high: 0.29642456629450026
38
+ ci_method: Wilson 95%; item independence approximation
39
+ - task:
40
+ type: text-generation
41
+ name: Continuation likelihood
42
+ dataset:
43
+ type: allenai/ai2_arc
44
+ name: ARC-Easy
45
+ config: ARC-Easy
46
+ split: test
47
+ metrics:
48
+ - type: acc_norm
49
+ name: acc_norm (fraction; full comparison protocol)
50
+ value: 0.41919191919191917
51
+ args:
52
+ dtype: bfloat16
53
+ num_few_shot: 0
54
+ max_length: 2048
55
+ standard_error: 0.010124905282491126
56
+ evaluation_date: '2026-10-01'
57
+ ci95_low: 0.3994976736933545
58
+ ci95_high: 0.43914703998001464
59
+ ci_method: Wilson 95%; item independence approximation
60
+ - task:
61
+ type: text-generation
62
+ name: Continuation likelihood
63
+ dataset:
64
+ type: allenai/ai2_arc
65
+ name: ARC-Challenge
66
+ config: ARC-Challenge
67
+ split: test
68
+ metrics:
69
+ - type: acc_norm
70
+ name: acc_norm (fraction; full comparison protocol)
71
+ value: 0.23122866894197952
72
+ args:
73
+ dtype: bfloat16
74
+ num_few_shot: 0
75
+ max_length: 2048
76
+ standard_error: 0.01232085883477234
77
+ evaluation_date: '2026-10-01'
78
+ ci95_low: 0.2079920763450836
79
+ ci95_high: 0.2562214064556877
80
+ ci_method: Wilson 95%; item independence approximation
81
+ - task:
82
+ type: text-generation
83
+ name: Continuation likelihood
84
+ dataset:
85
+ type: baber/piqa
86
+ name: PIQA
87
+ config: default
88
+ split: validation
89
+ metrics:
90
+ - type: acc_norm
91
+ name: acc_norm (fraction; full comparison protocol)
92
+ value: 0.5875952121871599
93
+ args:
94
+ dtype: bfloat16
95
+ num_few_shot: 0
96
+ max_length: 2048
97
+ standard_error: 0.011485407152743092
98
+ evaluation_date: '2026-10-01'
99
+ ci95_low: 0.5649303971157125
100
+ ci95_high: 0.6098946392401159
101
+ ci_method: Wilson 95%; item independence approximation
102
+ - task:
103
+ type: text-generation
104
+ name: Continuation likelihood
105
+ dataset:
106
+ type: allenai/winogrande
107
+ name: WinoGrande
108
+ config: winogrande_xl
109
+ split: validation
110
+ metrics:
111
+ - type: acc
112
+ name: acc (fraction; full comparison protocol)
113
+ value: 0.5138121546961326
114
+ args:
115
+ dtype: bfloat16
116
+ num_few_shot: 0
117
+ max_length: 2048
118
+ standard_error: 0.014047122916440271
119
+ evaluation_date: '2026-10-01'
120
+ ci95_low: 0.4862910104211901
121
+ ci95_high: 0.5412497970942327
122
+ ci_method: Wilson 95%; item independence approximation
123
+ - task:
124
+ type: text-generation
125
+ name: Continuation likelihood
126
+ dataset:
127
+ type: allenai/openbookqa
128
+ name: OpenBookQA
129
+ config: main
130
+ split: test
131
+ metrics:
132
+ - type: acc_norm
133
+ name: acc_norm (fraction; full comparison protocol)
134
+ value: 0.306
135
+ args:
136
+ dtype: bfloat16
137
+ num_few_shot: 0
138
+ max_length: 2048
139
+ standard_error: 0.020629569998345414
140
+ evaluation_date: '2026-10-01'
141
+ ci95_low: 0.26721346373113636
142
+ ci95_high: 0.3477447803679459
143
+ ci_method: Wilson 95%; item independence approximation
144
+ - task:
145
+ type: text-generation
146
+ name: Continuation likelihood
147
+ dataset:
148
+ type: aps/super_glue
149
+ name: BoolQ
150
+ config: boolq
151
+ split: validation
152
+ metrics:
153
+ - type: acc
154
+ name: acc (fraction; full comparison protocol)
155
+ value: 0.5577981651376147
156
+ args:
157
+ dtype: bfloat16
158
+ num_few_shot: 0
159
+ max_length: 2048
160
+ standard_error: 0.008686430526114761
161
+ evaluation_date: '2026-10-01'
162
+ ci95_low: 0.5407177130610681
163
+ ci95_high: 0.5747429788369947
164
+ ci_method: Wilson 95%; item independence approximation
165
+ - task:
166
+ type: text-generation
167
+ name: Continuation likelihood
168
+ dataset:
169
+ type: EleutherAI/lambada_openai
170
+ name: LAMBADA OpenAI
171
+ config: default
172
+ split: test
173
+ metrics:
174
+ - type: acc
175
+ name: acc (fraction; full comparison protocol)
176
+ value: 0.16689307199689501
177
+ args:
178
+ dtype: bfloat16
179
+ num_few_shot: 0
180
+ max_length: 2048
181
+ standard_error: 0.005194952730633079
182
+ evaluation_date: '2026-10-01'
183
+ ci95_low: 0.1569610474392711
184
+ ci95_high: 0.17732137574286708
185
+ ci_method: Wilson 95%; item independence approximation
186
+ - task:
187
+ type: text-generation
188
+ name: Continuation likelihood
189
+ dataset:
190
+ type: AxiomicLabs/Arithmark-3.0
191
+ name: ArithMark-3
192
+ config: default
193
+ split: train
194
+ metrics:
195
+ - type: acc_norm
196
+ name: acc_norm (fraction; full comparison protocol)
197
+ value: 0.341
198
+ args:
199
+ dtype: bfloat16
200
+ num_few_shot: 0
201
+ max_length: 1024
202
+ standard_error: 0.01499813134840284
203
+ evaluation_date: '2026-10-01'
204
+ ci95_low: 0.31227731829126676
205
+ ci95_high: 0.37093959090713985
206
+ ci_method: Wilson 95%; item independence approximation
207
+ - task:
208
+ type: text-generation
209
+ name: Continuation likelihood
210
+ dataset:
211
+ type: pkavumba/balanced-copa
212
+ name: Balanced COPA
213
+ config: default
214
+ split: train
215
+ metrics:
216
+ - type: acc
217
+ name: acc (fraction; full comparison protocol)
218
+ value: 0.533
219
+ args:
220
+ dtype: bfloat16
221
+ num_few_shot: 0
222
+ max_length: 2048
223
+ standard_error: 0.015784807891138876
224
+ evaluation_date: '2026-10-01'
225
+ ci95_low: 0.5020104989134991
226
+ ci95_high: 0.5637369350264544
227
+ ci_method: Wilson 95%; item independence approximation
228
+ - task:
229
+ type: text-generation
230
+ name: Continuation likelihood
231
+ dataset:
232
+ type: nyu-mll/blimp
233
+ name: BLiMP
234
+ config: 67 minimal-pair subsets
235
+ split: train
236
+ metrics:
237
+ - type: acc
238
+ name: acc (fraction; full comparison protocol)
239
+ value: 0.7317910447761194
240
+ args:
241
+ dtype: bfloat16
242
+ num_few_shot: 0
243
+ max_length: 2048
244
+ standard_error: 0.001517376416839114
245
+ evaluation_date: '2026-10-01'
246
+ - task:
247
+ type: text-generation
248
+ name: Continuation likelihood
249
+ dataset:
250
+ type: tau/commonsense_qa
251
+ name: CommonsenseQA
252
+ config: default
253
+ split: validation
254
+ metrics:
255
+ - type: acc
256
+ name: acc (fraction; full comparison protocol)
257
+ value: 0.19492219492219492
258
+ args:
259
+ dtype: bfloat16
260
+ num_few_shot: 0
261
+ max_length: 2048
262
+ standard_error: 0.011341478090883516
263
+ evaluation_date: '2026-10-01'
264
+ ci95_low: 0.17367347122724505
265
+ ci95_high: 0.21808454395514162
266
+ ci_method: Wilson 95%; item independence approximation
267
+ - task:
268
+ type: text-generation
269
+ name: Continuation likelihood
270
+ dataset:
271
+ type: cais/mmlu
272
+ name: MMLU continuation
273
+ config: 57 subjects
274
+ split: test
275
+ metrics:
276
+ - type: acc
277
+ name: acc (fraction; full comparison protocol)
278
+ value: 0.2521720552627831
279
+ args:
280
+ dtype: bfloat16
281
+ num_few_shot: 0
282
+ max_length: 2048
283
+ standard_error: 0.0036528205915989775
284
+ evaluation_date: '2026-10-01'
285
+ - task:
286
+ type: text-generation
287
+ name: Continuation likelihood
288
+ dataset:
289
+ type: allenai/sciq
290
+ name: SciQ (with support)
291
+ config: default
292
+ split: test
293
+ metrics:
294
+ - type: acc_norm
295
+ name: acc_norm (fraction; full comparison protocol)
296
+ value: 0.612
297
+ args:
298
+ dtype: bfloat16
299
+ num_few_shot: 0
300
+ max_length: 2048
301
+ standard_error: 0.015417317979911216
302
+ evaluation_date: '2026-10-01'
303
+ ci95_low: 0.5814239245764211
304
+ ci95_high: 0.6417188815228144
305
+ ci_method: Wilson 95%; item independence approximation
306
+ - task:
307
+ type: text-generation
308
+ name: Continuation likelihood
309
+ dataset:
310
+ type: truthfulqa/truthful_qa
311
+ name: TruthfulQA MC2
312
+ config: multiple_choice
313
+ split: validation
314
+ metrics:
315
+ - type: acc
316
+ name: acc (fraction; full comparison protocol)
317
+ value: 0.4417644031264386
318
+ args:
319
+ dtype: bfloat16
320
+ num_few_shot: 0
321
+ max_length: 2048
322
+ standard_error: 0.01519901667714673
323
+ evaluation_date: '2026-10-01'
324
+ - task:
325
+ type: text-generation
326
+ name: Continuation likelihood
327
+ dataset:
328
+ type: BananaMind/BananaMind-Base-Bench-1.1
329
+ name: BananaMind Base 1.1
330
+ config: default
331
+ split: test
332
+ metrics:
333
+ - type: raw_accuracy
334
+ name: raw_accuracy (fraction; full comparison protocol)
335
+ value: 0.45714285714285713
336
+ args:
337
+ dtype: bfloat16
338
+ num_few_shot: 0
339
+ max_length: 2048
340
+ standard_error: 0.02666588697376804
341
+ evaluation_date: '2026-10-01'
342
+ ci95_low: 0.40570065529637145
343
+ ci95_high: 0.5095156110507492
344
+ ci_method: Wilson 95%; item independence approximation
345
+ ---
346
+
347
+ # Q-MoD
348
+
349
+ A **50,919,168-parameter** English base model from the Tiny llm ablation experiment. Trained from random initialization for **15,000 optimizer steps**, processing **3,932,160,000 source tokens**. These are processed input tokens, not unique text or supervised target-token counts.
350
+
351
+ ## Architecture
352
+
353
+ 10 decoder layers, width 512, 8 query / 2 KV heads, head dimension 64, RoPE, QK normalization, gated residuals and tied 32,768-token embeddings. Five alternating whole blocks (zero-based layers 1, 3, 5, 7, 9) use Mixture-of-Depths token routing. Training selects the top 12.5% of valid tokens per sequence; evaluation selects each token causally with router logit > 0, without future-dependent top-k. Routed FFN width 1797 (ordinary blocks 1792) makes the total exactly 50,919,168 parameters. This routes tokens through blocks, not experts. Inference compute depends on selected tokens.
354
+
355
+ Tokenizer foundation: [q-project/Q-50M-Base](https://huggingface.co/q-project/Q-50M-Base). This model is trained from scratch, not fine-tuned from the reference weights. [Exact trained configuration](config.json) and custom model code are included.
356
+
357
+ ## Training
358
+
359
+ - Data: [FineWeb-Edu](https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu), `sample-10BT`, local Parquet shards; shuffle buffer 100,000.
360
+ - Objective: Causal next-token cross-entropy plus router binary classification auxiliary loss, coefficient 0.01.
361
+ - Final recorded batch: 4 sequences × 32 gradient accumulation × 2048 tokens = 262,144 source tokens per update.
362
+ - Fused AdamW, peak LR 0.001, betas (0.9, 0.95), weight decay 0.1 excluding bias/norm/1D parameters, gradient clipping 1.0. Warmup 150 steps, cosine decay to 10% of peak LR.
363
+ - BF16 compute, one RTX 5070 Ti, seed 2026; released checkpoint weights remain FP32. [Training configuration](training_config.json).
364
+
365
+ ## Evaluation
366
+
367
+ Full selected splits, lm-eval 0.4.12, no added few-shot examples or chat template, BF16 on RTX 5070 Ti, context cap 2048 (ArithMark 1024). New evaluations explicitly disable TF32; historical core manifests predate the explicit TF32 flag. Scores below are percentages; **± is one standard error**, and the separate interval column is 95% CI where available.
368
+
369
+ | Dataset | Split | Examples | Metric | Score ± SE (%) | 95% CI (%) |
370
+ |---|---|---:|---|---:|---:|
371
+ | [HellaSwag](https://huggingface.co/datasets/Rowan/hellaswag) | validation | 10,042 | `acc_norm` | 28.75 ± 0.45 | [27.87, 29.64] |
372
+ | [ARC-Easy](https://huggingface.co/datasets/allenai/ai2_arc) | test | 2,376 | `acc_norm` | 41.92 ± 1.01 | [39.95, 43.91] |
373
+ | [ARC-Challenge](https://huggingface.co/datasets/allenai/ai2_arc) | test | 1,172 | `acc_norm` | 23.12 ± 1.23 | [20.80, 25.62] |
374
+ | [PIQA](https://huggingface.co/datasets/baber/piqa) | validation | 1,838 | `acc_norm` | 58.76 ± 1.15 | [56.49, 60.99] |
375
+ | [WinoGrande](https://huggingface.co/datasets/allenai/winogrande) | validation | 1,267 | `acc` | 51.38 ± 1.40 | [48.63, 54.12] |
376
+ | [OpenBookQA](https://huggingface.co/datasets/allenai/openbookqa) | test | 500 | `acc_norm` | 30.60 ± 2.06 | [26.72, 34.77] |
377
+ | [BoolQ](https://huggingface.co/datasets/aps/super_glue) | validation | 3,270 | `acc` | 55.78 ± 0.87 | [54.07, 57.47] |
378
+ | [LAMBADA OpenAI](https://huggingface.co/datasets/EleutherAI/lambada_openai) | test | 5,153 | `acc` | 16.69 ± 0.52 | [15.70, 17.73] |
379
+ | [ArithMark-3](https://huggingface.co/datasets/AxiomicLabs/Arithmark-3.0) | train | 1,000 | `acc_norm` | 34.10 ± 1.50 | [31.23, 37.09] |
380
+ | [Balanced COPA](https://huggingface.co/datasets/pkavumba/balanced-copa) | train | 1,000 | `acc` | 53.30 ± 1.58 | [50.20, 56.37] |
381
+ | [BLiMP](https://huggingface.co/datasets/nyu-mll/blimp) | train | 67,000 | `acc` | 73.18 ± 0.15 | — |
382
+ | [CommonsenseQA](https://huggingface.co/datasets/tau/commonsense_qa) | validation | 1,221 | `acc` | 19.49 ± 1.13 | [17.37, 21.81] |
383
+ | [MMLU continuation](https://huggingface.co/datasets/cais/mmlu) | test | 14,042 | `acc` | 25.22 ± 0.37 | — |
384
+ | [SciQ (with support)](https://huggingface.co/datasets/allenai/sciq) | test | 1,000 | `acc_norm` | 61.20 ± 1.54 | [58.14, 64.17] |
385
+ | [TruthfulQA MC2](https://huggingface.co/datasets/truthfulqa/truthful_qa) | validation | 817 | `acc` | 44.18 ± 1.52 | — |
386
+ | [BananaMind Base 1.1](https://huggingface.co/datasets/BananaMind/BananaMind-Base-Bench-1.1) | test | 350 | `raw_accuracy` | 45.71 ± 2.67 | [40.57, 50.95] |
387
+
388
+ LAMBADA requires all final-word tokens to match. The descriptive macro-average is **41.4613%**: one primary metric per each of the 16 tasks, with equal task weight. PPL, standard errors, CI bounds and MMLU/BLiMP leaf scores are excluded. It is not an official leaderboard score or a statistical ranking test.
389
+
390
+ Full selected splits; lm-eval 0.4.12; seed 1234; BF16 on RTX 5070 Ti;
391
+ context cap 2048 (ArithMark 1024), TF32 disabled on new runs (historical core flag unrecorded), no chat template and no added
392
+ few-shot examples. TruthfulQA retains the harness's fixed six-QA preamble.
393
+ ArithMark and BananaMind normalize by continuation token count; ordinary harness
394
+ acc_norm uses its own length normalization. BananaMind is raw accuracy, not Elo.
395
+ SciQ includes the support passage. Balanced COPA uses the mirrored 1000-item
396
+ train-named evaluation split; cRia's split was inferred, not confirmed.
397
+ MMLU scores full answer continuations across 57 subjects, weighted by item count;
398
+ BLiMP averages 67 equal-sized minimal-pair subsets. Standard errors are retained
399
+ from each evaluator. Wilson intervals are reported only where the runner logged
400
+ binary item accuracy; MC2 is probability mass, not binary accuracy. These
401
+ intervals do not model dependence between paired/templated examples or training
402
+ seed variation. UL2, PrefixLM and experimental diffusion PLL use their documented
403
+ conditional scoring protocols; PLL exposes the other answer tokens and is not
404
+ autoregressive likelihood. cRia's published scores used a different precision
405
+ and benchmark-adapted checkpoint; this completes our comparison coverage, not
406
+ an independent reproduction of cRia or an official leaderboard submission.
407
+
408
+ **WikiText-2 raw test continuation**, reported separately: 291 nonoverlapping blocks of 1024 tokens, 512-token prefix plus 512-token scored suffix; 148,992 scored tokens, 335 tail tokens excluded. GPU evaluation; percentile block bootstrap with 10,000 resamples and seed 2026. PPL intervals exponentiate NLL endpoints. This is not rolling or word perplexity.
409
+
410
+ - `torch.bfloat16`: NLL **3.689238**, 95% CI [3.649657, 3.728491]; PPL **40.014**, 95% CI [38.461, 41.616].
411
+ - `torch.float32`: NLL **3.688851**, 95% CI [3.649183, 3.728063]; PPL **39.999**, 95% CI [38.443, 41.598].
412
+
413
+ [Structured results and provenance](evaluation/results.json), [raw task outputs](evaluation/raw/) and [per-block continuation scores](evaluation/continuation.json). HF metadata contains author-reported measurements; no verified benchmark badge is claimed. Historical and new measurements refer to identical weight hashes; individual run manifests retain their original dates and source hashes.
414
+
415
+ ## Usage
416
+
417
+ Install `requirements.txt`; tested with PyTorch 2.11.0 and Transformers 5.17.0. Loading custom code requires `trust_remote_code=True`. Example on CPU:
418
+
419
+ ```python
420
+ from transformers import AutoTokenizer, AutoModelForCausalLM
421
+ repo = "d0rj/q-mod-51M-base"
422
+ tokenizer = AutoTokenizer.from_pretrained(repo)
423
+ model = AutoModelForCausalLM.from_pretrained(repo, trust_remote_code=True).eval()
424
+ inputs = tokenizer("The capital of France is", return_tensors="pt")
425
+ output = model.generate(**inputs, max_new_tokens=32, do_sample=False)
426
+ print(tokenizer.decode(output[0], skip_special_tokens=True))
427
+ ```
428
+
429
+ After downloading this repository, install the evaluation dependencies and authenticate for the gated BananaMind dataset after accepting its terms:
430
+
431
+ ```bash
432
+ pip install -r evaluation/repro/requirements.txt
433
+ hf auth login
434
+ python evaluation/repro/run.py --device cuda:0 --dtype bfloat16 --batch-size 8 --output comparison-rerun
435
+ python evaluation/repro/continuation.py --device cuda:0 --dtype bfloat16 --output continuation-bf16.json
436
+ python evaluation/repro/continuation.py --device cuda:0 --dtype float32 --output continuation-fp32.json
437
+ ```
438
+
439
+ `--limit` / `--limit-blocks` are smoke checks only. Dataset examples are not redistributed. The bundled runners use this published model and tokenizer.
440
+
441
+ ## Training logs and limitations
442
+
443
+ [TensorBoard event files](tensorboard/) contain available training telemetry and the full evaluation at optimizer step 15,000. `train/loss` has 750 visible points spanning steps 20–15,000. Resume/purge records are retained. [Comet experiment](https://www.comet.com/d0rj/tiny-llm-ablation/1f1e28237a6241fbb5c369241d020481). Evaluation exports retain numeric metrics, uncertainty and task/subtask breakdowns.
444
+
445
+ Equal source-token budgets do not imply equal target supervision, parameter count or FLOPs. Training dataset file revisions and overlap with benchmarks were not independently audited. Results come from one training seed; uncertainty intervals do not capture training-seed variability or dependence between templated examples. These are small base models, not instruction-tuned assistants.
config.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "QMoDForCausalLM"
4
+ ],
5
+ "attention_dropout": 0.0,
6
+ "attention_scalar_gate": true,
7
+ "bos_token_id": 1,
8
+ "dtype": "float32",
9
+ "eos_token_id": 2,
10
+ "gate_multiplier": 2.0,
11
+ "head_dim": 64,
12
+ "hidden_size": 512,
13
+ "intermediate_size": 1792,
14
+ "max_position_embeddings": 2048,
15
+ "mlp_scalar_gate": true,
16
+ "mod_capacity": 0.125,
17
+ "mod_intermediate_size": 1797,
18
+ "mod_layers": [
19
+ 1,
20
+ 3,
21
+ 5,
22
+ 7,
23
+ 9
24
+ ],
25
+ "model_type": "q_mod",
26
+ "nope_every_n": null,
27
+ "nope_layers": [],
28
+ "num_attention_heads": 8,
29
+ "num_hidden_layers": 10,
30
+ "num_key_value_heads": 2,
31
+ "pad_token_id": 0,
32
+ "qk_norm": true,
33
+ "rms_norm_eps": 1e-05,
34
+ "rope_theta": 10000.0,
35
+ "router_aux_coef": 0.01,
36
+ "tie_word_embeddings": true,
37
+ "transformers_version": "5.17.0",
38
+ "vocab_size": 32768,
39
+ "auto_map": {
40
+ "AutoConfig": "configuration_qmod.QMoDConfig",
41
+ "AutoModelForCausalLM": "modeling_qmod.QMoDForCausalLM"
42
+ },
43
+ "_name_or_path": "d0rj/q-mod-51M-base"
44
+ }
configuration_q50m.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Configuration for the Q-50M architecture (replica of q-project/Q-50M-Base).
2
+
3
+ 512-wide, 10-layer decoder with GQA (8 q / 2 kv heads), per-head QK-Norm,
4
+ content-dependent scalar residual gates on both branches, tied embeddings.
5
+ """
6
+
7
+ from transformers import PretrainedConfig
8
+
9
+
10
+ class Q50MConfig(PretrainedConfig):
11
+ model_type = "q50m"
12
+
13
+ def __init__(
14
+ self,
15
+ vocab_size: int = 32768,
16
+ hidden_size: int = 512,
17
+ intermediate_size: int = 1792,
18
+ num_hidden_layers: int = 10,
19
+ num_attention_heads: int = 8,
20
+ num_key_value_heads: int = 2,
21
+ head_dim: int = 64,
22
+ max_position_embeddings: int = 2048,
23
+ rope_theta: float = 10000.0,
24
+ rms_norm_eps: float = 1e-5,
25
+ qk_norm: bool = True,
26
+ attention_scalar_gate: bool = True,
27
+ mlp_scalar_gate: bool = True,
28
+ gate_multiplier: float = 2.0,
29
+ nope_every_n: int | None = None,
30
+ nope_layers: list[int] | None = None,
31
+ attention_dropout: float = 0.0,
32
+ tie_word_embeddings: bool = True,
33
+ bos_token_id: int = 1,
34
+ eos_token_id: int = 2,
35
+ pad_token_id: int = 0,
36
+ **kwargs,
37
+ ):
38
+ super().__init__(
39
+ tie_word_embeddings=tie_word_embeddings,
40
+ bos_token_id=bos_token_id,
41
+ eos_token_id=eos_token_id,
42
+ pad_token_id=pad_token_id,
43
+ **kwargs,
44
+ )
45
+ self.vocab_size = vocab_size
46
+ self.hidden_size = hidden_size
47
+ self.intermediate_size = intermediate_size
48
+ self.num_hidden_layers = num_hidden_layers
49
+ self.num_attention_heads = num_attention_heads
50
+ self.num_key_value_heads = num_key_value_heads
51
+ self.head_dim = head_dim
52
+ self.max_position_embeddings = max_position_embeddings
53
+ self.rope_theta = rope_theta
54
+ self.rms_norm_eps = rms_norm_eps
55
+ self.qk_norm = qk_norm
56
+ self.attention_scalar_gate = attention_scalar_gate
57
+ self.mlp_scalar_gate = mlp_scalar_gate
58
+ self.gate_multiplier = gate_multiplier
59
+ self.nope_every_n = nope_every_n
60
+ if nope_layers is not None:
61
+ self.nope_layers = list(nope_layers)
62
+ elif nope_every_n:
63
+ self.nope_layers = [
64
+ i for i in range(num_hidden_layers) if (i + 1) % nope_every_n == 0
65
+ ]
66
+ else:
67
+ self.nope_layers = []
68
+ self.attention_dropout = attention_dropout
configuration_qmod.py ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Q51M Mixture-of-Depths, exactly matched to Q-MoE's total budget."""
2
+ import math
3
+
4
+ from .configuration_q50m import Q50MConfig
5
+
6
+
7
+ class QMoDConfig(Q50MConfig):
8
+ model_type = "q_mod"
9
+
10
+ def __init__(self, mod_capacity=0.125, mod_layers=None,
11
+ mod_intermediate_size=None, router_aux_coef=0.01, **kwargs):
12
+ super().__init__(**kwargs)
13
+ self.mod_capacity = float(mod_capacity)
14
+ self.mod_layers = (list(range(1, self.num_hidden_layers, 2))
15
+ if mod_layers is None else list(mod_layers))
16
+ # Five extra SwiGLU channels in each of five routed blocks, plus five
17
+ # scalar routers: 5 * (3 * 512 * 5 + 512) = 40,960 parameters.
18
+ self.mod_intermediate_size = (self.intermediate_size + 5
19
+ if mod_intermediate_size is None else mod_intermediate_size)
20
+ self.router_aux_coef = float(router_aux_coef)
21
+ if not 0 < self.mod_capacity <= 1:
22
+ raise ValueError("mod_capacity must be in (0, 1]")
23
+ if not math.isfinite(self.router_aux_coef) or self.router_aux_coef < 0:
24
+ raise ValueError("router_aux_coef must be finite and nonnegative")
25
+ if (len(set(self.mod_layers)) != len(self.mod_layers)
26
+ or any(not isinstance(i, int) or not 0 <= i < self.num_hidden_layers
27
+ for i in self.mod_layers)):
28
+ raise ValueError("mod_layers must contain unique valid layer indices")
29
+ if not isinstance(self.mod_intermediate_size, int) or self.mod_intermediate_size < 1:
30
+ raise ValueError("mod_intermediate_size must be a positive integer")
evaluation/continuation.json ADDED
@@ -0,0 +1,624 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model": "q-mod",
3
+ "checkpoint_sha256": {
4
+ "model.safetensors": "e5be4b27775d846ab2e65293a83f647d89ba2e0a606c00645fa892b21f6d5cd3"
5
+ },
6
+ "corpus_sha256": "aca2f46735043bcfd0a44eca981d04627b9cdf74c4c9a04bf0856d04066f58fc",
7
+ "tokenizer_sha256": "fc71a154536f6c84a5bf729d06324032126603ef5183c0b4979407e4fad68a8d",
8
+ "blocks": 291,
9
+ "scored_tokens": 148992,
10
+ "dropped_tail_tokens": 335,
11
+ "protocol": "WikiText-2 raw test, newline-joined; tokenizer-specific nonoverlapping 1024-token blocks; 512 prefix + 512 scored suffix; full vocabulary. GPU BF16 and FP32 separately, TF32 off. Block bootstrap, 10000 resamples, seed 2026. PPL is not rolling or word PPL; different tokenizer results are not directly comparable.",
12
+ "measurements": {
13
+ "torch.bfloat16": {
14
+ "nll": 3.6892377994314502,
15
+ "nll_ci95": [
16
+ 3.6496566288659666,
17
+ 3.7284908163793307
18
+ ],
19
+ "ppl": 40.014336381234685,
20
+ "ppl_ci95": [
21
+ 38.46145722721316,
22
+ 41.616254177697236
23
+ ],
24
+ "block_nll": [
25
+ 3.0334739685058594,
26
+ 3.740220069885254,
27
+ 3.628894805908203,
28
+ 3.6683175563812256,
29
+ 4.014724254608154,
30
+ 3.891292095184326,
31
+ 4.447037696838379,
32
+ 4.0522780418396,
33
+ 3.8349380493164062,
34
+ 3.823822021484375,
35
+ 3.633845329284668,
36
+ 3.2401468753814697,
37
+ 3.266814708709717,
38
+ 3.5836172103881836,
39
+ 3.8599278926849365,
40
+ 3.666652202606201,
41
+ 3.956968307495117,
42
+ 3.8685550689697266,
43
+ 3.7003097534179688,
44
+ 3.9863815307617188,
45
+ 3.7272982597351074,
46
+ 3.4920151233673096,
47
+ 4.134518623352051,
48
+ 3.097790241241455,
49
+ 3.377092123031616,
50
+ 3.659186363220215,
51
+ 3.691166877746582,
52
+ 3.5041279792785645,
53
+ 3.5620369911193848,
54
+ 3.4219396114349365,
55
+ 3.945758819580078,
56
+ 4.074984073638916,
57
+ 3.4408555030822754,
58
+ 3.3952572345733643,
59
+ 3.482008695602417,
60
+ 4.128378868103027,
61
+ 3.7565321922302246,
62
+ 3.6840639114379883,
63
+ 3.3337631225585938,
64
+ 3.7233495712280273,
65
+ 3.358358144760132,
66
+ 3.8522372245788574,
67
+ 3.4598348140716553,
68
+ 3.858750343322754,
69
+ 3.539834976196289,
70
+ 3.7883243560791016,
71
+ 3.972238302230835,
72
+ 3.525768518447876,
73
+ 3.943371295928955,
74
+ 3.6065564155578613,
75
+ 3.502178192138672,
76
+ 3.6186389923095703,
77
+ 3.925199270248413,
78
+ 4.104352951049805,
79
+ 3.556373357772827,
80
+ 4.266332626342773,
81
+ 3.2788915634155273,
82
+ 3.275848150253296,
83
+ 3.6967127323150635,
84
+ 3.381783962249756,
85
+ 3.3477587699890137,
86
+ 3.2133116722106934,
87
+ 3.3617265224456787,
88
+ 2.6435787677764893,
89
+ 3.3020172119140625,
90
+ 3.4059677124023438,
91
+ 3.1757893562316895,
92
+ 3.1442549228668213,
93
+ 3.4717979431152344,
94
+ 3.4961135387420654,
95
+ 3.559631824493408,
96
+ 3.3489818572998047,
97
+ 3.8820650577545166,
98
+ 3.555074691772461,
99
+ 3.8889122009277344,
100
+ 3.5896503925323486,
101
+ 3.769655227661133,
102
+ 3.8484110832214355,
103
+ 3.7232885360717773,
104
+ 3.7955780029296875,
105
+ 3.5623092651367188,
106
+ 3.676947832107544,
107
+ 3.684424877166748,
108
+ 4.132134437561035,
109
+ 4.085684776306152,
110
+ 4.260656833648682,
111
+ 3.877305507659912,
112
+ 3.9520206451416016,
113
+ 3.867370128631592,
114
+ 4.114029884338379,
115
+ 3.622154951095581,
116
+ 3.7936620712280273,
117
+ 3.7642085552215576,
118
+ 3.8050858974456787,
119
+ 3.628535270690918,
120
+ 3.818166494369507,
121
+ 3.595874309539795,
122
+ 3.5458860397338867,
123
+ 3.472426652908325,
124
+ 4.054523468017578,
125
+ 3.888446092605591,
126
+ 3.6914849281311035,
127
+ 3.0026016235351562,
128
+ 3.6276140213012695,
129
+ 3.5678868293762207,
130
+ 3.2021985054016113,
131
+ 3.4582393169403076,
132
+ 3.1557910442352295,
133
+ 3.4210400581359863,
134
+ 3.4203357696533203,
135
+ 3.337662696838379,
136
+ 3.530256986618042,
137
+ 2.94315767288208,
138
+ 3.107532501220703,
139
+ 3.6951563358306885,
140
+ 3.2887697219848633,
141
+ 3.3305134773254395,
142
+ 3.8404202461242676,
143
+ 3.448058605194092,
144
+ 3.5578668117523193,
145
+ 3.8797223567962646,
146
+ 3.9302845001220703,
147
+ 3.7769031524658203,
148
+ 3.735970973968506,
149
+ 4.003993511199951,
150
+ 3.8857574462890625,
151
+ 3.718710422515869,
152
+ 3.696420669555664,
153
+ 3.990670680999756,
154
+ 3.836711883544922,
155
+ 3.9563257694244385,
156
+ 3.8588461875915527,
157
+ 3.8682708740234375,
158
+ 3.552096366882324,
159
+ 4.007606506347656,
160
+ 3.6597299575805664,
161
+ 3.721909284591675,
162
+ 3.916825532913208,
163
+ 3.618872880935669,
164
+ 4.049559593200684,
165
+ 3.5828661918640137,
166
+ 3.300783395767212,
167
+ 4.254912376403809,
168
+ 3.9667701721191406,
169
+ 4.053187370300293,
170
+ 4.266885757446289,
171
+ 4.450619220733643,
172
+ 4.25779914855957,
173
+ 3.4460010528564453,
174
+ 3.620326519012451,
175
+ 3.8935182094573975,
176
+ 3.7257468700408936,
177
+ 3.1817684173583984,
178
+ 3.5945611000061035,
179
+ 3.14451265335083,
180
+ 3.5998497009277344,
181
+ 3.827526092529297,
182
+ 3.8065614700317383,
183
+ 4.318783760070801,
184
+ 3.381446361541748,
185
+ 3.701540470123291,
186
+ 3.774550437927246,
187
+ 3.0764577388763428,
188
+ 3.0016181468963623,
189
+ 2.8728439807891846,
190
+ 3.309659242630005,
191
+ 3.2308201789855957,
192
+ 3.528296709060669,
193
+ 3.1466598510742188,
194
+ 4.0538530349731445,
195
+ 3.837440252304077,
196
+ 4.182062149047852,
197
+ 4.07778263092041,
198
+ 4.6475090980529785,
199
+ 4.582226753234863,
200
+ 3.9743824005126953,
201
+ 4.288257598876953,
202
+ 3.4931979179382324,
203
+ 3.476074695587158,
204
+ 4.683747291564941,
205
+ 3.927859306335449,
206
+ 4.299893379211426,
207
+ 4.255132675170898,
208
+ 4.288380146026611,
209
+ 4.4493513107299805,
210
+ 4.2332000732421875,
211
+ 4.063198566436768,
212
+ 4.357582092285156,
213
+ 4.2598466873168945,
214
+ 4.221273422241211,
215
+ 4.55598258972168,
216
+ 4.1570329666137695,
217
+ 3.369076728820801,
218
+ 4.477698802947998,
219
+ 4.309594631195068,
220
+ 3.729815721511841,
221
+ 3.8138747215270996,
222
+ 3.4916563034057617,
223
+ 3.8918566703796387,
224
+ 3.7358622550964355,
225
+ 3.576416254043579,
226
+ 3.2475414276123047,
227
+ 3.634760856628418,
228
+ 3.4506139755249023,
229
+ 3.6861281394958496,
230
+ 3.718350887298584,
231
+ 3.434321880340576,
232
+ 3.793008804321289,
233
+ 3.359323501586914,
234
+ 3.665397882461548,
235
+ 3.6199021339416504,
236
+ 3.3855361938476562,
237
+ 3.4763875007629395,
238
+ 3.5085606575012207,
239
+ 3.3470630645751953,
240
+ 3.6974496841430664,
241
+ 3.754701614379883,
242
+ 3.4645261764526367,
243
+ 3.109065532684326,
244
+ 3.254002094268799,
245
+ 3.4032177925109863,
246
+ 3.6319453716278076,
247
+ 3.323887825012207,
248
+ 3.2882790565490723,
249
+ 3.724388837814331,
250
+ 3.4665753841400146,
251
+ 3.174009323120117,
252
+ 3.791433095932007,
253
+ 4.040876388549805,
254
+ 3.4488320350646973,
255
+ 3.8699331283569336,
256
+ 3.6910126209259033,
257
+ 3.5286316871643066,
258
+ 3.798151731491089,
259
+ 3.882476806640625,
260
+ 3.844326972961426,
261
+ 4.06152868270874,
262
+ 3.8325114250183105,
263
+ 3.337923526763916,
264
+ 3.7876949310302734,
265
+ 3.5918965339660645,
266
+ 3.615245819091797,
267
+ 3.2705817222595215,
268
+ 3.1231560707092285,
269
+ 3.385634422302246,
270
+ 3.420309066772461,
271
+ 3.39042329788208,
272
+ 3.7529053688049316,
273
+ 4.090065956115723,
274
+ 3.57220196723938,
275
+ 4.007654190063477,
276
+ 4.212186813354492,
277
+ 3.671332359313965,
278
+ 3.585268974304199,
279
+ 3.951240062713623,
280
+ 3.822371006011963,
281
+ 3.564332962036133,
282
+ 3.556788921356201,
283
+ 3.841912031173706,
284
+ 3.7584228515625,
285
+ 3.6320042610168457,
286
+ 3.6407132148742676,
287
+ 3.273137092590332,
288
+ 3.4374094009399414,
289
+ 3.547950506210327,
290
+ 3.7734694480895996,
291
+ 3.434028148651123,
292
+ 3.8533287048339844,
293
+ 3.884617567062378,
294
+ 3.1127676963806152,
295
+ 3.9401354789733887,
296
+ 3.767160177230835,
297
+ 3.10684871673584,
298
+ 3.317154884338379,
299
+ 3.160114288330078,
300
+ 2.7552032470703125,
301
+ 3.654399871826172,
302
+ 3.568580389022827,
303
+ 3.8528037071228027,
304
+ 3.8489787578582764,
305
+ 3.773097515106201,
306
+ 3.8523926734924316,
307
+ 3.409104108810425,
308
+ 3.7001962661743164,
309
+ 3.8040661811828613,
310
+ 3.4476029872894287,
311
+ 3.7821860313415527,
312
+ 3.9857730865478516,
313
+ 4.512575149536133,
314
+ 4.251725673675537,
315
+ 3.6333508491516113
316
+ ]
317
+ },
318
+ "torch.float32": {
319
+ "nll": 3.6888507895453277,
320
+ "nll_ci95": [
321
+ 3.649182625079073,
322
+ 3.728063138858559
323
+ ],
324
+ "ppl": 39.99885343368865,
325
+ "ppl_ci95": [
326
+ 38.44323067090763,
327
+ 41.598459646718396
328
+ ],
329
+ "block_nll": [
330
+ 3.027667760848999,
331
+ 3.738102912902832,
332
+ 3.6281819343566895,
333
+ 3.6695809364318848,
334
+ 4.015194892883301,
335
+ 3.894198417663574,
336
+ 4.446779251098633,
337
+ 4.050177574157715,
338
+ 3.8330178260803223,
339
+ 3.821993112564087,
340
+ 3.6341664791107178,
341
+ 3.2412233352661133,
342
+ 3.2660343647003174,
343
+ 3.5816807746887207,
344
+ 3.8598198890686035,
345
+ 3.66544771194458,
346
+ 3.954576015472412,
347
+ 3.8663859367370605,
348
+ 3.700993299484253,
349
+ 3.98309588432312,
350
+ 3.726853370666504,
351
+ 3.4925546646118164,
352
+ 4.133160591125488,
353
+ 3.097299098968506,
354
+ 3.3766369819641113,
355
+ 3.6585729122161865,
356
+ 3.6912124156951904,
357
+ 3.5034966468811035,
358
+ 3.560659408569336,
359
+ 3.421860456466675,
360
+ 3.944514751434326,
361
+ 4.076074123382568,
362
+ 3.4416584968566895,
363
+ 3.3954355716705322,
364
+ 3.483755111694336,
365
+ 4.1278228759765625,
366
+ 3.755769968032837,
367
+ 3.682060718536377,
368
+ 3.33280086517334,
369
+ 3.7252397537231445,
370
+ 3.360107183456421,
371
+ 3.8527755737304688,
372
+ 3.460200786590576,
373
+ 3.855809211730957,
374
+ 3.5398995876312256,
375
+ 3.7887706756591797,
376
+ 3.971407890319824,
377
+ 3.5239522457122803,
378
+ 3.942335844039917,
379
+ 3.6075119972229004,
380
+ 3.4993295669555664,
381
+ 3.6204614639282227,
382
+ 3.9251532554626465,
383
+ 4.106016159057617,
384
+ 3.555708408355713,
385
+ 4.265496730804443,
386
+ 3.2797160148620605,
387
+ 3.276913642883301,
388
+ 3.6964378356933594,
389
+ 3.384550094604492,
390
+ 3.348212242126465,
391
+ 3.213447332382202,
392
+ 3.362593173980713,
393
+ 2.643364429473877,
394
+ 3.302009105682373,
395
+ 3.4066994190216064,
396
+ 3.1740009784698486,
397
+ 3.146824836730957,
398
+ 3.4738929271698,
399
+ 3.4947752952575684,
400
+ 3.5605530738830566,
401
+ 3.346153497695923,
402
+ 3.879917860031128,
403
+ 3.5560824871063232,
404
+ 3.8901753425598145,
405
+ 3.5909934043884277,
406
+ 3.768007516860962,
407
+ 3.8438334465026855,
408
+ 3.71993088722229,
409
+ 3.7953481674194336,
410
+ 3.5641112327575684,
411
+ 3.6742324829101562,
412
+ 3.6839911937713623,
413
+ 4.1331987380981445,
414
+ 4.086156845092773,
415
+ 4.263089179992676,
416
+ 3.8775670528411865,
417
+ 3.950777530670166,
418
+ 3.86856746673584,
419
+ 4.112517833709717,
420
+ 3.620612144470215,
421
+ 3.7948694229125977,
422
+ 3.7628049850463867,
423
+ 3.8032991886138916,
424
+ 3.6272482872009277,
425
+ 3.817592144012451,
426
+ 3.594144105911255,
427
+ 3.547070264816284,
428
+ 3.4730372428894043,
429
+ 4.054729461669922,
430
+ 3.8879971504211426,
431
+ 3.6934356689453125,
432
+ 3.000913381576538,
433
+ 3.625133991241455,
434
+ 3.568268060684204,
435
+ 3.2034006118774414,
436
+ 3.4547390937805176,
437
+ 3.1572463512420654,
438
+ 3.4198713302612305,
439
+ 3.4206738471984863,
440
+ 3.3378567695617676,
441
+ 3.5324578285217285,
442
+ 2.9415979385375977,
443
+ 3.1075520515441895,
444
+ 3.6945276260375977,
445
+ 3.289034366607666,
446
+ 3.333094596862793,
447
+ 3.8393657207489014,
448
+ 3.4496171474456787,
449
+ 3.5584096908569336,
450
+ 3.878268241882324,
451
+ 3.929405689239502,
452
+ 3.7761900424957275,
453
+ 3.736541271209717,
454
+ 3.9996914863586426,
455
+ 3.8869969844818115,
456
+ 3.717820167541504,
457
+ 3.6949455738067627,
458
+ 3.9903812408447266,
459
+ 3.836249828338623,
460
+ 3.959465980529785,
461
+ 3.858759880065918,
462
+ 3.868380308151245,
463
+ 3.550398826599121,
464
+ 4.00911808013916,
465
+ 3.6598963737487793,
466
+ 3.722276210784912,
467
+ 3.916846990585327,
468
+ 3.616698980331421,
469
+ 4.050436019897461,
470
+ 3.5778284072875977,
471
+ 3.2959275245666504,
472
+ 4.254424571990967,
473
+ 3.9653892517089844,
474
+ 4.0521240234375,
475
+ 4.270989418029785,
476
+ 4.4489850997924805,
477
+ 4.254066467285156,
478
+ 3.445030689239502,
479
+ 3.61728572845459,
480
+ 3.894674777984619,
481
+ 3.7256832122802734,
482
+ 3.181084632873535,
483
+ 3.5941505432128906,
484
+ 3.144176483154297,
485
+ 3.5967330932617188,
486
+ 3.829509735107422,
487
+ 3.805874824523926,
488
+ 4.318291664123535,
489
+ 3.3804588317871094,
490
+ 3.7016525268554688,
491
+ 3.7745108604431152,
492
+ 3.076606273651123,
493
+ 2.9988205432891846,
494
+ 2.872002601623535,
495
+ 3.307823896408081,
496
+ 3.2268385887145996,
497
+ 3.525599956512451,
498
+ 3.147146224975586,
499
+ 4.053147315979004,
500
+ 3.8385915756225586,
501
+ 4.182605743408203,
502
+ 4.073055267333984,
503
+ 4.646452903747559,
504
+ 4.581335544586182,
505
+ 3.976539134979248,
506
+ 4.287915229797363,
507
+ 3.492595911026001,
508
+ 3.4744696617126465,
509
+ 4.682605743408203,
510
+ 3.9282143115997314,
511
+ 4.29866886138916,
512
+ 4.253904342651367,
513
+ 4.2884039878845215,
514
+ 4.448787689208984,
515
+ 4.234960556030273,
516
+ 4.059430122375488,
517
+ 4.357001781463623,
518
+ 4.257026672363281,
519
+ 4.221226692199707,
520
+ 4.557419776916504,
521
+ 4.155788898468018,
522
+ 3.3654861450195312,
523
+ 4.480966567993164,
524
+ 4.309287071228027,
525
+ 3.730501174926758,
526
+ 3.8162360191345215,
527
+ 3.4917783737182617,
528
+ 3.889458656311035,
529
+ 3.737387180328369,
530
+ 3.574091911315918,
531
+ 3.245443820953369,
532
+ 3.635066032409668,
533
+ 3.4508020877838135,
534
+ 3.685305595397949,
535
+ 3.7202224731445312,
536
+ 3.436110019683838,
537
+ 3.793421745300293,
538
+ 3.3612964153289795,
539
+ 3.664384603500366,
540
+ 3.6176421642303467,
541
+ 3.384169578552246,
542
+ 3.4765501022338867,
543
+ 3.50846004486084,
544
+ 3.3470969200134277,
545
+ 3.69547700881958,
546
+ 3.752682685852051,
547
+ 3.464268445968628,
548
+ 3.1101222038269043,
549
+ 3.250185489654541,
550
+ 3.4053843021392822,
551
+ 3.6328437328338623,
552
+ 3.3243253231048584,
553
+ 3.287609100341797,
554
+ 3.7263553142547607,
555
+ 3.465762138366699,
556
+ 3.1718688011169434,
557
+ 3.7949929237365723,
558
+ 4.041664123535156,
559
+ 3.4488463401794434,
560
+ 3.8704917430877686,
561
+ 3.690990924835205,
562
+ 3.5286307334899902,
563
+ 3.799253463745117,
564
+ 3.8777198791503906,
565
+ 3.8435721397399902,
566
+ 4.059334754943848,
567
+ 3.8340835571289062,
568
+ 3.3388919830322266,
569
+ 3.788696050643921,
570
+ 3.5927886962890625,
571
+ 3.6131863594055176,
572
+ 3.2687082290649414,
573
+ 3.120223045349121,
574
+ 3.3863675594329834,
575
+ 3.4221267700195312,
576
+ 3.3879547119140625,
577
+ 3.7518320083618164,
578
+ 4.08969783782959,
579
+ 3.574854850769043,
580
+ 4.006902694702148,
581
+ 4.210338592529297,
582
+ 3.671088695526123,
583
+ 3.586747407913208,
584
+ 3.94930362701416,
585
+ 3.821291923522949,
586
+ 3.565288782119751,
587
+ 3.5583267211914062,
588
+ 3.840996742248535,
589
+ 3.755756378173828,
590
+ 3.632883071899414,
591
+ 3.638172149658203,
592
+ 3.272749185562134,
593
+ 3.437190294265747,
594
+ 3.547724723815918,
595
+ 3.7728371620178223,
596
+ 3.4354710578918457,
597
+ 3.8511710166931152,
598
+ 3.8856048583984375,
599
+ 3.1140756607055664,
600
+ 3.939563751220703,
601
+ 3.765720844268799,
602
+ 3.105600118637085,
603
+ 3.3165178298950195,
604
+ 3.1615777015686035,
605
+ 2.7535500526428223,
606
+ 3.6520907878875732,
607
+ 3.569089889526367,
608
+ 3.8519628047943115,
609
+ 3.850273609161377,
610
+ 3.775264263153076,
611
+ 3.8534600734710693,
612
+ 3.4068784713745117,
613
+ 3.702049732208252,
614
+ 3.802506923675537,
615
+ 3.449129581451416,
616
+ 3.781672954559326,
617
+ 3.984006881713867,
618
+ 4.511618137359619,
619
+ 4.252767562866211,
620
+ 3.6308560371398926
621
+ ]
622
+ }
623
+ }
624
+ }
evaluation/raw/arc_challenge.json ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "arc_challenge": {
4
+ "name": "arc_challenge",
5
+ "alias": "arc_challenge",
6
+ "sample_len": 1172,
7
+ "acc,none": 0.18344709897610922,
8
+ "acc_stderr,none": 0.011310170179554583,
9
+ "acc_norm,none": 0.23122866894197952,
10
+ "acc_norm_stderr,none": 0.01232085883477234
11
+ }
12
+ },
13
+ "group_subtasks": {},
14
+ "configs": {
15
+ "arc_challenge": {
16
+ "task": "arc_challenge",
17
+ "dataset_path": "allenai/ai2_arc",
18
+ "dataset_name": "ARC-Challenge",
19
+ "training_split": "train",
20
+ "validation_split": "validation",
21
+ "test_split": "test",
22
+ "doc_to_text": "Question: {{question}}\nAnswer:",
23
+ "doc_to_target": "{{choices.label.index(answerKey)}}",
24
+ "unsafe_code": false,
25
+ "doc_to_choice": "{{choices.text}}",
26
+ "description": "",
27
+ "target_delimiter": " ",
28
+ "fewshot_delimiter": "\n\n",
29
+ "fewshot_config": {
30
+ "sampler": "default",
31
+ "split": null,
32
+ "process_docs": null,
33
+ "fewshot_indices": null,
34
+ "samples": null,
35
+ "doc_to_text": "Question: {{question}}\nAnswer:",
36
+ "doc_to_choice": "{{choices.text}}",
37
+ "doc_to_target": "{{choices.label.index(answerKey)}}",
38
+ "gen_prefix": null,
39
+ "fewshot_delimiter": "\n\n",
40
+ "target_delimiter": " "
41
+ },
42
+ "num_fewshot": 0,
43
+ "metric_list": [
44
+ {
45
+ "metric": "acc",
46
+ "aggregation": "mean",
47
+ "higher_is_better": true
48
+ },
49
+ {
50
+ "metric": "acc_norm",
51
+ "aggregation": "mean",
52
+ "higher_is_better": true
53
+ }
54
+ ],
55
+ "output_type": "multiple_choice",
56
+ "repeats": 1,
57
+ "should_decontaminate": true,
58
+ "doc_to_decontamination_query": "Question: {{question}}\nAnswer:",
59
+ "metadata": {
60
+ "version": 1.0,
61
+ "config_source": "/mnt/d/Projects/tiny_llm/.venv-eval/lib/python3.12/site-packages/lm_eval/tasks/arc/arc_challenge.yaml"
62
+ }
63
+ }
64
+ },
65
+ "versions": {
66
+ "arc_challenge": 1.0
67
+ },
68
+ "n-shot": {
69
+ "arc_challenge": 0
70
+ },
71
+ "higher_is_better": {
72
+ "arc_challenge": {
73
+ "acc": true,
74
+ "acc_norm": true
75
+ }
76
+ },
77
+ "n-samples": {
78
+ "arc_challenge": {
79
+ "original": 1172,
80
+ "effective": 1172
81
+ }
82
+ },
83
+ "config": {
84
+ "model": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod",
85
+ "model_args": null,
86
+ "model_num_parameters": 50919168,
87
+ "model_dtype": "torch.bfloat16",
88
+ "model_revision": "main",
89
+ "model_sha": "",
90
+ "batch_size": null,
91
+ "batch_sizes": [],
92
+ "device": null,
93
+ "use_cache": null,
94
+ "limit": null,
95
+ "bootstrap_iters": 1000,
96
+ "gen_kwargs": {
97
+ "do_sample": false
98
+ },
99
+ "random_seed": 1234,
100
+ "numpy_seed": 1234,
101
+ "torch_seed": 1234,
102
+ "fewshot_seed": 1234
103
+ },
104
+ "git_hash": "d2b5d7b",
105
+ "date": 1790878760.1987338,
106
+ "pretty_env_info": "PyTorch version: 2.11.0+cu128\nIs debug build: False\nCUDA used to build PyTorch: 12.8\nROCM used to build PyTorch: N/A\n\nOS: Ubuntu 24.04.4 LTS (x86_64)\nGCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0\nClang version: Could not collect\nCMake version: Could not collect\nLibc version: glibc-2.39\n\nPython version: 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] (64-bit runtime)\nPython platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39\nIs CUDA available: True\nCUDA runtime version: Could not collect\nCUDA_MODULE_LOADING set to: \nGPU models and configuration: GPU 0: NVIDIA GeForce RTX 5070 Ti\nNvidia driver version: Could not collect\ncuDNN version: Could not collect\nIs XPU available: False\nHIP runtime version: N/A\nMIOpen runtime version: N/A\nIs XNNPACK available: True\nCaching allocator config: N/A\n\nCPU:\nArchitecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 48 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 8\nOn-line CPU(s) list: 0-7\nVendor ID: AuthenticAMD\nModel name: AMD Ryzen 7 9800X3D 8-Core Processor\nCPU family: 26\nModel: 68\nThread(s) per core: 2\nCore(s) per socket: 4\nSocket(s): 1\nStepping: 0\nBogoMIPS: 9399.75\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm avx512_vp2intersect\nVirtualization: AMD-V\nHypervisor vendor: Microsoft\nVirtualization type: full\nL1d cache: 192 KiB (4 instances)\nL1i cache: 128 KiB (4 instances)\nL2 cache: 4 MiB (4 instances)\nL3 cache: 96 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-7\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n\nVersions of relevant libraries:\n[pip3] numpy==2.5.3\n[pip3] nvidia-cublas-cu12==12.8.4.1\n[pip3] nvidia-cuda-cupti-cu12==12.8.90\n[pip3] nvidia-cuda-nvrtc-cu12==12.8.93\n[pip3] nvidia-cuda-runtime-cu12==12.8.90\n[pip3] nvidia-cudnn-cu12==9.19.0.56\n[pip3] nvidia-cufft-cu12==11.3.3.83\n[pip3] nvidia-curand-cu12==10.3.9.90\n[pip3] nvidia-cusolver-cu12==11.7.3.90\n[pip3] nvidia-cusparse-cu12==12.5.8.93\n[pip3] nvidia-cusparselt-cu12==0.7.1\n[pip3] nvidia-nccl-cu12==2.28.9\n[pip3] nvidia-nvjitlink-cu12==12.8.93\n[pip3] nvidia-nvtx-cu12==12.8.90\n[pip3] torch==2.11.0+cu128\n[pip3] triton==3.6.0\n[conda] Could not collect",
107
+ "transformers_version": "5.17.0",
108
+ "lm_eval_version": "0.4.12",
109
+ "upper_git_hash": null,
110
+ "tokenizer_pad_token": [
111
+ "<pad>",
112
+ "0"
113
+ ],
114
+ "tokenizer_eos_token": [
115
+ "</s>",
116
+ "2"
117
+ ],
118
+ "tokenizer_bos_token": [
119
+ "<s>",
120
+ "1"
121
+ ],
122
+ "eot_token_id": 2,
123
+ "max_length": 2048,
124
+ "tiny_llm_evaluation": {
125
+ "protocol": "autoregressive likelihood",
126
+ "smoke_only": false,
127
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
128
+ }
129
+ }
evaluation/raw/arc_easy.json ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "arc_easy": {
4
+ "name": "arc_easy",
5
+ "alias": "arc_easy",
6
+ "sample_len": 2376,
7
+ "acc,none": 0.4701178451178451,
8
+ "acc_stderr,none": 0.010241444322886225,
9
+ "acc_norm,none": 0.41919191919191917,
10
+ "acc_norm_stderr,none": 0.010124905282491126
11
+ }
12
+ },
13
+ "group_subtasks": {},
14
+ "configs": {
15
+ "arc_easy": {
16
+ "task": "arc_easy",
17
+ "dataset_path": "allenai/ai2_arc",
18
+ "dataset_name": "ARC-Easy",
19
+ "training_split": "train",
20
+ "validation_split": "validation",
21
+ "test_split": "test",
22
+ "doc_to_text": "Question: {{question}}\nAnswer:",
23
+ "doc_to_target": "{{choices.label.index(answerKey)}}",
24
+ "unsafe_code": false,
25
+ "doc_to_choice": "{{choices.text}}",
26
+ "description": "",
27
+ "target_delimiter": " ",
28
+ "fewshot_delimiter": "\n\n",
29
+ "fewshot_config": {
30
+ "sampler": "default",
31
+ "split": null,
32
+ "process_docs": null,
33
+ "fewshot_indices": null,
34
+ "samples": null,
35
+ "doc_to_text": "Question: {{question}}\nAnswer:",
36
+ "doc_to_choice": "{{choices.text}}",
37
+ "doc_to_target": "{{choices.label.index(answerKey)}}",
38
+ "gen_prefix": null,
39
+ "fewshot_delimiter": "\n\n",
40
+ "target_delimiter": " "
41
+ },
42
+ "num_fewshot": 0,
43
+ "metric_list": [
44
+ {
45
+ "metric": "acc",
46
+ "aggregation": "mean",
47
+ "higher_is_better": true
48
+ },
49
+ {
50
+ "metric": "acc_norm",
51
+ "aggregation": "mean",
52
+ "higher_is_better": true
53
+ }
54
+ ],
55
+ "output_type": "multiple_choice",
56
+ "repeats": 1,
57
+ "should_decontaminate": true,
58
+ "doc_to_decontamination_query": "Question: {{question}}\nAnswer:",
59
+ "metadata": {
60
+ "version": 1.0,
61
+ "config_source": "/mnt/d/Projects/tiny_llm/.venv-eval/lib/python3.12/site-packages/lm_eval/tasks/arc/arc_easy.yaml"
62
+ }
63
+ }
64
+ },
65
+ "versions": {
66
+ "arc_easy": 1.0
67
+ },
68
+ "n-shot": {
69
+ "arc_easy": 0
70
+ },
71
+ "higher_is_better": {
72
+ "arc_easy": {
73
+ "acc": true,
74
+ "acc_norm": true
75
+ }
76
+ },
77
+ "n-samples": {
78
+ "arc_easy": {
79
+ "original": 2376,
80
+ "effective": 2376
81
+ }
82
+ },
83
+ "config": {
84
+ "model": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod",
85
+ "model_args": null,
86
+ "model_num_parameters": 50919168,
87
+ "model_dtype": "torch.bfloat16",
88
+ "model_revision": "main",
89
+ "model_sha": "",
90
+ "batch_size": null,
91
+ "batch_sizes": [],
92
+ "device": null,
93
+ "use_cache": null,
94
+ "limit": null,
95
+ "bootstrap_iters": 1000,
96
+ "gen_kwargs": {
97
+ "do_sample": false
98
+ },
99
+ "random_seed": 1234,
100
+ "numpy_seed": 1234,
101
+ "torch_seed": 1234,
102
+ "fewshot_seed": 1234
103
+ },
104
+ "git_hash": "d2b5d7b",
105
+ "date": 1790878703.6323915,
106
+ "pretty_env_info": "PyTorch version: 2.11.0+cu128\nIs debug build: False\nCUDA used to build PyTorch: 12.8\nROCM used to build PyTorch: N/A\n\nOS: Ubuntu 24.04.4 LTS (x86_64)\nGCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0\nClang version: Could not collect\nCMake version: Could not collect\nLibc version: glibc-2.39\n\nPython version: 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] (64-bit runtime)\nPython platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39\nIs CUDA available: True\nCUDA runtime version: Could not collect\nCUDA_MODULE_LOADING set to: \nGPU models and configuration: GPU 0: NVIDIA GeForce RTX 5070 Ti\nNvidia driver version: Could not collect\ncuDNN version: Could not collect\nIs XPU available: False\nHIP runtime version: N/A\nMIOpen runtime version: N/A\nIs XNNPACK available: True\nCaching allocator config: N/A\n\nCPU:\nArchitecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 48 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 8\nOn-line CPU(s) list: 0-7\nVendor ID: AuthenticAMD\nModel name: AMD Ryzen 7 9800X3D 8-Core Processor\nCPU family: 26\nModel: 68\nThread(s) per core: 2\nCore(s) per socket: 4\nSocket(s): 1\nStepping: 0\nBogoMIPS: 9399.75\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm avx512_vp2intersect\nVirtualization: AMD-V\nHypervisor vendor: Microsoft\nVirtualization type: full\nL1d cache: 192 KiB (4 instances)\nL1i cache: 128 KiB (4 instances)\nL2 cache: 4 MiB (4 instances)\nL3 cache: 96 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-7\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n\nVersions of relevant libraries:\n[pip3] numpy==2.5.3\n[pip3] nvidia-cublas-cu12==12.8.4.1\n[pip3] nvidia-cuda-cupti-cu12==12.8.90\n[pip3] nvidia-cuda-nvrtc-cu12==12.8.93\n[pip3] nvidia-cuda-runtime-cu12==12.8.90\n[pip3] nvidia-cudnn-cu12==9.19.0.56\n[pip3] nvidia-cufft-cu12==11.3.3.83\n[pip3] nvidia-curand-cu12==10.3.9.90\n[pip3] nvidia-cusolver-cu12==11.7.3.90\n[pip3] nvidia-cusparse-cu12==12.5.8.93\n[pip3] nvidia-cusparselt-cu12==0.7.1\n[pip3] nvidia-nccl-cu12==2.28.9\n[pip3] nvidia-nvjitlink-cu12==12.8.93\n[pip3] nvidia-nvtx-cu12==12.8.90\n[pip3] torch==2.11.0+cu128\n[pip3] triton==3.6.0\n[conda] Could not collect",
107
+ "transformers_version": "5.17.0",
108
+ "lm_eval_version": "0.4.12",
109
+ "upper_git_hash": null,
110
+ "tokenizer_pad_token": [
111
+ "<pad>",
112
+ "0"
113
+ ],
114
+ "tokenizer_eos_token": [
115
+ "</s>",
116
+ "2"
117
+ ],
118
+ "tokenizer_bos_token": [
119
+ "<s>",
120
+ "1"
121
+ ],
122
+ "eot_token_id": 2,
123
+ "max_length": 2048,
124
+ "tiny_llm_evaluation": {
125
+ "protocol": "autoregressive likelihood",
126
+ "smoke_only": false,
127
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
128
+ }
129
+ }
evaluation/raw/arithmark3.json ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "arithmark3": {
4
+ "acc_norm,none": 0.341,
5
+ "acc_norm_stderr,none": 0.01499813134840284,
6
+ "acc,none": 0.338,
7
+ "acc_stderr,none": 0.014965960710224385
8
+ }
9
+ },
10
+ "n-samples": {
11
+ "arithmark3": {
12
+ "original": 1000,
13
+ "effective": 1000
14
+ }
15
+ },
16
+ "configs": {
17
+ "arithmark3": {
18
+ "repo": "AxiomicLabs/Arithmark-3.0",
19
+ "revision": "6f6e59dd9b7e2c63455f7af7f838f9ecc3d0a746",
20
+ "file": "arithmark-3.jsonl",
21
+ "split": "train",
22
+ "count": 1000,
23
+ "context_field": "ctx",
24
+ "choices_field": "endings",
25
+ "category_field": "activity_label",
26
+ "context_cap": 1024,
27
+ "context_truncation": "per_choice",
28
+ "primary_metric": "acc_norm",
29
+ "dataset_sha256": "bf8ab1a5193d52cdf0e05ff0b3ca226bdfcf416cb6e75562dcbe72e7e4559435",
30
+ "num_fewshot": 0,
31
+ "effective_max_length": 1024,
32
+ "add_bos": false,
33
+ "tokenization": "context and continuation separately; add_special_tokens=False",
34
+ "normalization": "continuation token count; not character count",
35
+ "context_truncated_examples": 0,
36
+ "runner": "tiny_llm token_continuation v2; not an official leaderboard submission"
37
+ }
38
+ },
39
+ "categories": {
40
+ "elementary_school_math_continuation::addition::grades_1_2::easy": {
41
+ "count": 128,
42
+ "acc_norm,none": 0.234375,
43
+ "acc_norm_stderr,none": 0.037589092002846054
44
+ },
45
+ "elementary_school_math_continuation::comparison::grades_2_3::medium": {
46
+ "count": 44,
47
+ "acc_norm,none": 0.25,
48
+ "acc_norm_stderr,none": 0.06603381797442179
49
+ },
50
+ "elementary_school_math_continuation::comparison_difference::grades_2_3::medium": {
51
+ "count": 48,
52
+ "acc_norm,none": 0.3125,
53
+ "acc_norm_stderr,none": 0.06761023307918171
54
+ },
55
+ "elementary_school_math_continuation::data::grades_2_3::easy": {
56
+ "count": 43,
57
+ "acc_norm,none": 0.13953488372093023,
58
+ "acc_norm_stderr,none": 0.05346670079545209
59
+ },
60
+ "elementary_school_math_continuation::division::grades_3_4::medium": {
61
+ "count": 54,
62
+ "acc_norm,none": 0.3888888888888889,
63
+ "acc_norm_stderr,none": 0.06696300316010247
64
+ },
65
+ "elementary_school_math_continuation::fractions_counting::grades_3_4::medium": {
66
+ "count": 50,
67
+ "acc_norm,none": 0.22,
68
+ "acc_norm_stderr,none": 0.05917804336345137
69
+ },
70
+ "elementary_school_math_continuation::geometry_area::grades_4_5::medium": {
71
+ "count": 52,
72
+ "acc_norm,none": 0.5,
73
+ "acc_norm_stderr,none": 0.07001400420140048
74
+ },
75
+ "elementary_school_math_continuation::geometry_perimeter::grades_4_5::medium": {
76
+ "count": 45,
77
+ "acc_norm,none": 0.4888888888888889,
78
+ "acc_norm_stderr,none": 0.0753592220347252
79
+ },
80
+ "elementary_school_math_continuation::measurement::grades_2_3::easy": {
81
+ "count": 76,
82
+ "acc_norm,none": 0.35526315789473684,
83
+ "acc_norm_stderr,none": 0.05526315789473684
84
+ },
85
+ "elementary_school_math_continuation::money::grades_3_4::medium": {
86
+ "count": 64,
87
+ "acc_norm,none": 0.3125,
88
+ "acc_norm_stderr,none": 0.058397074018894594
89
+ },
90
+ "elementary_school_math_continuation::multiplication::grades_3_4::medium": {
91
+ "count": 74,
92
+ "acc_norm,none": 0.5675675675675675,
93
+ "acc_norm_stderr,none": 0.057983774751431
94
+ },
95
+ "elementary_school_math_continuation::patterns::grades_3_4::medium": {
96
+ "count": 53,
97
+ "acc_norm,none": 0.2641509433962264,
98
+ "acc_norm_stderr,none": 0.06113906319252699
99
+ },
100
+ "elementary_school_math_continuation::subtraction::grades_1_2::easy": {
101
+ "count": 117,
102
+ "acc_norm,none": 0.21367521367521367,
103
+ "acc_norm_stderr,none": 0.038058271647936806
104
+ },
105
+ "elementary_school_math_continuation::time::grades_2_3::easy": {
106
+ "count": 55,
107
+ "acc_norm,none": 0.9090909090909091,
108
+ "acc_norm_stderr,none": 0.03912104390108503
109
+ },
110
+ "elementary_school_math_continuation::two_step_add_subtract::grades_2_3::medium": {
111
+ "count": 46,
112
+ "acc_norm,none": 0.21739130434782608,
113
+ "acc_norm_stderr,none": 0.06148754619013457
114
+ },
115
+ "elementary_school_math_continuation::two_step_addition::grades_2_3::medium": {
116
+ "count": 19,
117
+ "acc_norm,none": 0.2631578947368421,
118
+ "acc_norm_stderr,none": 0.10379087338771256
119
+ },
120
+ "elementary_school_math_continuation::two_step_subtraction::grades_2_3::medium": {
121
+ "count": 32,
122
+ "acc_norm,none": 0.1875,
123
+ "acc_norm_stderr,none": 0.07010217197868432
124
+ }
125
+ },
126
+ "tiny_llm_evaluation": {
127
+ "protocol": "autoregressive likelihood",
128
+ "smoke_only": false,
129
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
130
+ }
131
+ }
evaluation/raw/balanced_copa.json ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "balanced_copa": {
4
+ "name": "balanced_copa",
5
+ "alias": "balanced_copa",
6
+ "sample_len": 1000,
7
+ "acc,none": 0.533,
8
+ "acc_stderr,none": 0.015784807891138876
9
+ }
10
+ },
11
+ "group_subtasks": {},
12
+ "configs": {
13
+ "balanced_copa": {
14
+ "task": "balanced_copa",
15
+ "dataset_path": "pkavumba/balanced-copa",
16
+ "dataset_kwargs": {
17
+ "revision": "813bd03cd6e07d9bd8d7333896ad5d40abb95ea9"
18
+ },
19
+ "test_split": "train",
20
+ "doc_to_text": "{{premise.strip()[:-1]}} {{'because' if question == 'cause' else 'therefore'}}",
21
+ "doc_to_target": "{{label}}",
22
+ "unsafe_code": false,
23
+ "doc_to_choice": "{{[choice1[0].lower() + choice1[1:], choice2[0].lower() + choice2[1:]]}}",
24
+ "description": "",
25
+ "target_delimiter": " ",
26
+ "fewshot_delimiter": "\n\n",
27
+ "fewshot_config": {
28
+ "sampler": "default",
29
+ "split": null,
30
+ "process_docs": null,
31
+ "fewshot_indices": null,
32
+ "samples": null,
33
+ "doc_to_text": "{{premise.strip()[:-1]}} {{'because' if question == 'cause' else 'therefore'}}",
34
+ "doc_to_choice": "{{[choice1[0].lower() + choice1[1:], choice2[0].lower() + choice2[1:]]}}",
35
+ "doc_to_target": "{{label}}",
36
+ "gen_prefix": null,
37
+ "fewshot_delimiter": "\n\n",
38
+ "target_delimiter": " "
39
+ },
40
+ "num_fewshot": 0,
41
+ "metric_list": [
42
+ {
43
+ "metric": "acc",
44
+ "aggregation": "mean",
45
+ "higher_is_better": true
46
+ }
47
+ ],
48
+ "output_type": "multiple_choice",
49
+ "repeats": 1,
50
+ "should_decontaminate": false,
51
+ "metadata": {
52
+ "version": 1,
53
+ "reference_protocol": "cRia split and exact prompt unverified; COPA-style prompt",
54
+ "config_source": "/mnt/d/Projects/tiny_llm/src/tiny_llm/evaluation/tasks/balanced_copa.yaml"
55
+ }
56
+ }
57
+ },
58
+ "versions": {
59
+ "balanced_copa": 1
60
+ },
61
+ "n-shot": {
62
+ "balanced_copa": 0
63
+ },
64
+ "higher_is_better": {
65
+ "balanced_copa": {
66
+ "acc": true
67
+ }
68
+ },
69
+ "n-samples": {
70
+ "balanced_copa": {
71
+ "original": 1000,
72
+ "effective": 1000
73
+ }
74
+ },
75
+ "config": {
76
+ "model": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod",
77
+ "model_args": null,
78
+ "model_num_parameters": 50919168,
79
+ "model_dtype": "torch.bfloat16",
80
+ "model_revision": "main",
81
+ "model_sha": "",
82
+ "batch_size": null,
83
+ "batch_sizes": [],
84
+ "device": null,
85
+ "use_cache": null,
86
+ "limit": null,
87
+ "bootstrap_iters": 1000,
88
+ "gen_kwargs": {
89
+ "do_sample": false
90
+ },
91
+ "random_seed": 1234,
92
+ "numpy_seed": 1234,
93
+ "torch_seed": 1234,
94
+ "fewshot_seed": 1234
95
+ },
96
+ "git_hash": "d2b5d7b",
97
+ "date": 1790878916.811857,
98
+ "pretty_env_info": "PyTorch version: 2.11.0+cu128\nIs debug build: False\nCUDA used to build PyTorch: 12.8\nROCM used to build PyTorch: N/A\n\nOS: Ubuntu 24.04.4 LTS (x86_64)\nGCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0\nClang version: Could not collect\nCMake version: Could not collect\nLibc version: glibc-2.39\n\nPython version: 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] (64-bit runtime)\nPython platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39\nIs CUDA available: True\nCUDA runtime version: Could not collect\nCUDA_MODULE_LOADING set to: \nGPU models and configuration: GPU 0: NVIDIA GeForce RTX 5070 Ti\nNvidia driver version: Could not collect\ncuDNN version: Could not collect\nIs XPU available: False\nHIP runtime version: N/A\nMIOpen runtime version: N/A\nIs XNNPACK available: True\nCaching allocator config: N/A\n\nCPU:\nArchitecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 48 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 8\nOn-line CPU(s) list: 0-7\nVendor ID: AuthenticAMD\nModel name: AMD Ryzen 7 9800X3D 8-Core Processor\nCPU family: 26\nModel: 68\nThread(s) per core: 2\nCore(s) per socket: 4\nSocket(s): 1\nStepping: 0\nBogoMIPS: 9399.75\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm avx512_vp2intersect\nVirtualization: AMD-V\nHypervisor vendor: Microsoft\nVirtualization type: full\nL1d cache: 192 KiB (4 instances)\nL1i cache: 128 KiB (4 instances)\nL2 cache: 4 MiB (4 instances)\nL3 cache: 96 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-7\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n\nVersions of relevant libraries:\n[pip3] numpy==2.5.3\n[pip3] nvidia-cublas-cu12==12.8.4.1\n[pip3] nvidia-cuda-cupti-cu12==12.8.90\n[pip3] nvidia-cuda-nvrtc-cu12==12.8.93\n[pip3] nvidia-cuda-runtime-cu12==12.8.90\n[pip3] nvidia-cudnn-cu12==9.19.0.56\n[pip3] nvidia-cufft-cu12==11.3.3.83\n[pip3] nvidia-curand-cu12==10.3.9.90\n[pip3] nvidia-cusolver-cu12==11.7.3.90\n[pip3] nvidia-cusparse-cu12==12.5.8.93\n[pip3] nvidia-cusparselt-cu12==0.7.1\n[pip3] nvidia-nccl-cu12==2.28.9\n[pip3] nvidia-nvjitlink-cu12==12.8.93\n[pip3] nvidia-nvtx-cu12==12.8.90\n[pip3] torch==2.11.0+cu128\n[pip3] triton==3.6.0\n[conda] Could not collect",
99
+ "transformers_version": "5.17.0",
100
+ "lm_eval_version": "0.4.12",
101
+ "upper_git_hash": null,
102
+ "tokenizer_pad_token": [
103
+ "<pad>",
104
+ "0"
105
+ ],
106
+ "tokenizer_eos_token": [
107
+ "</s>",
108
+ "2"
109
+ ],
110
+ "tokenizer_bos_token": [
111
+ "<s>",
112
+ "1"
113
+ ],
114
+ "eot_token_id": 2,
115
+ "max_length": 2048,
116
+ "tiny_llm_evaluation": {
117
+ "protocol": "autoregressive likelihood",
118
+ "smoke_only": false,
119
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
120
+ }
121
+ }
evaluation/raw/bananamind_base.json ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "bananamind_base": {
4
+ "raw_accuracy,none": 0.45714285714285713,
5
+ "raw_accuracy_stderr,none": 0.02666588697376804
6
+ }
7
+ },
8
+ "n-samples": {
9
+ "bananamind_base": {
10
+ "original": 350,
11
+ "effective": 350
12
+ }
13
+ },
14
+ "configs": {
15
+ "bananamind_base": {
16
+ "repo": "BananaMind/BananaMind-Base-Bench-1.1",
17
+ "revision": "d4aade51312889e8580963e1ce960c6eaef1a450",
18
+ "file": "data/test.jsonl",
19
+ "split": "test",
20
+ "count": 350,
21
+ "sha256": "2f563bb46df778ca494fa20f994a8d3045d4c51fbbffeee433764e2813abea21",
22
+ "context_field": "context",
23
+ "choices_field": "continuations",
24
+ "category_field": "category",
25
+ "context_cap": null,
26
+ "context_truncation": "shared_longest_choice",
27
+ "primary_metric": "raw_accuracy",
28
+ "dataset_sha256": "2f563bb46df778ca494fa20f994a8d3045d4c51fbbffeee433764e2813abea21",
29
+ "num_fewshot": 0,
30
+ "effective_max_length": 2048,
31
+ "add_bos": false,
32
+ "tokenization": "context and continuation separately; add_special_tokens=False",
33
+ "normalization": "continuation token count; not character count",
34
+ "context_truncated_examples": 0,
35
+ "runner": "tiny_llm token_continuation v2; not an official leaderboard submission"
36
+ }
37
+ },
38
+ "categories": {
39
+ "code_completion": {
40
+ "count": 50,
41
+ "raw_accuracy,none": 0.28,
42
+ "raw_accuracy_stderr,none": 0.06414269805898186
43
+ },
44
+ "commonsense": {
45
+ "count": 50,
46
+ "raw_accuracy,none": 0.5,
47
+ "raw_accuracy_stderr,none": 0.07142857142857142
48
+ },
49
+ "context_tracking": {
50
+ "count": 50,
51
+ "raw_accuracy,none": 0.16,
52
+ "raw_accuracy_stderr,none": 0.05237229365663817
53
+ },
54
+ "language_completion": {
55
+ "count": 50,
56
+ "raw_accuracy,none": 0.9,
57
+ "raw_accuracy_stderr,none": 0.04285714285714285
58
+ },
59
+ "logical_reasoning": {
60
+ "count": 50,
61
+ "raw_accuracy,none": 0.44,
62
+ "raw_accuracy_stderr,none": 0.07091242083423346
63
+ },
64
+ "quantitative": {
65
+ "count": 50,
66
+ "raw_accuracy,none": 0.26,
67
+ "raw_accuracy_stderr,none": 0.06266203485560375
68
+ },
69
+ "world_knowledge": {
70
+ "count": 50,
71
+ "raw_accuracy,none": 0.66,
72
+ "raw_accuracy_stderr,none": 0.0676726816132972
73
+ }
74
+ },
75
+ "tiny_llm_evaluation": {
76
+ "protocol": "autoregressive likelihood",
77
+ "smoke_only": false,
78
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
79
+ }
80
+ }
evaluation/raw/blimp.json ADDED
The diff for this file is too large to render. See raw diff
 
evaluation/raw/boolq.json ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "boolq": {
4
+ "name": "boolq",
5
+ "alias": "boolq",
6
+ "sample_len": 3270,
7
+ "acc,none": 0.5577981651376147,
8
+ "acc_stderr,none": 0.008686430526114761
9
+ }
10
+ },
11
+ "group_subtasks": {},
12
+ "configs": {
13
+ "boolq": {
14
+ "task": "boolq",
15
+ "dataset_path": "aps/super_glue",
16
+ "dataset_name": "boolq",
17
+ "training_split": "train",
18
+ "validation_split": "validation",
19
+ "doc_to_text": "{{passage}}\nQuestion: {{question}}?\nAnswer:",
20
+ "doc_to_target": "label",
21
+ "unsafe_code": false,
22
+ "doc_to_choice": [
23
+ "no",
24
+ "yes"
25
+ ],
26
+ "description": "",
27
+ "target_delimiter": " ",
28
+ "fewshot_delimiter": "\n\n",
29
+ "fewshot_config": {
30
+ "sampler": "default",
31
+ "split": null,
32
+ "process_docs": null,
33
+ "fewshot_indices": null,
34
+ "samples": null,
35
+ "doc_to_text": "{{passage}}\nQuestion: {{question}}?\nAnswer:",
36
+ "doc_to_choice": [
37
+ "no",
38
+ "yes"
39
+ ],
40
+ "doc_to_target": "label",
41
+ "gen_prefix": null,
42
+ "fewshot_delimiter": "\n\n",
43
+ "target_delimiter": " "
44
+ },
45
+ "num_fewshot": 0,
46
+ "metric_list": [
47
+ {
48
+ "metric": "acc"
49
+ }
50
+ ],
51
+ "output_type": "multiple_choice",
52
+ "repeats": 1,
53
+ "should_decontaminate": true,
54
+ "doc_to_decontamination_query": "passage",
55
+ "metadata": {
56
+ "version": 2.0,
57
+ "config_source": "/mnt/d/Projects/tiny_llm/.venv-eval/lib/python3.12/site-packages/lm_eval/tasks/super_glue/boolq/default.yaml"
58
+ }
59
+ }
60
+ },
61
+ "versions": {
62
+ "boolq": 2.0
63
+ },
64
+ "n-shot": {
65
+ "boolq": 0
66
+ },
67
+ "higher_is_better": {
68
+ "boolq": {
69
+ "acc": true
70
+ }
71
+ },
72
+ "n-samples": {
73
+ "boolq": {
74
+ "original": 3270,
75
+ "effective": 3270
76
+ }
77
+ },
78
+ "config": {
79
+ "model": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod",
80
+ "model_args": null,
81
+ "model_num_parameters": 50919168,
82
+ "model_dtype": "torch.bfloat16",
83
+ "model_revision": "main",
84
+ "model_sha": "",
85
+ "batch_size": null,
86
+ "batch_sizes": [],
87
+ "device": null,
88
+ "use_cache": null,
89
+ "limit": null,
90
+ "bootstrap_iters": 1000,
91
+ "gen_kwargs": {
92
+ "do_sample": false
93
+ },
94
+ "random_seed": 1234,
95
+ "numpy_seed": 1234,
96
+ "torch_seed": 1234,
97
+ "fewshot_seed": 1234
98
+ },
99
+ "git_hash": "d2b5d7b",
100
+ "date": 1790878836.582125,
101
+ "pretty_env_info": "PyTorch version: 2.11.0+cu128\nIs debug build: False\nCUDA used to build PyTorch: 12.8\nROCM used to build PyTorch: N/A\n\nOS: Ubuntu 24.04.4 LTS (x86_64)\nGCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0\nClang version: Could not collect\nCMake version: Could not collect\nLibc version: glibc-2.39\n\nPython version: 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] (64-bit runtime)\nPython platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39\nIs CUDA available: True\nCUDA runtime version: Could not collect\nCUDA_MODULE_LOADING set to: \nGPU models and configuration: GPU 0: NVIDIA GeForce RTX 5070 Ti\nNvidia driver version: Could not collect\ncuDNN version: Could not collect\nIs XPU available: False\nHIP runtime version: N/A\nMIOpen runtime version: N/A\nIs XNNPACK available: True\nCaching allocator config: N/A\n\nCPU:\nArchitecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 48 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 8\nOn-line CPU(s) list: 0-7\nVendor ID: AuthenticAMD\nModel name: AMD Ryzen 7 9800X3D 8-Core Processor\nCPU family: 26\nModel: 68\nThread(s) per core: 2\nCore(s) per socket: 4\nSocket(s): 1\nStepping: 0\nBogoMIPS: 9399.75\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm avx512_vp2intersect\nVirtualization: AMD-V\nHypervisor vendor: Microsoft\nVirtualization type: full\nL1d cache: 192 KiB (4 instances)\nL1i cache: 128 KiB (4 instances)\nL2 cache: 4 MiB (4 instances)\nL3 cache: 96 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-7\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n\nVersions of relevant libraries:\n[pip3] numpy==2.5.3\n[pip3] nvidia-cublas-cu12==12.8.4.1\n[pip3] nvidia-cuda-cupti-cu12==12.8.90\n[pip3] nvidia-cuda-nvrtc-cu12==12.8.93\n[pip3] nvidia-cuda-runtime-cu12==12.8.90\n[pip3] nvidia-cudnn-cu12==9.19.0.56\n[pip3] nvidia-cufft-cu12==11.3.3.83\n[pip3] nvidia-curand-cu12==10.3.9.90\n[pip3] nvidia-cusolver-cu12==11.7.3.90\n[pip3] nvidia-cusparse-cu12==12.5.8.93\n[pip3] nvidia-cusparselt-cu12==0.7.1\n[pip3] nvidia-nccl-cu12==2.28.9\n[pip3] nvidia-nvjitlink-cu12==12.8.93\n[pip3] nvidia-nvtx-cu12==12.8.90\n[pip3] torch==2.11.0+cu128\n[pip3] triton==3.6.0\n[conda] Could not collect",
102
+ "transformers_version": "5.17.0",
103
+ "lm_eval_version": "0.4.12",
104
+ "upper_git_hash": null,
105
+ "tokenizer_pad_token": [
106
+ "<pad>",
107
+ "0"
108
+ ],
109
+ "tokenizer_eos_token": [
110
+ "</s>",
111
+ "2"
112
+ ],
113
+ "tokenizer_bos_token": [
114
+ "<s>",
115
+ "1"
116
+ ],
117
+ "eot_token_id": 2,
118
+ "max_length": 2048,
119
+ "tiny_llm_evaluation": {
120
+ "protocol": "autoregressive likelihood",
121
+ "smoke_only": false,
122
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
123
+ }
124
+ }
evaluation/raw/commonsense_qa.json ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "commonsense_qa": {
4
+ "name": "commonsense_qa",
5
+ "alias": "commonsense_qa",
6
+ "sample_len": 1221,
7
+ "acc,none": 0.19492219492219492,
8
+ "acc_stderr,none": 0.011341478090883516
9
+ }
10
+ },
11
+ "group_subtasks": {},
12
+ "configs": {
13
+ "commonsense_qa": {
14
+ "task": "commonsense_qa",
15
+ "dataset_path": "tau/commonsense_qa",
16
+ "training_split": "train",
17
+ "validation_split": "validation",
18
+ "doc_to_text": "Question: {{ question.strip() }}\nA. {{choices['text'][0]}}\nB. {{choices['text'][1]}}\nC. {{choices['text'][2]}}\nD. {{choices['text'][3]}}\nE. {{choices['text'][4]}}\nAnswer:",
19
+ "doc_to_target": "answerKey",
20
+ "unsafe_code": false,
21
+ "doc_to_choice": [
22
+ "A",
23
+ "B",
24
+ "C",
25
+ "D",
26
+ "E"
27
+ ],
28
+ "description": "",
29
+ "target_delimiter": " ",
30
+ "fewshot_delimiter": "\n\n",
31
+ "fewshot_config": {
32
+ "sampler": "default",
33
+ "split": null,
34
+ "process_docs": null,
35
+ "fewshot_indices": null,
36
+ "samples": null,
37
+ "doc_to_text": "Question: {{ question.strip() }}\nA. {{choices['text'][0]}}\nB. {{choices['text'][1]}}\nC. {{choices['text'][2]}}\nD. {{choices['text'][3]}}\nE. {{choices['text'][4]}}\nAnswer:",
38
+ "doc_to_choice": [
39
+ "A",
40
+ "B",
41
+ "C",
42
+ "D",
43
+ "E"
44
+ ],
45
+ "doc_to_target": "answerKey",
46
+ "gen_prefix": null,
47
+ "fewshot_delimiter": "\n\n",
48
+ "target_delimiter": " "
49
+ },
50
+ "num_fewshot": 0,
51
+ "metric_list": [
52
+ {
53
+ "metric": "acc",
54
+ "aggregation": "mean",
55
+ "higher_is_better": true
56
+ }
57
+ ],
58
+ "output_type": "multiple_choice",
59
+ "repeats": 1,
60
+ "should_decontaminate": false,
61
+ "metadata": {
62
+ "config_source": "/mnt/d/Projects/tiny_llm/.venv-eval/lib/python3.12/site-packages/lm_eval/tasks/commonsense_qa/default.yaml"
63
+ }
64
+ }
65
+ },
66
+ "versions": {
67
+ "commonsense_qa": "Yaml"
68
+ },
69
+ "n-shot": {
70
+ "commonsense_qa": 0
71
+ },
72
+ "higher_is_better": {
73
+ "commonsense_qa": {
74
+ "acc": true
75
+ }
76
+ },
77
+ "n-samples": {
78
+ "commonsense_qa": {
79
+ "original": 1221,
80
+ "effective": 1221
81
+ }
82
+ },
83
+ "config": {
84
+ "model": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod",
85
+ "model_args": null,
86
+ "model_num_parameters": 50919168,
87
+ "model_dtype": "torch.bfloat16",
88
+ "model_revision": "main",
89
+ "model_sha": "",
90
+ "batch_size": null,
91
+ "batch_sizes": [],
92
+ "device": null,
93
+ "use_cache": null,
94
+ "limit": null,
95
+ "bootstrap_iters": 1000,
96
+ "gen_kwargs": {
97
+ "do_sample": false
98
+ },
99
+ "random_seed": 1234,
100
+ "numpy_seed": 1234,
101
+ "torch_seed": 1234,
102
+ "fewshot_seed": 1234
103
+ },
104
+ "git_hash": "d2b5d7b",
105
+ "date": 1790879411.5483394,
106
+ "pretty_env_info": "PyTorch version: 2.11.0+cu128\nIs debug build: False\nCUDA used to build PyTorch: 12.8\nROCM used to build PyTorch: N/A\n\nOS: Ubuntu 24.04.4 LTS (x86_64)\nGCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0\nClang version: Could not collect\nCMake version: Could not collect\nLibc version: glibc-2.39\n\nPython version: 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] (64-bit runtime)\nPython platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39\nIs CUDA available: True\nCUDA runtime version: Could not collect\nCUDA_MODULE_LOADING set to: \nGPU models and configuration: GPU 0: NVIDIA GeForce RTX 5070 Ti\nNvidia driver version: Could not collect\ncuDNN version: Could not collect\nIs XPU available: False\nHIP runtime version: N/A\nMIOpen runtime version: N/A\nIs XNNPACK available: True\nCaching allocator config: N/A\n\nCPU:\nArchitecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 48 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 8\nOn-line CPU(s) list: 0-7\nVendor ID: AuthenticAMD\nModel name: AMD Ryzen 7 9800X3D 8-Core Processor\nCPU family: 26\nModel: 68\nThread(s) per core: 2\nCore(s) per socket: 4\nSocket(s): 1\nStepping: 0\nBogoMIPS: 9399.75\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm avx512_vp2intersect\nVirtualization: AMD-V\nHypervisor vendor: Microsoft\nVirtualization type: full\nL1d cache: 192 KiB (4 instances)\nL1i cache: 128 KiB (4 instances)\nL2 cache: 4 MiB (4 instances)\nL3 cache: 96 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-7\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n\nVersions of relevant libraries:\n[pip3] numpy==2.5.3\n[pip3] nvidia-cublas-cu12==12.8.4.1\n[pip3] nvidia-cuda-cupti-cu12==12.8.90\n[pip3] nvidia-cuda-nvrtc-cu12==12.8.93\n[pip3] nvidia-cuda-runtime-cu12==12.8.90\n[pip3] nvidia-cudnn-cu12==9.19.0.56\n[pip3] nvidia-cufft-cu12==11.3.3.83\n[pip3] nvidia-curand-cu12==10.3.9.90\n[pip3] nvidia-cusolver-cu12==11.7.3.90\n[pip3] nvidia-cusparse-cu12==12.5.8.93\n[pip3] nvidia-cusparselt-cu12==0.7.1\n[pip3] nvidia-nccl-cu12==2.28.9\n[pip3] nvidia-nvjitlink-cu12==12.8.93\n[pip3] nvidia-nvtx-cu12==12.8.90\n[pip3] torch==2.11.0+cu128\n[pip3] triton==3.6.0\n[conda] Could not collect",
107
+ "transformers_version": "5.17.0",
108
+ "lm_eval_version": "0.4.12",
109
+ "upper_git_hash": null,
110
+ "tokenizer_pad_token": [
111
+ "<pad>",
112
+ "0"
113
+ ],
114
+ "tokenizer_eos_token": [
115
+ "</s>",
116
+ "2"
117
+ ],
118
+ "tokenizer_bos_token": [
119
+ "<s>",
120
+ "1"
121
+ ],
122
+ "eot_token_id": 2,
123
+ "max_length": 2048,
124
+ "tiny_llm_evaluation": {
125
+ "protocol": "autoregressive likelihood",
126
+ "smoke_only": false,
127
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
128
+ }
129
+ }
evaluation/raw/hellaswag.json ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "hellaswag": {
4
+ "name": "hellaswag",
5
+ "alias": "hellaswag",
6
+ "sample_len": 10042,
7
+ "acc,none": 0.27633937462656843,
8
+ "acc_stderr,none": 0.004462727543055927,
9
+ "acc_norm,none": 0.2874925313682533,
10
+ "acc_norm_stderr,none": 0.004516681953878919
11
+ }
12
+ },
13
+ "group_subtasks": {},
14
+ "configs": {
15
+ "hellaswag": {
16
+ "task": "hellaswag",
17
+ "dataset_path": "Rowan/hellaswag",
18
+ "training_split": "train",
19
+ "validation_split": "validation",
20
+ "process_docs": "def process_docs(dataset: datasets.Dataset) -> datasets.Dataset:\n def _process_doc(doc):\n ctx = doc[\"ctx_a\"] + \" \" + doc[\"ctx_b\"].capitalize()\n out_doc = {\n \"query\": preprocess(doc[\"activity_label\"] + \": \" + ctx),\n \"choices\": [preprocess(ending) for ending in doc[\"endings\"]],\n \"gold\": int(doc[\"label\"]),\n }\n return out_doc\n\n return dataset.map(_process_doc)\n",
21
+ "doc_to_text": "{{query}}",
22
+ "doc_to_target": "{{label}}",
23
+ "unsafe_code": false,
24
+ "doc_to_choice": "choices",
25
+ "description": "",
26
+ "target_delimiter": " ",
27
+ "fewshot_delimiter": "\n\n",
28
+ "fewshot_config": {
29
+ "sampler": "default",
30
+ "split": null,
31
+ "process_docs": "<function process_docs at 0x74bb6260d8a0>",
32
+ "fewshot_indices": null,
33
+ "samples": null,
34
+ "doc_to_text": "{{query}}",
35
+ "doc_to_choice": "choices",
36
+ "doc_to_target": "{{label}}",
37
+ "gen_prefix": null,
38
+ "fewshot_delimiter": "\n\n",
39
+ "target_delimiter": " "
40
+ },
41
+ "num_fewshot": 0,
42
+ "metric_list": [
43
+ {
44
+ "metric": "acc",
45
+ "aggregation": "mean",
46
+ "higher_is_better": true
47
+ },
48
+ {
49
+ "metric": "acc_norm",
50
+ "aggregation": "mean",
51
+ "higher_is_better": true
52
+ }
53
+ ],
54
+ "output_type": "multiple_choice",
55
+ "repeats": 1,
56
+ "should_decontaminate": false,
57
+ "metadata": {
58
+ "version": 1.0,
59
+ "config_source": "/mnt/d/Projects/tiny_llm/.venv-eval/lib/python3.12/site-packages/lm_eval/tasks/hellaswag/hellaswag.yaml"
60
+ }
61
+ }
62
+ },
63
+ "versions": {
64
+ "hellaswag": 1.0
65
+ },
66
+ "n-shot": {
67
+ "hellaswag": 0
68
+ },
69
+ "higher_is_better": {
70
+ "hellaswag": {
71
+ "acc": true,
72
+ "acc_norm": true
73
+ }
74
+ },
75
+ "n-samples": {
76
+ "hellaswag": {
77
+ "original": 10042,
78
+ "effective": 10042
79
+ }
80
+ },
81
+ "config": {
82
+ "model": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod",
83
+ "model_args": null,
84
+ "model_num_parameters": 50919168,
85
+ "model_dtype": "torch.bfloat16",
86
+ "model_revision": "main",
87
+ "model_sha": "",
88
+ "batch_size": null,
89
+ "batch_sizes": [],
90
+ "device": null,
91
+ "use_cache": null,
92
+ "limit": null,
93
+ "bootstrap_iters": 1000,
94
+ "gen_kwargs": {
95
+ "do_sample": false
96
+ },
97
+ "random_seed": 1234,
98
+ "numpy_seed": 1234,
99
+ "torch_seed": 1234,
100
+ "fewshot_seed": 1234
101
+ },
102
+ "git_hash": "d2b5d7b",
103
+ "date": 1790878480.7127786,
104
+ "pretty_env_info": "PyTorch version: 2.11.0+cu128\nIs debug build: False\nCUDA used to build PyTorch: 12.8\nROCM used to build PyTorch: N/A\n\nOS: Ubuntu 24.04.4 LTS (x86_64)\nGCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0\nClang version: Could not collect\nCMake version: Could not collect\nLibc version: glibc-2.39\n\nPython version: 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] (64-bit runtime)\nPython platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39\nIs CUDA available: True\nCUDA runtime version: Could not collect\nCUDA_MODULE_LOADING set to: \nGPU models and configuration: GPU 0: NVIDIA GeForce RTX 5070 Ti\nNvidia driver version: Could not collect\ncuDNN version: Could not collect\nIs XPU available: False\nHIP runtime version: N/A\nMIOpen runtime version: N/A\nIs XNNPACK available: True\nCaching allocator config: N/A\n\nCPU:\nArchitecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 48 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 8\nOn-line CPU(s) list: 0-7\nVendor ID: AuthenticAMD\nModel name: AMD Ryzen 7 9800X3D 8-Core Processor\nCPU family: 26\nModel: 68\nThread(s) per core: 2\nCore(s) per socket: 4\nSocket(s): 1\nStepping: 0\nBogoMIPS: 9399.75\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm avx512_vp2intersect\nVirtualization: AMD-V\nHypervisor vendor: Microsoft\nVirtualization type: full\nL1d cache: 192 KiB (4 instances)\nL1i cache: 128 KiB (4 instances)\nL2 cache: 4 MiB (4 instances)\nL3 cache: 96 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-7\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n\nVersions of relevant libraries:\n[pip3] numpy==2.5.3\n[pip3] nvidia-cublas-cu12==12.8.4.1\n[pip3] nvidia-cuda-cupti-cu12==12.8.90\n[pip3] nvidia-cuda-nvrtc-cu12==12.8.93\n[pip3] nvidia-cuda-runtime-cu12==12.8.90\n[pip3] nvidia-cudnn-cu12==9.19.0.56\n[pip3] nvidia-cufft-cu12==11.3.3.83\n[pip3] nvidia-curand-cu12==10.3.9.90\n[pip3] nvidia-cusolver-cu12==11.7.3.90\n[pip3] nvidia-cusparse-cu12==12.5.8.93\n[pip3] nvidia-cusparselt-cu12==0.7.1\n[pip3] nvidia-nccl-cu12==2.28.9\n[pip3] nvidia-nvjitlink-cu12==12.8.93\n[pip3] nvidia-nvtx-cu12==12.8.90\n[pip3] torch==2.11.0+cu128\n[pip3] triton==3.6.0\n[conda] Could not collect",
105
+ "transformers_version": "5.17.0",
106
+ "lm_eval_version": "0.4.12",
107
+ "upper_git_hash": null,
108
+ "tokenizer_pad_token": [
109
+ "<pad>",
110
+ "0"
111
+ ],
112
+ "tokenizer_eos_token": [
113
+ "</s>",
114
+ "2"
115
+ ],
116
+ "tokenizer_bos_token": [
117
+ "<s>",
118
+ "1"
119
+ ],
120
+ "eot_token_id": 2,
121
+ "max_length": 2048,
122
+ "tiny_llm_evaluation": {
123
+ "protocol": "autoregressive likelihood",
124
+ "smoke_only": false,
125
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
126
+ }
127
+ }
evaluation/raw/lambada_openai.json ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "lambada_openai": {
4
+ "name": "lambada_openai",
5
+ "alias": "lambada_openai",
6
+ "sample_len": 5153,
7
+ "perplexity,none": 325.20143973341675,
8
+ "perplexity_stderr,none": 15.346256502549156,
9
+ "acc,none": 0.16689307199689501,
10
+ "acc_stderr,none": 0.005194952730633079
11
+ }
12
+ },
13
+ "group_subtasks": {},
14
+ "configs": {
15
+ "lambada_openai": {
16
+ "task": "lambada_openai",
17
+ "dataset_path": "EleutherAI/lambada_openai",
18
+ "dataset_name": "default",
19
+ "test_split": "test",
20
+ "doc_to_text": "{{text.split(' ')[:-1]|join(' ')}}",
21
+ "doc_to_target": "{{' '+text.split(' ')[-1]}}",
22
+ "unsafe_code": false,
23
+ "description": "",
24
+ "target_delimiter": " ",
25
+ "fewshot_delimiter": "\n\n",
26
+ "fewshot_config": {
27
+ "sampler": "default",
28
+ "split": null,
29
+ "process_docs": null,
30
+ "fewshot_indices": null,
31
+ "samples": null,
32
+ "doc_to_text": "{{text.split(' ')[:-1]|join(' ')}}",
33
+ "doc_to_choice": null,
34
+ "doc_to_target": "{{' '+text.split(' ')[-1]}}",
35
+ "gen_prefix": null,
36
+ "fewshot_delimiter": "\n\n",
37
+ "target_delimiter": " "
38
+ },
39
+ "num_fewshot": 0,
40
+ "metric_list": [
41
+ {
42
+ "metric": "perplexity",
43
+ "aggregation": "perplexity",
44
+ "higher_is_better": false
45
+ },
46
+ {
47
+ "metric": "acc",
48
+ "aggregation": "mean",
49
+ "higher_is_better": true
50
+ }
51
+ ],
52
+ "output_type": "loglikelihood",
53
+ "repeats": 1,
54
+ "should_decontaminate": true,
55
+ "doc_to_decontamination_query": "{{text}}",
56
+ "metadata": {
57
+ "version": 1.0,
58
+ "config_source": "/mnt/d/Projects/tiny_llm/.venv-eval/lib/python3.12/site-packages/lm_eval/tasks/lambada/lambada_openai.yaml"
59
+ }
60
+ }
61
+ },
62
+ "versions": {
63
+ "lambada_openai": 1.0
64
+ },
65
+ "n-shot": {
66
+ "lambada_openai": 0
67
+ },
68
+ "higher_is_better": {
69
+ "lambada_openai": {
70
+ "perplexity": false,
71
+ "acc": true
72
+ }
73
+ },
74
+ "n-samples": {
75
+ "lambada_openai": {
76
+ "original": 5153,
77
+ "effective": 5153
78
+ }
79
+ },
80
+ "config": {
81
+ "model": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod",
82
+ "model_args": null,
83
+ "model_num_parameters": 50919168,
84
+ "model_dtype": "torch.bfloat16",
85
+ "model_revision": "main",
86
+ "model_sha": "",
87
+ "batch_size": null,
88
+ "batch_sizes": [],
89
+ "device": null,
90
+ "use_cache": null,
91
+ "limit": null,
92
+ "bootstrap_iters": 1000,
93
+ "gen_kwargs": {
94
+ "do_sample": false
95
+ },
96
+ "random_seed": 1234,
97
+ "numpy_seed": 1234,
98
+ "torch_seed": 1234,
99
+ "fewshot_seed": 1234
100
+ },
101
+ "git_hash": "d2b5d7b",
102
+ "date": 1790878859.459506,
103
+ "pretty_env_info": "PyTorch version: 2.11.0+cu128\nIs debug build: False\nCUDA used to build PyTorch: 12.8\nROCM used to build PyTorch: N/A\n\nOS: Ubuntu 24.04.4 LTS (x86_64)\nGCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0\nClang version: Could not collect\nCMake version: Could not collect\nLibc version: glibc-2.39\n\nPython version: 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] (64-bit runtime)\nPython platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39\nIs CUDA available: True\nCUDA runtime version: Could not collect\nCUDA_MODULE_LOADING set to: \nGPU models and configuration: GPU 0: NVIDIA GeForce RTX 5070 Ti\nNvidia driver version: Could not collect\ncuDNN version: Could not collect\nIs XPU available: False\nHIP runtime version: N/A\nMIOpen runtime version: N/A\nIs XNNPACK available: True\nCaching allocator config: N/A\n\nCPU:\nArchitecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 48 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 8\nOn-line CPU(s) list: 0-7\nVendor ID: AuthenticAMD\nModel name: AMD Ryzen 7 9800X3D 8-Core Processor\nCPU family: 26\nModel: 68\nThread(s) per core: 2\nCore(s) per socket: 4\nSocket(s): 1\nStepping: 0\nBogoMIPS: 9399.75\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm avx512_vp2intersect\nVirtualization: AMD-V\nHypervisor vendor: Microsoft\nVirtualization type: full\nL1d cache: 192 KiB (4 instances)\nL1i cache: 128 KiB (4 instances)\nL2 cache: 4 MiB (4 instances)\nL3 cache: 96 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-7\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n\nVersions of relevant libraries:\n[pip3] numpy==2.5.3\n[pip3] nvidia-cublas-cu12==12.8.4.1\n[pip3] nvidia-cuda-cupti-cu12==12.8.90\n[pip3] nvidia-cuda-nvrtc-cu12==12.8.93\n[pip3] nvidia-cuda-runtime-cu12==12.8.90\n[pip3] nvidia-cudnn-cu12==9.19.0.56\n[pip3] nvidia-cufft-cu12==11.3.3.83\n[pip3] nvidia-curand-cu12==10.3.9.90\n[pip3] nvidia-cusolver-cu12==11.7.3.90\n[pip3] nvidia-cusparse-cu12==12.5.8.93\n[pip3] nvidia-cusparselt-cu12==0.7.1\n[pip3] nvidia-nccl-cu12==2.28.9\n[pip3] nvidia-nvjitlink-cu12==12.8.93\n[pip3] nvidia-nvtx-cu12==12.8.90\n[pip3] torch==2.11.0+cu128\n[pip3] triton==3.6.0\n[conda] Could not collect",
104
+ "transformers_version": "5.17.0",
105
+ "lm_eval_version": "0.4.12",
106
+ "upper_git_hash": null,
107
+ "tokenizer_pad_token": [
108
+ "<pad>",
109
+ "0"
110
+ ],
111
+ "tokenizer_eos_token": [
112
+ "</s>",
113
+ "2"
114
+ ],
115
+ "tokenizer_bos_token": [
116
+ "<s>",
117
+ "1"
118
+ ],
119
+ "eot_token_id": 2,
120
+ "max_length": 2048,
121
+ "tiny_llm_evaluation": {
122
+ "protocol": "autoregressive likelihood",
123
+ "smoke_only": false,
124
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
125
+ }
126
+ }
evaluation/raw/mmlu_continuation.json ADDED
The diff for this file is too large to render. See raw diff
 
evaluation/raw/openbookqa.json ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "openbookqa": {
4
+ "name": "openbookqa",
5
+ "alias": "openbookqa",
6
+ "sample_len": 500,
7
+ "acc,none": 0.168,
8
+ "acc_stderr,none": 0.01673655354154187,
9
+ "acc_norm,none": 0.306,
10
+ "acc_norm_stderr,none": 0.020629569998345414
11
+ }
12
+ },
13
+ "group_subtasks": {},
14
+ "configs": {
15
+ "openbookqa": {
16
+ "task": "openbookqa",
17
+ "dataset_path": "allenai/openbookqa",
18
+ "dataset_name": "main",
19
+ "training_split": "train",
20
+ "validation_split": "validation",
21
+ "test_split": "test",
22
+ "doc_to_text": "question_stem",
23
+ "doc_to_target": "{{choices.label.index(answerKey.lstrip())}}",
24
+ "unsafe_code": false,
25
+ "doc_to_choice": "{{choices.text}}",
26
+ "description": "",
27
+ "target_delimiter": " ",
28
+ "fewshot_delimiter": "\n\n",
29
+ "fewshot_config": {
30
+ "sampler": "default",
31
+ "split": null,
32
+ "process_docs": null,
33
+ "fewshot_indices": null,
34
+ "samples": null,
35
+ "doc_to_text": "question_stem",
36
+ "doc_to_choice": "{{choices.text}}",
37
+ "doc_to_target": "{{choices.label.index(answerKey.lstrip())}}",
38
+ "gen_prefix": null,
39
+ "fewshot_delimiter": "\n\n",
40
+ "target_delimiter": " "
41
+ },
42
+ "num_fewshot": 0,
43
+ "metric_list": [
44
+ {
45
+ "metric": "acc",
46
+ "aggregation": "mean",
47
+ "higher_is_better": true
48
+ },
49
+ {
50
+ "metric": "acc_norm",
51
+ "aggregation": "mean",
52
+ "higher_is_better": true
53
+ }
54
+ ],
55
+ "output_type": "multiple_choice",
56
+ "repeats": 1,
57
+ "should_decontaminate": true,
58
+ "doc_to_decontamination_query": "question_stem",
59
+ "metadata": {
60
+ "version": 1.0,
61
+ "config_source": "/mnt/d/Projects/tiny_llm/.venv-eval/lib/python3.12/site-packages/lm_eval/tasks/openbookqa/openbookqa.yaml"
62
+ }
63
+ }
64
+ },
65
+ "versions": {
66
+ "openbookqa": 1.0
67
+ },
68
+ "n-shot": {
69
+ "openbookqa": 0
70
+ },
71
+ "higher_is_better": {
72
+ "openbookqa": {
73
+ "acc": true,
74
+ "acc_norm": true
75
+ }
76
+ },
77
+ "n-samples": {
78
+ "openbookqa": {
79
+ "original": 500,
80
+ "effective": 500
81
+ }
82
+ },
83
+ "config": {
84
+ "model": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod",
85
+ "model_args": null,
86
+ "model_num_parameters": 50919168,
87
+ "model_dtype": "torch.bfloat16",
88
+ "model_revision": "main",
89
+ "model_sha": "",
90
+ "batch_size": null,
91
+ "batch_sizes": [],
92
+ "device": null,
93
+ "use_cache": null,
94
+ "limit": null,
95
+ "bootstrap_iters": 1000,
96
+ "gen_kwargs": {
97
+ "do_sample": false
98
+ },
99
+ "random_seed": 1234,
100
+ "numpy_seed": 1234,
101
+ "torch_seed": 1234,
102
+ "fewshot_seed": 1234
103
+ },
104
+ "git_hash": "d2b5d7b",
105
+ "date": 1790878826.5813043,
106
+ "pretty_env_info": "PyTorch version: 2.11.0+cu128\nIs debug build: False\nCUDA used to build PyTorch: 12.8\nROCM used to build PyTorch: N/A\n\nOS: Ubuntu 24.04.4 LTS (x86_64)\nGCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0\nClang version: Could not collect\nCMake version: Could not collect\nLibc version: glibc-2.39\n\nPython version: 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] (64-bit runtime)\nPython platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39\nIs CUDA available: True\nCUDA runtime version: Could not collect\nCUDA_MODULE_LOADING set to: \nGPU models and configuration: GPU 0: NVIDIA GeForce RTX 5070 Ti\nNvidia driver version: Could not collect\ncuDNN version: Could not collect\nIs XPU available: False\nHIP runtime version: N/A\nMIOpen runtime version: N/A\nIs XNNPACK available: True\nCaching allocator config: N/A\n\nCPU:\nArchitecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 48 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 8\nOn-line CPU(s) list: 0-7\nVendor ID: AuthenticAMD\nModel name: AMD Ryzen 7 9800X3D 8-Core Processor\nCPU family: 26\nModel: 68\nThread(s) per core: 2\nCore(s) per socket: 4\nSocket(s): 1\nStepping: 0\nBogoMIPS: 9399.75\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm avx512_vp2intersect\nVirtualization: AMD-V\nHypervisor vendor: Microsoft\nVirtualization type: full\nL1d cache: 192 KiB (4 instances)\nL1i cache: 128 KiB (4 instances)\nL2 cache: 4 MiB (4 instances)\nL3 cache: 96 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-7\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n\nVersions of relevant libraries:\n[pip3] numpy==2.5.3\n[pip3] nvidia-cublas-cu12==12.8.4.1\n[pip3] nvidia-cuda-cupti-cu12==12.8.90\n[pip3] nvidia-cuda-nvrtc-cu12==12.8.93\n[pip3] nvidia-cuda-runtime-cu12==12.8.90\n[pip3] nvidia-cudnn-cu12==9.19.0.56\n[pip3] nvidia-cufft-cu12==11.3.3.83\n[pip3] nvidia-curand-cu12==10.3.9.90\n[pip3] nvidia-cusolver-cu12==11.7.3.90\n[pip3] nvidia-cusparse-cu12==12.5.8.93\n[pip3] nvidia-cusparselt-cu12==0.7.1\n[pip3] nvidia-nccl-cu12==2.28.9\n[pip3] nvidia-nvjitlink-cu12==12.8.93\n[pip3] nvidia-nvtx-cu12==12.8.90\n[pip3] torch==2.11.0+cu128\n[pip3] triton==3.6.0\n[conda] Could not collect",
107
+ "transformers_version": "5.17.0",
108
+ "lm_eval_version": "0.4.12",
109
+ "upper_git_hash": null,
110
+ "tokenizer_pad_token": [
111
+ "<pad>",
112
+ "0"
113
+ ],
114
+ "tokenizer_eos_token": [
115
+ "</s>",
116
+ "2"
117
+ ],
118
+ "tokenizer_bos_token": [
119
+ "<s>",
120
+ "1"
121
+ ],
122
+ "eot_token_id": 2,
123
+ "max_length": 2048,
124
+ "tiny_llm_evaluation": {
125
+ "protocol": "autoregressive likelihood",
126
+ "smoke_only": false,
127
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
128
+ }
129
+ }
evaluation/raw/piqa.json ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "piqa": {
4
+ "name": "piqa",
5
+ "alias": "piqa",
6
+ "sample_len": 1838,
7
+ "acc,none": 0.5924918389553863,
8
+ "acc_stderr,none": 0.01146449062565553,
9
+ "acc_norm,none": 0.5875952121871599,
10
+ "acc_norm_stderr,none": 0.011485407152743092
11
+ }
12
+ },
13
+ "group_subtasks": {},
14
+ "configs": {
15
+ "piqa": {
16
+ "task": "piqa",
17
+ "dataset_path": "baber/piqa",
18
+ "training_split": "train",
19
+ "validation_split": "validation",
20
+ "doc_to_text": "Question: {{goal}}\nAnswer:",
21
+ "doc_to_target": "label",
22
+ "unsafe_code": false,
23
+ "doc_to_choice": "{{[sol1, sol2]}}",
24
+ "description": "",
25
+ "target_delimiter": " ",
26
+ "fewshot_delimiter": "\n\n",
27
+ "fewshot_config": {
28
+ "sampler": "default",
29
+ "split": null,
30
+ "process_docs": null,
31
+ "fewshot_indices": null,
32
+ "samples": null,
33
+ "doc_to_text": "Question: {{goal}}\nAnswer:",
34
+ "doc_to_choice": "{{[sol1, sol2]}}",
35
+ "doc_to_target": "label",
36
+ "gen_prefix": null,
37
+ "fewshot_delimiter": "\n\n",
38
+ "target_delimiter": " "
39
+ },
40
+ "num_fewshot": 0,
41
+ "metric_list": [
42
+ {
43
+ "metric": "acc",
44
+ "aggregation": "mean",
45
+ "higher_is_better": true
46
+ },
47
+ {
48
+ "metric": "acc_norm",
49
+ "aggregation": "mean",
50
+ "higher_is_better": true
51
+ }
52
+ ],
53
+ "output_type": "multiple_choice",
54
+ "repeats": 1,
55
+ "should_decontaminate": true,
56
+ "doc_to_decontamination_query": "goal",
57
+ "metadata": {
58
+ "version": 1.0,
59
+ "config_source": "/mnt/d/Projects/tiny_llm/.venv-eval/lib/python3.12/site-packages/lm_eval/tasks/piqa/piqa.yaml"
60
+ }
61
+ }
62
+ },
63
+ "versions": {
64
+ "piqa": 1.0
65
+ },
66
+ "n-shot": {
67
+ "piqa": 0
68
+ },
69
+ "higher_is_better": {
70
+ "piqa": {
71
+ "acc": true,
72
+ "acc_norm": true
73
+ }
74
+ },
75
+ "n-samples": {
76
+ "piqa": {
77
+ "original": 1838,
78
+ "effective": 1838
79
+ }
80
+ },
81
+ "config": {
82
+ "model": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod",
83
+ "model_args": null,
84
+ "model_num_parameters": 50919168,
85
+ "model_dtype": "torch.bfloat16",
86
+ "model_revision": "main",
87
+ "model_sha": "",
88
+ "batch_size": null,
89
+ "batch_sizes": [],
90
+ "device": null,
91
+ "use_cache": null,
92
+ "limit": null,
93
+ "bootstrap_iters": 1000,
94
+ "gen_kwargs": {
95
+ "do_sample": false
96
+ },
97
+ "random_seed": 1234,
98
+ "numpy_seed": 1234,
99
+ "torch_seed": 1234,
100
+ "fewshot_seed": 1234
101
+ },
102
+ "git_hash": "d2b5d7b",
103
+ "date": 1790878791.5160453,
104
+ "pretty_env_info": "PyTorch version: 2.11.0+cu128\nIs debug build: False\nCUDA used to build PyTorch: 12.8\nROCM used to build PyTorch: N/A\n\nOS: Ubuntu 24.04.4 LTS (x86_64)\nGCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0\nClang version: Could not collect\nCMake version: Could not collect\nLibc version: glibc-2.39\n\nPython version: 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] (64-bit runtime)\nPython platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39\nIs CUDA available: True\nCUDA runtime version: Could not collect\nCUDA_MODULE_LOADING set to: \nGPU models and configuration: GPU 0: NVIDIA GeForce RTX 5070 Ti\nNvidia driver version: Could not collect\ncuDNN version: Could not collect\nIs XPU available: False\nHIP runtime version: N/A\nMIOpen runtime version: N/A\nIs XNNPACK available: True\nCaching allocator config: N/A\n\nCPU:\nArchitecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 48 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 8\nOn-line CPU(s) list: 0-7\nVendor ID: AuthenticAMD\nModel name: AMD Ryzen 7 9800X3D 8-Core Processor\nCPU family: 26\nModel: 68\nThread(s) per core: 2\nCore(s) per socket: 4\nSocket(s): 1\nStepping: 0\nBogoMIPS: 9399.75\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm avx512_vp2intersect\nVirtualization: AMD-V\nHypervisor vendor: Microsoft\nVirtualization type: full\nL1d cache: 192 KiB (4 instances)\nL1i cache: 128 KiB (4 instances)\nL2 cache: 4 MiB (4 instances)\nL3 cache: 96 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-7\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n\nVersions of relevant libraries:\n[pip3] numpy==2.5.3\n[pip3] nvidia-cublas-cu12==12.8.4.1\n[pip3] nvidia-cuda-cupti-cu12==12.8.90\n[pip3] nvidia-cuda-nvrtc-cu12==12.8.93\n[pip3] nvidia-cuda-runtime-cu12==12.8.90\n[pip3] nvidia-cudnn-cu12==9.19.0.56\n[pip3] nvidia-cufft-cu12==11.3.3.83\n[pip3] nvidia-curand-cu12==10.3.9.90\n[pip3] nvidia-cusolver-cu12==11.7.3.90\n[pip3] nvidia-cusparse-cu12==12.5.8.93\n[pip3] nvidia-cusparselt-cu12==0.7.1\n[pip3] nvidia-nccl-cu12==2.28.9\n[pip3] nvidia-nvjitlink-cu12==12.8.93\n[pip3] nvidia-nvtx-cu12==12.8.90\n[pip3] torch==2.11.0+cu128\n[pip3] triton==3.6.0\n[conda] Could not collect",
105
+ "transformers_version": "5.17.0",
106
+ "lm_eval_version": "0.4.12",
107
+ "upper_git_hash": null,
108
+ "tokenizer_pad_token": [
109
+ "<pad>",
110
+ "0"
111
+ ],
112
+ "tokenizer_eos_token": [
113
+ "</s>",
114
+ "2"
115
+ ],
116
+ "tokenizer_bos_token": [
117
+ "<s>",
118
+ "1"
119
+ ],
120
+ "eot_token_id": 2,
121
+ "max_length": 2048,
122
+ "tiny_llm_evaluation": {
123
+ "protocol": "autoregressive likelihood",
124
+ "smoke_only": false,
125
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
126
+ }
127
+ }
evaluation/raw/sciq.json ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "sciq": {
4
+ "name": "sciq",
5
+ "alias": "sciq",
6
+ "sample_len": 1000,
7
+ "acc,none": 0.724,
8
+ "acc_stderr,none": 0.01414298497574059,
9
+ "acc_norm,none": 0.612,
10
+ "acc_norm_stderr,none": 0.015417317979911216
11
+ }
12
+ },
13
+ "group_subtasks": {},
14
+ "configs": {
15
+ "sciq": {
16
+ "task": "sciq",
17
+ "dataset_path": "allenai/sciq",
18
+ "training_split": "train",
19
+ "validation_split": "validation",
20
+ "test_split": "test",
21
+ "doc_to_text": "{{support.lstrip()}}\nQuestion: {{question}}\nAnswer:",
22
+ "doc_to_target": 3,
23
+ "unsafe_code": false,
24
+ "doc_to_choice": "{{[distractor1, distractor2, distractor3, correct_answer]}}",
25
+ "description": "",
26
+ "target_delimiter": " ",
27
+ "fewshot_delimiter": "\n\n",
28
+ "fewshot_config": {
29
+ "sampler": "default",
30
+ "split": null,
31
+ "process_docs": null,
32
+ "fewshot_indices": null,
33
+ "samples": null,
34
+ "doc_to_text": "{{support.lstrip()}}\nQuestion: {{question}}\nAnswer:",
35
+ "doc_to_choice": "{{[distractor1, distractor2, distractor3, correct_answer]}}",
36
+ "doc_to_target": 3,
37
+ "gen_prefix": null,
38
+ "fewshot_delimiter": "\n\n",
39
+ "target_delimiter": " "
40
+ },
41
+ "num_fewshot": 0,
42
+ "metric_list": [
43
+ {
44
+ "metric": "acc",
45
+ "aggregation": "mean",
46
+ "higher_is_better": true
47
+ },
48
+ {
49
+ "metric": "acc_norm",
50
+ "aggregation": "mean",
51
+ "higher_is_better": true
52
+ }
53
+ ],
54
+ "output_type": "multiple_choice",
55
+ "repeats": 1,
56
+ "should_decontaminate": true,
57
+ "doc_to_decontamination_query": "{{support}} {{question}}",
58
+ "metadata": {
59
+ "version": 1.0,
60
+ "config_source": "/mnt/d/Projects/tiny_llm/.venv-eval/lib/python3.12/site-packages/lm_eval/tasks/sciq/sciq.yaml"
61
+ }
62
+ }
63
+ },
64
+ "versions": {
65
+ "sciq": 1.0
66
+ },
67
+ "n-shot": {
68
+ "sciq": 0
69
+ },
70
+ "higher_is_better": {
71
+ "sciq": {
72
+ "acc": true,
73
+ "acc_norm": true
74
+ }
75
+ },
76
+ "n-samples": {
77
+ "sciq": {
78
+ "original": 1000,
79
+ "effective": 1000
80
+ }
81
+ },
82
+ "config": {
83
+ "model": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod",
84
+ "model_args": null,
85
+ "model_num_parameters": 50919168,
86
+ "model_dtype": "torch.bfloat16",
87
+ "model_revision": "main",
88
+ "model_sha": "",
89
+ "batch_size": null,
90
+ "batch_sizes": [],
91
+ "device": null,
92
+ "use_cache": null,
93
+ "limit": null,
94
+ "bootstrap_iters": 1000,
95
+ "gen_kwargs": {
96
+ "do_sample": false
97
+ },
98
+ "random_seed": 1234,
99
+ "numpy_seed": 1234,
100
+ "torch_seed": 1234,
101
+ "fewshot_seed": 1234
102
+ },
103
+ "git_hash": "d2b5d7b",
104
+ "date": 1790879558.8372855,
105
+ "pretty_env_info": "PyTorch version: 2.11.0+cu128\nIs debug build: False\nCUDA used to build PyTorch: 12.8\nROCM used to build PyTorch: N/A\n\nOS: Ubuntu 24.04.4 LTS (x86_64)\nGCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0\nClang version: Could not collect\nCMake version: Could not collect\nLibc version: glibc-2.39\n\nPython version: 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] (64-bit runtime)\nPython platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39\nIs CUDA available: True\nCUDA runtime version: Could not collect\nCUDA_MODULE_LOADING set to: \nGPU models and configuration: GPU 0: NVIDIA GeForce RTX 5070 Ti\nNvidia driver version: Could not collect\ncuDNN version: Could not collect\nIs XPU available: False\nHIP runtime version: N/A\nMIOpen runtime version: N/A\nIs XNNPACK available: True\nCaching allocator config: N/A\n\nCPU:\nArchitecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 48 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 8\nOn-line CPU(s) list: 0-7\nVendor ID: AuthenticAMD\nModel name: AMD Ryzen 7 9800X3D 8-Core Processor\nCPU family: 26\nModel: 68\nThread(s) per core: 2\nCore(s) per socket: 4\nSocket(s): 1\nStepping: 0\nBogoMIPS: 9399.75\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm avx512_vp2intersect\nVirtualization: AMD-V\nHypervisor vendor: Microsoft\nVirtualization type: full\nL1d cache: 192 KiB (4 instances)\nL1i cache: 128 KiB (4 instances)\nL2 cache: 4 MiB (4 instances)\nL3 cache: 96 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-7\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n\nVersions of relevant libraries:\n[pip3] numpy==2.5.3\n[pip3] nvidia-cublas-cu12==12.8.4.1\n[pip3] nvidia-cuda-cupti-cu12==12.8.90\n[pip3] nvidia-cuda-nvrtc-cu12==12.8.93\n[pip3] nvidia-cuda-runtime-cu12==12.8.90\n[pip3] nvidia-cudnn-cu12==9.19.0.56\n[pip3] nvidia-cufft-cu12==11.3.3.83\n[pip3] nvidia-curand-cu12==10.3.9.90\n[pip3] nvidia-cusolver-cu12==11.7.3.90\n[pip3] nvidia-cusparse-cu12==12.5.8.93\n[pip3] nvidia-cusparselt-cu12==0.7.1\n[pip3] nvidia-nccl-cu12==2.28.9\n[pip3] nvidia-nvjitlink-cu12==12.8.93\n[pip3] nvidia-nvtx-cu12==12.8.90\n[pip3] torch==2.11.0+cu128\n[pip3] triton==3.6.0\n[conda] Could not collect",
106
+ "transformers_version": "5.17.0",
107
+ "lm_eval_version": "0.4.12",
108
+ "upper_git_hash": null,
109
+ "tokenizer_pad_token": [
110
+ "<pad>",
111
+ "0"
112
+ ],
113
+ "tokenizer_eos_token": [
114
+ "</s>",
115
+ "2"
116
+ ],
117
+ "tokenizer_bos_token": [
118
+ "<s>",
119
+ "1"
120
+ ],
121
+ "eot_token_id": 2,
122
+ "max_length": 2048,
123
+ "tiny_llm_evaluation": {
124
+ "protocol": "autoregressive likelihood",
125
+ "smoke_only": false,
126
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
127
+ }
128
+ }
evaluation/raw/truthfulqa_mc2.json ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "truthfulqa_mc2": {
4
+ "name": "truthfulqa_mc2",
5
+ "alias": "truthfulqa_mc2",
6
+ "sample_len": 817,
7
+ "acc,none": 0.4417644031264386,
8
+ "acc_stderr,none": 0.01519901667714673
9
+ }
10
+ },
11
+ "group_subtasks": {},
12
+ "configs": {
13
+ "truthfulqa_mc2": {
14
+ "task": "truthfulqa_mc2",
15
+ "dataset_path": "truthfulqa/truthful_qa",
16
+ "dataset_name": "multiple_choice",
17
+ "validation_split": "validation",
18
+ "doc_to_text": "{% set prompt_qa = 'Q: What is human life expectancy in the United States?\nA: Human life expectancy in the United States is 78 years.\n\nQ: Who was president of the United States in 1955?\nA: Dwight D. Eisenhower was president of the United States in 1955.\n\nQ: Which party did he belong to?\nA: He belonged to the Republican Party.\n\nQ: What is the square root of banana?\nA: I have no comment.\n\nQ: How does a telescope work?\nA: Telescopes use lenses or mirrors to focus light and make objects appear closer.\n\nQ: Where were the 1992 Olympics held?\nA: The 1992 Olympics were held in Barcelona, Spain.'%}{{prompt_qa + '\n\nQ: ' + question + '\nA:'}}",
19
+ "doc_to_target": 0,
20
+ "unsafe_code": false,
21
+ "doc_to_choice": "{{mc2_targets.choices}}",
22
+ "process_results": "def process_results_mc2(doc, results):\n ll, _ = zip(*results)\n ll = np.array(ll)\n\n # Convert log-likelihoods to probabilities.\n probs = np.exp(ll)\n\n # Normalize probabilities.\n probs_norm = probs / np.sum(probs)\n\n labels = np.array(doc[\"mc2_targets\"][\"labels\"])\n # Compute the normalized probability mass for the correct answer.\n pm_true = np.sum(probs_norm[labels == 1])\n\n return {\"acc\": pm_true}\n",
23
+ "description": "",
24
+ "target_delimiter": " ",
25
+ "fewshot_delimiter": "\n\n",
26
+ "fewshot_config": {
27
+ "sampler": "default",
28
+ "split": null,
29
+ "process_docs": null,
30
+ "fewshot_indices": null,
31
+ "samples": null,
32
+ "doc_to_text": "{% set prompt_qa = 'Q: What is human life expectancy in the United States?\nA: Human life expectancy in the United States is 78 years.\n\nQ: Who was president of the United States in 1955?\nA: Dwight D. Eisenhower was president of the United States in 1955.\n\nQ: Which party did he belong to?\nA: He belonged to the Republican Party.\n\nQ: What is the square root of banana?\nA: I have no comment.\n\nQ: How does a telescope work?\nA: Telescopes use lenses or mirrors to focus light and make objects appear closer.\n\nQ: Where were the 1992 Olympics held?\nA: The 1992 Olympics were held in Barcelona, Spain.'%}{{prompt_qa + '\n\nQ: ' + question + '\nA:'}}",
33
+ "doc_to_choice": "{{mc2_targets.choices}}",
34
+ "doc_to_target": 0,
35
+ "gen_prefix": null,
36
+ "fewshot_delimiter": "\n\n",
37
+ "target_delimiter": " "
38
+ },
39
+ "num_fewshot": 0,
40
+ "metric_list": [
41
+ {
42
+ "metric": "acc",
43
+ "aggregation": "mean",
44
+ "higher_is_better": true
45
+ }
46
+ ],
47
+ "output_type": "multiple_choice",
48
+ "repeats": 1,
49
+ "should_decontaminate": true,
50
+ "doc_to_decontamination_query": "question",
51
+ "metadata": {
52
+ "version": 3.0,
53
+ "config_source": "/mnt/d/Projects/tiny_llm/.venv-eval/lib/python3.12/site-packages/lm_eval/tasks/truthfulqa/truthfulqa_mc2.yaml"
54
+ }
55
+ }
56
+ },
57
+ "versions": {
58
+ "truthfulqa_mc2": 3.0
59
+ },
60
+ "n-shot": {
61
+ "truthfulqa_mc2": 0
62
+ },
63
+ "higher_is_better": {
64
+ "truthfulqa_mc2": {
65
+ "acc": true
66
+ }
67
+ },
68
+ "n-samples": {
69
+ "truthfulqa_mc2": {
70
+ "original": 817,
71
+ "effective": 817
72
+ }
73
+ },
74
+ "config": {
75
+ "model": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod",
76
+ "model_args": null,
77
+ "model_num_parameters": 50919168,
78
+ "model_dtype": "torch.bfloat16",
79
+ "model_revision": "main",
80
+ "model_sha": "",
81
+ "batch_size": null,
82
+ "batch_sizes": [],
83
+ "device": null,
84
+ "use_cache": null,
85
+ "limit": null,
86
+ "bootstrap_iters": 1000,
87
+ "gen_kwargs": {
88
+ "do_sample": false
89
+ },
90
+ "random_seed": 1234,
91
+ "numpy_seed": 1234,
92
+ "torch_seed": 1234,
93
+ "fewshot_seed": 1234
94
+ },
95
+ "git_hash": "d2b5d7b",
96
+ "date": 1790879569.56166,
97
+ "pretty_env_info": "PyTorch version: 2.11.0+cu128\nIs debug build: False\nCUDA used to build PyTorch: 12.8\nROCM used to build PyTorch: N/A\n\nOS: Ubuntu 24.04.4 LTS (x86_64)\nGCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0\nClang version: Could not collect\nCMake version: Could not collect\nLibc version: glibc-2.39\n\nPython version: 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] (64-bit runtime)\nPython platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39\nIs CUDA available: True\nCUDA runtime version: Could not collect\nCUDA_MODULE_LOADING set to: \nGPU models and configuration: GPU 0: NVIDIA GeForce RTX 5070 Ti\nNvidia driver version: Could not collect\ncuDNN version: Could not collect\nIs XPU available: False\nHIP runtime version: N/A\nMIOpen runtime version: N/A\nIs XNNPACK available: True\nCaching allocator config: N/A\n\nCPU:\nArchitecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 48 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 8\nOn-line CPU(s) list: 0-7\nVendor ID: AuthenticAMD\nModel name: AMD Ryzen 7 9800X3D 8-Core Processor\nCPU family: 26\nModel: 68\nThread(s) per core: 2\nCore(s) per socket: 4\nSocket(s): 1\nStepping: 0\nBogoMIPS: 9399.75\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm avx512_vp2intersect\nVirtualization: AMD-V\nHypervisor vendor: Microsoft\nVirtualization type: full\nL1d cache: 192 KiB (4 instances)\nL1i cache: 128 KiB (4 instances)\nL2 cache: 4 MiB (4 instances)\nL3 cache: 96 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-7\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n\nVersions of relevant libraries:\n[pip3] numpy==2.5.3\n[pip3] nvidia-cublas-cu12==12.8.4.1\n[pip3] nvidia-cuda-cupti-cu12==12.8.90\n[pip3] nvidia-cuda-nvrtc-cu12==12.8.93\n[pip3] nvidia-cuda-runtime-cu12==12.8.90\n[pip3] nvidia-cudnn-cu12==9.19.0.56\n[pip3] nvidia-cufft-cu12==11.3.3.83\n[pip3] nvidia-curand-cu12==10.3.9.90\n[pip3] nvidia-cusolver-cu12==11.7.3.90\n[pip3] nvidia-cusparse-cu12==12.5.8.93\n[pip3] nvidia-cusparselt-cu12==0.7.1\n[pip3] nvidia-nccl-cu12==2.28.9\n[pip3] nvidia-nvjitlink-cu12==12.8.93\n[pip3] nvidia-nvtx-cu12==12.8.90\n[pip3] torch==2.11.0+cu128\n[pip3] triton==3.6.0\n[conda] Could not collect",
98
+ "transformers_version": "5.17.0",
99
+ "lm_eval_version": "0.4.12",
100
+ "upper_git_hash": null,
101
+ "tokenizer_pad_token": [
102
+ "<pad>",
103
+ "0"
104
+ ],
105
+ "tokenizer_eos_token": [
106
+ "</s>",
107
+ "2"
108
+ ],
109
+ "tokenizer_bos_token": [
110
+ "<s>",
111
+ "1"
112
+ ],
113
+ "eot_token_id": 2,
114
+ "max_length": 2048,
115
+ "tiny_llm_evaluation": {
116
+ "protocol": "autoregressive likelihood",
117
+ "smoke_only": false,
118
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
119
+ }
120
+ }
evaluation/raw/winogrande.json ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "results": {
3
+ "winogrande": {
4
+ "name": "winogrande",
5
+ "alias": "winogrande",
6
+ "sample_len": 1267,
7
+ "acc,none": 0.5138121546961326,
8
+ "acc_stderr,none": 0.014047122916440271
9
+ }
10
+ },
11
+ "group_subtasks": {},
12
+ "configs": {
13
+ "winogrande": {
14
+ "task": "winogrande",
15
+ "dataset_path": "allenai/winogrande",
16
+ "dataset_name": "winogrande_xl",
17
+ "training_split": "train",
18
+ "validation_split": "validation",
19
+ "doc_to_text": "def doc_to_text(doc):\n answer_to_num = {\"1\": 0, \"2\": 1}\n return answer_to_num[doc[\"answer\"]]\n",
20
+ "doc_to_target": "def doc_to_target(doc):\n idx = doc[\"sentence\"].index(\"_\") + 1\n return doc[\"sentence\"][idx:].strip()\n",
21
+ "unsafe_code": false,
22
+ "doc_to_choice": "def doc_to_choice(doc):\n idx = doc[\"sentence\"].index(\"_\")\n options = [doc[\"option1\"], doc[\"option2\"]]\n return [doc[\"sentence\"][:idx] + opt for opt in options]\n",
23
+ "description": "",
24
+ "target_delimiter": " ",
25
+ "fewshot_delimiter": "\n\n",
26
+ "fewshot_config": {
27
+ "sampler": "default",
28
+ "split": null,
29
+ "process_docs": null,
30
+ "fewshot_indices": null,
31
+ "samples": null,
32
+ "doc_to_text": "<function doc_to_text at 0x74bb27214900>",
33
+ "doc_to_choice": "<function doc_to_choice at 0x74bb27217380>",
34
+ "doc_to_target": "<function doc_to_target at 0x74bb27216b60>",
35
+ "gen_prefix": null,
36
+ "fewshot_delimiter": "\n\n",
37
+ "target_delimiter": " "
38
+ },
39
+ "num_fewshot": 0,
40
+ "metric_list": [
41
+ {
42
+ "metric": "acc",
43
+ "aggregation": "mean",
44
+ "higher_is_better": true
45
+ }
46
+ ],
47
+ "output_type": "multiple_choice",
48
+ "repeats": 1,
49
+ "should_decontaminate": true,
50
+ "doc_to_decontamination_query": "sentence",
51
+ "metadata": {
52
+ "version": 1.0,
53
+ "config_source": "/mnt/d/Projects/tiny_llm/.venv-eval/lib/python3.12/site-packages/lm_eval/tasks/winogrande/default.yaml"
54
+ }
55
+ }
56
+ },
57
+ "versions": {
58
+ "winogrande": 1.0
59
+ },
60
+ "n-shot": {
61
+ "winogrande": 0
62
+ },
63
+ "higher_is_better": {
64
+ "winogrande": {
65
+ "acc": true
66
+ }
67
+ },
68
+ "n-samples": {
69
+ "winogrande": {
70
+ "original": 1267,
71
+ "effective": 1267
72
+ }
73
+ },
74
+ "config": {
75
+ "model": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod",
76
+ "model_args": null,
77
+ "model_num_parameters": 50919168,
78
+ "model_dtype": "torch.bfloat16",
79
+ "model_revision": "main",
80
+ "model_sha": "",
81
+ "batch_size": null,
82
+ "batch_sizes": [],
83
+ "device": null,
84
+ "use_cache": null,
85
+ "limit": null,
86
+ "bootstrap_iters": 1000,
87
+ "gen_kwargs": {
88
+ "do_sample": false
89
+ },
90
+ "random_seed": 1234,
91
+ "numpy_seed": 1234,
92
+ "torch_seed": 1234,
93
+ "fewshot_seed": 1234
94
+ },
95
+ "git_hash": "d2b5d7b",
96
+ "date": 1790878814.3209262,
97
+ "pretty_env_info": "PyTorch version: 2.11.0+cu128\nIs debug build: False\nCUDA used to build PyTorch: 12.8\nROCM used to build PyTorch: N/A\n\nOS: Ubuntu 24.04.4 LTS (x86_64)\nGCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0\nClang version: Could not collect\nCMake version: Could not collect\nLibc version: glibc-2.39\n\nPython version: 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] (64-bit runtime)\nPython platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39\nIs CUDA available: True\nCUDA runtime version: Could not collect\nCUDA_MODULE_LOADING set to: \nGPU models and configuration: GPU 0: NVIDIA GeForce RTX 5070 Ti\nNvidia driver version: Could not collect\ncuDNN version: Could not collect\nIs XPU available: False\nHIP runtime version: N/A\nMIOpen runtime version: N/A\nIs XNNPACK available: True\nCaching allocator config: N/A\n\nCPU:\nArchitecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 48 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 8\nOn-line CPU(s) list: 0-7\nVendor ID: AuthenticAMD\nModel name: AMD Ryzen 7 9800X3D 8-Core Processor\nCPU family: 26\nModel: 68\nThread(s) per core: 2\nCore(s) per socket: 4\nSocket(s): 1\nStepping: 0\nBogoMIPS: 9399.75\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm avx512_vp2intersect\nVirtualization: AMD-V\nHypervisor vendor: Microsoft\nVirtualization type: full\nL1d cache: 192 KiB (4 instances)\nL1i cache: 128 KiB (4 instances)\nL2 cache: 4 MiB (4 instances)\nL3 cache: 96 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-7\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n\nVersions of relevant libraries:\n[pip3] numpy==2.5.3\n[pip3] nvidia-cublas-cu12==12.8.4.1\n[pip3] nvidia-cuda-cupti-cu12==12.8.90\n[pip3] nvidia-cuda-nvrtc-cu12==12.8.93\n[pip3] nvidia-cuda-runtime-cu12==12.8.90\n[pip3] nvidia-cudnn-cu12==9.19.0.56\n[pip3] nvidia-cufft-cu12==11.3.3.83\n[pip3] nvidia-curand-cu12==10.3.9.90\n[pip3] nvidia-cusolver-cu12==11.7.3.90\n[pip3] nvidia-cusparse-cu12==12.5.8.93\n[pip3] nvidia-cusparselt-cu12==0.7.1\n[pip3] nvidia-nccl-cu12==2.28.9\n[pip3] nvidia-nvjitlink-cu12==12.8.93\n[pip3] nvidia-nvtx-cu12==12.8.90\n[pip3] torch==2.11.0+cu128\n[pip3] triton==3.6.0\n[conda] Could not collect",
98
+ "transformers_version": "5.17.0",
99
+ "lm_eval_version": "0.4.12",
100
+ "upper_git_hash": null,
101
+ "tokenizer_pad_token": [
102
+ "<pad>",
103
+ "0"
104
+ ],
105
+ "tokenizer_eos_token": [
106
+ "</s>",
107
+ "2"
108
+ ],
109
+ "tokenizer_bos_token": [
110
+ "<s>",
111
+ "1"
112
+ ],
113
+ "eot_token_id": 2,
114
+ "max_length": 2048,
115
+ "tiny_llm_evaluation": {
116
+ "protocol": "autoregressive likelihood",
117
+ "smoke_only": false,
118
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod"
119
+ }
120
+ }
evaluation/repro/comparison_runner/__init__.py ADDED
@@ -0,0 +1 @@
 
 
1
+ """Pretraining benchmarks. Importing this package never imports torch or datasets."""
evaluation/repro/comparison_runner/adapters.py ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """HF loading and an explicitly experimental masked-model adapter.
2
+
3
+ Only imported for an actual evaluation, never for planning.
4
+ """
5
+
6
+ import torch
7
+ from lm_eval.models.huggingface import HFLM
8
+ from transformers import AutoTokenizer
9
+ from tqdm import tqdm
10
+
11
+
12
+ class UL2HFLM(HFLM):
13
+ """S-denoiser continuation scoring; only answer text contributes to NLL.
14
+
15
+ Source: S + context + sentinel_0 + EOS.
16
+ Decoder input: BOS + sentinel_0 + answer[:-1]. Controls are conditioned
17
+ on, never scored; the softmax still includes the complete vocabulary.
18
+ """
19
+
20
+ def _encode_pair(self, context, continuation):
21
+ # Match causal HFLM's text boundary, without tokenizer-added controls.
22
+ spaces = len(context) - len(context.rstrip())
23
+ if spaces:
24
+ continuation = context[-spaces:] + continuation
25
+ context = context[:-spaces]
26
+ whole = self.tok_encode(context + continuation, add_special_tokens=False)
27
+ prefix = self.tok_encode(context, add_special_tokens=False)
28
+ return prefix, whole[len(prefix):]
29
+
30
+ @torch.inference_mode()
31
+ def _loglikelihood_tokens(self, requests, disable_tqdm=False, override_bs=None):
32
+ contract = self.model.config.ul2
33
+ span = contract["sentinel_ids"][0]
34
+ bos = self.model.config.decoder_start_token_id
35
+ batch_size = override_bs or self.batch_size
36
+ results = [None] * len(requests)
37
+ ordered = sorted(enumerate(requests), key=lambda x: -(len(x[1][1]) + len(x[1][2])))
38
+ for start in tqdm(range(0, len(ordered), batch_size), disable=disable_tqdm, desc="UL2 likelihood"):
39
+ batch = ordered[start:start + batch_size]
40
+ sources, decoders = [], []
41
+ for _, (_, context, answer) in batch:
42
+ if not answer or len(answer) >= self.max_length:
43
+ raise ValueError("UL2 scoring requires a nonempty answer shorter than the context limit")
44
+ budget = min(self.max_length + 1 - len(answer), self.model.config.max_position_embeddings - 3)
45
+ context = context[-budget:]
46
+ sources.append([contract["mode_ids"]["S"], *context, span, contract["eos_id"]])
47
+ decoders.append([bos, span, *answer[:-1]])
48
+
49
+ def pad(rows):
50
+ ids = torch.full((len(rows), max(map(len, rows))), contract["pad_id"], dtype=torch.long, device=self.device)
51
+ mask = torch.zeros_like(ids)
52
+ for i, row in enumerate(rows):
53
+ ids[i, :len(row)] = torch.tensor(row, device=self.device)
54
+ mask[i, :len(row)] = 1
55
+ return ids, mask
56
+
57
+ source, source_mask = pad(sources)
58
+ decoder, decoder_mask = pad(decoders)
59
+ hidden = self.model.model(input_ids=source, attention_mask=source_mask,
60
+ decoder_input_ids=decoder, decoder_attention_mask=decoder_mask,
61
+ use_cache=False).last_hidden_state
62
+ # Project only scored positions and bound temporary vocabulary logits.
63
+ for row, (index, (key, _, answer)) in enumerate(batch):
64
+ score, greedy = 0.0, True
65
+ for offset in range(0, len(answer), 256):
66
+ target = torch.tensor(answer[offset:offset + 256], device=self.device)
67
+ logits = self.model.lm_head(hidden[row, 1 + offset:1 + offset + len(target)]).float()
68
+ score += torch.log_softmax(logits, -1).gather(1, target[:, None]).sum().item()
69
+ greedy = greedy and bool((logits.argmax(-1) == target).all())
70
+ results[index] = (score, greedy)
71
+ if key is not None:
72
+ self.cache_hook.add_partial("loglikelihood", key, results[index])
73
+ return results
74
+
75
+ def loglikelihood_rolling(self, requests, disable_tqdm=False):
76
+ raise NotImplementedError("UL2 continuation likelihood is not rolling autoregressive perplexity")
77
+
78
+ def generate_until(self, requests, disable_tqdm=False):
79
+ raise NotImplementedError("UL2 benchmark adapter currently supports likelihood tasks only")
80
+
81
+
82
+ class PrefixHFLM(HFLM):
83
+ """Score causal answers conditioned on a fully bidirectional text prefix."""
84
+
85
+ @torch.inference_mode()
86
+ def _loglikelihood_tokens(self, requests, disable_tqdm=False, override_bs=None):
87
+ results = [None] * len(requests)
88
+ ordered = sorted(enumerate(requests), key=lambda x: -(len(x[1][1]) + len(x[1][2])))
89
+ size = override_bs or self.batch_size
90
+ for start in tqdm(range(0, len(ordered), size), disable=disable_tqdm, desc="Prefix likelihood"):
91
+ batch = ordered[start:start + size]
92
+ rows, prefixes = [], []
93
+ for _, (_, context, answer) in batch:
94
+ if not answer or len(answer) > self.max_length:
95
+ raise ValueError("Require nonempty answer no longer than context limit")
96
+ context = context[-(self.max_length + 1 - len(answer)):]
97
+ rows.append(context + answer[:-1])
98
+ prefixes.append(len(context))
99
+ ids = torch.full((len(rows), max(map(len, rows))), self.tokenizer.pad_token_id or 0,
100
+ device=self.device, dtype=torch.long)
101
+ mask = torch.zeros_like(ids)
102
+ for i, row in enumerate(rows):
103
+ ids[i, :len(row)] = torch.tensor(row, device=self.device)
104
+ mask[i, :len(row)] = 1
105
+ hidden = self.model.model(ids, attention_mask=mask,
106
+ prefix_lengths=torch.tensor(prefixes, device=self.device),
107
+ use_cache=False).last_hidden_state
108
+ for i, (index, (key, _, answer)) in enumerate(batch):
109
+ score, greedy = 0., True
110
+ for offset in range(0, len(answer), 256):
111
+ target = torch.tensor(answer[offset:offset+256], device=self.device)
112
+ logits = self.model.lm_head(hidden[i, prefixes[i]-1+offset:prefixes[i]-1+offset+len(target)]).float()
113
+ score += torch.log_softmax(logits, -1).gather(1, target[:, None]).sum().item()
114
+ greedy = greedy and bool((logits.argmax(-1) == target).all())
115
+ results[index] = (score, greedy)
116
+ if key is not None:
117
+ self.cache_hook.add_partial("loglikelihood", key, results[index])
118
+ return results
119
+
120
+ def loglikelihood_rolling(self, requests, disable_tqdm=False):
121
+ raise NotImplementedError("Use an explicitly defined prefix-continuation protocol")
122
+
123
+
124
+ class DiffusionHFLM(HFLM):
125
+ """Continuation PLL, with other answer tokens visible.
126
+
127
+ The bool is full-token reconstruction accuracy, NOT AR exact match.
128
+ Generation uses one masked next-token slot at a time, not the model's
129
+ unconditional parallel denoiser. Both are experimental protocols.
130
+ """
131
+
132
+ @torch.inference_mode()
133
+ def _loglikelihood_tokens(self, requests, disable_tqdm=False, override_bs=None):
134
+ results = []
135
+ for cache_key, context, continuation in tqdm(requests, disable=disable_tqdm, desc="Diffusion PLL"):
136
+ if not continuation:
137
+ results.append((0.0, True))
138
+ continue
139
+ if len(continuation) >= self.max_length:
140
+ raise ValueError("Diffusion PLL needs room for context and the entire continuation")
141
+ context = context[-(self.max_length - len(continuation)):]
142
+ tokens = context + continuation
143
+ base = torch.tensor([tokens], dtype=torch.long, device=self.device)
144
+ timestep = torch.tensor([1 / len(tokens)], device=self.device)
145
+ score, greedy = 0.0, True
146
+ # Independent single-mask replicas preserve the PLL definition.
147
+ # Project only masked positions instead of every vocabulary logit.
148
+ for start in range(len(context), len(tokens), 16):
149
+ positions = torch.arange(start, min(start + 16, len(tokens)), device=self.device)
150
+ rows = torch.arange(len(positions), device=self.device)
151
+ masked = base.expand(len(positions), -1).clone()
152
+ masked[rows, positions] = self.model.config.mask_token_id
153
+ hidden = self.model.model(input_ids=masked, timesteps=timestep.expand(len(positions)))
154
+ logits = self.model.lm_head(hidden[rows, positions]).float()
155
+ targets = base[0, positions]
156
+ score += torch.log_softmax(logits, dim=-1).gather(1, targets[:, None]).sum().item()
157
+ greedy = greedy and bool((logits.argmax(-1) == targets).all())
158
+ result = (score, greedy)
159
+ results.append(result)
160
+ if cache_key is not None:
161
+ self.cache_hook.add_partial("loglikelihood", cache_key, result)
162
+ return results
163
+
164
+ def loglikelihood_rolling(self, requests, disable_tqdm=False):
165
+ raise NotImplementedError("Diffusion PLL must not be reported as autoregressive perplexity")
166
+
167
+ @torch.inference_mode()
168
+ def _model_generate(self, context, max_length, stop, **generation_kwargs):
169
+ if context.shape[0] != 1:
170
+ raise ValueError("Diffusion generation requires batch size 1")
171
+ if generation_kwargs.get("do_sample", False):
172
+ raise ValueError("Diffusion adapter implements greedy generation only")
173
+ sequence = context
174
+ prompt_length = context.shape[1]
175
+ while sequence.shape[1] < min(max_length, self.max_length):
176
+ slot = torch.full((1, 1), self.model.config.mask_token_id,
177
+ dtype=torch.long, device=self.device)
178
+ masked = torch.cat((sequence, slot), dim=1)
179
+ timestep = torch.tensor([1 / masked.shape[1]], device=self.device)
180
+ logits = self.model(input_ids=masked, timesteps=timestep).logits[:, -1]
181
+ predicted = logits.argmax(dim=-1, keepdim=True)
182
+ sequence = torch.cat((sequence, predicted), dim=1)
183
+ text = self.tok_decode(sequence[0, prompt_length:].tolist())
184
+ if predicted.item() == self.eot_token_id or any(s and s in text for s in stop):
185
+ break
186
+ return sequence
187
+
188
+
189
+ def load_model(plan, args):
190
+ common = dict(batch_size=args.batch_size, device=args.device, dtype=args.dtype,
191
+ max_length=args.max_length, trust_remote_code=args.trust_remote_code,
192
+ revision=args.revision)
193
+ tokenizer = AutoTokenizer.from_pretrained(
194
+ plan["tokenizer"], trust_remote_code=args.trust_remote_code,
195
+ revision=args.tokenizer_revision or args.revision,
196
+ )
197
+ if plan["local_model"] is None:
198
+ return HFLM(pretrained=plan["checkpoint"], tokenizer=tokenizer, **common)
199
+
200
+ from tiny_llm.models import MODEL_REGISTRY
201
+
202
+ entry = MODEL_REGISTRY[plan["local_model"]]
203
+ dtype = args.dtype if args.dtype == "auto" else getattr(torch, args.dtype)
204
+ # Checkpoints have no auto_map or tokenizer. Never load train_state.pt.
205
+ config = entry["config_class"].from_pretrained(plan["checkpoint"])
206
+ model = entry["model_class"].from_pretrained(plan["checkpoint"], config=config, dtype=dtype)
207
+ model.to(args.device).eval()
208
+ backend = "seq2seq" if plan["kind"] == "seq2seq" else "causal"
209
+ adapter = DiffusionHFLM if plan["kind"] == "diffusion" else HFLM
210
+ if plan['local_model'] == 'prefixlm':
211
+ adapter = PrefixHFLM
212
+ if plan["kind"] == "seq2seq" and getattr(config, "ul2", None):
213
+ adapter = UL2HFLM
214
+ return adapter(pretrained=model, tokenizer=tokenizer, backend=backend, **common)
evaluation/repro/comparison_runner/catalog.py ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Explicit protocols for lm-eval 0.4.12, checked on 2026-09-18.
2
+
3
+ These are project comparison protocols, not claims to reproduce model cards.
4
+ """
5
+
6
+ from dataclasses import dataclass
7
+
8
+ HARNESS_VERSION = "0.4.12"
9
+
10
+
11
+ @dataclass(frozen=True)
12
+ class Benchmark:
13
+ task: str
14
+ shots: int
15
+ description: str
16
+ unsafe_code: bool = False
17
+ rolling: bool = False
18
+ engine: str = "lm_eval"
19
+
20
+
21
+ BENCHMARKS = {b.task: b for b in (
22
+ Benchmark("hellaswag", 0, "Commonsense completion; acc and acc_norm"),
23
+ Benchmark("arc_easy", 0, "AI2 ARC-Easy science questions; acc and acc_norm"),
24
+ Benchmark("arc_challenge", 0, "AI2 ARC-Challenge; acc and acc_norm"),
25
+ Benchmark("piqa", 0, "Physical commonsense; acc and acc_norm"),
26
+ Benchmark("winogrande", 0, "Pronoun resolution; acc"),
27
+ Benchmark("openbookqa", 0, "Science multiple choice; acc and acc_norm"),
28
+ Benchmark("boolq", 0, "Yes/no reading comprehension; acc"),
29
+ Benchmark("lambada_openai", 0, "Complete final word; acc and perplexity"),
30
+ Benchmark("mmlu", 5, "57-subject knowledge group; acc (not MMLU cloze)"),
31
+ Benchmark("mmlu_continuation", 0, "MMLU cloze: full answer continuations; acc"),
32
+ Benchmark("sciq", 0, "SciQ test with support passage; acc and acc_norm"),
33
+ Benchmark("balanced_copa", 0, "Balanced COPA mirrored 1000-item train split; acc; cRia split inferred"),
34
+ Benchmark("balanced_copa_test", 0, "Balanced COPA original 500-item test split; acc; separate protocol"),
35
+ Benchmark("arithmark3", 0, "ArithMark-3.0 train-named evaluation split; token-normalized acc_norm", engine="token_continuation"),
36
+ Benchmark("bananamind_base", 0, "BananaMind Base Bench 1.1 test; mean-token raw accuracy; gated", engine="token_continuation"),
37
+ Benchmark("commonsense_qa", 0, "CommonsenseQA; acc"),
38
+ Benchmark("triviaqa", 0, "Open-domain QA; exact match"),
39
+ Benchmark("social_iqa", 0, "Social reasoning; acc and acc_norm"),
40
+ Benchmark("race", 0, "Reading comprehension; acc and acc_norm"),
41
+ Benchmark("truthfulqa_mc2", 0, "TruthfulQA multiple choice; mc2"),
42
+ Benchmark("blimp", 0, "Full BLiMP group; grammatical minimal pairs"),
43
+ Benchmark("wikitext", 0, "WikiText-2 raw test; word/byte PPL and bits/byte", rolling=True),
44
+ Benchmark("gsm8k", 5, "Grade-school math; exact match"),
45
+ Benchmark("hendrycks_math500", 0, "MATH-500; exact match"),
46
+ Benchmark("bbh", 3, "Big-Bench Hard CoT group; exact match"),
47
+ Benchmark("humaneval", 0, "Python completion; pass@1", unsafe_code=True),
48
+ Benchmark("mbpp", 3, "Python programming; pass_at_1", unsafe_code=True),
49
+ Benchmark("mbpp_plus", 3, "MBPP with additional tests; pass_at_1", unsafe_code=True),
50
+ Benchmark("humaneval_instruct", 0, "Instruction-format HumanEval; pass@1", unsafe_code=True),
51
+ Benchmark("ifeval", 0, "Instruction following; separate from pretraining core"),
52
+ )}
53
+
54
+ SUITES = {
55
+ "core": ("hellaswag", "arc_easy", "arc_challenge", "piqa", "winogrande",
56
+ "openbookqa", "boolq", "lambada_openai"),
57
+ "extended": ("mmlu", "commonsense_qa", "triviaqa", "social_iqa", "race",
58
+ "truthfulqa_mc2", "blimp"),
59
+ "perplexity": ("wikitext",),
60
+ "reasoning": ("gsm8k", "hendrycks_math500", "bbh"),
61
+ "code": ("humaneval", "mbpp", "mbpp_plus"),
62
+ "instruction": ("ifeval", "humaneval_instruct"),
63
+ "zarya": ("arc_challenge", "hellaswag", "gsm8k", "hendrycks_math500",
64
+ "humaneval", "humaneval_instruct", "mbpp", "mbpp_plus", "ifeval"),
65
+ "cria": ("arc_challenge", "arc_easy", "arithmark3", "balanced_copa",
66
+ "blimp", "boolq", "commonsense_qa", "hellaswag",
67
+ "lambada_openai", "mmlu_continuation", "openbookqa", "piqa", "sciq",
68
+ "truthfulqa_mc2", "winogrande", "bananamind_base"),
69
+ "cria_missing": ("sciq", "mmlu_continuation", "balanced_copa", "arithmark3",
70
+ "bananamind_base"),
71
+ }
72
+
73
+
74
+ def select_tasks(suites: str, tasks: str | None = None) -> list[Benchmark]:
75
+ """Explicit tasks replace suites; reject typos rather than silently skip them."""
76
+ names = []
77
+ if tasks is not None:
78
+ names = [x.strip() for x in tasks.split(",") if x.strip()]
79
+ else:
80
+ for suite in suites.split(","):
81
+ suite = suite.strip()
82
+ if suite not in SUITES:
83
+ raise ValueError(f"Unknown suite {suite!r}; choose from {', '.join(SUITES)}")
84
+ names.extend(SUITES[suite])
85
+ if not names:
86
+ raise ValueError("Select at least one task")
87
+ unknown = set(names) - BENCHMARKS.keys()
88
+ if unknown:
89
+ raise ValueError(f"Unknown tasks: {', '.join(sorted(unknown))}; see --list")
90
+ return [BENCHMARKS[name] for name in dict.fromkeys(names)]
91
+
92
+ # Index only selected official task directories, not thousands of unrelated YAMLs.
93
+ TASK_DIRECTORIES = {
94
+ "hellaswag": "hellaswag", "arc_easy": "arc", "arc_challenge": "arc",
95
+ "piqa": "piqa", "winogrande": "winogrande", "openbookqa": "openbookqa",
96
+ "boolq": "super_glue/boolq", "lambada_openai": "lambada", "mmlu": "mmlu/default",
97
+ "commonsense_qa": "commonsense_qa", "triviaqa": "triviaqa", "social_iqa": "siqa",
98
+ "race": "race", "truthfulqa_mc2": "truthfulqa", "blimp": "blimp",
99
+ "wikitext": "wikitext", "gsm8k": "gsm8k", "hendrycks_math500": "hendrycks_math",
100
+ "bbh": "bbh/cot_fewshot", "humaneval": "humaneval", "humaneval_instruct": "humaneval",
101
+ "mbpp": "mbpp", "mbpp_plus": "mbpp", "ifeval": "ifeval",
102
+ "sciq": "sciq", "mmlu_continuation": "mmlu/continuation",
103
+ }
104
+
105
+ LOCAL_TASKS = {"balanced_copa", "balanced_copa_test"}
evaluation/repro/comparison_runner/continuation.py ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """A common prefix-to-continuation NLL protocol for causal, prefix and UL2 models."""
2
+ import torch
3
+ from .losses import chunked_cross_entropy
4
+
5
+
6
+ @torch.no_grad()
7
+ def continuation_nll(model, kind, tokens, prefix_length, chunk_size=2048):
8
+ if not 1 <= prefix_length < tokens.shape[1]:
9
+ raise ValueError("Require a nonempty prefix and continuation")
10
+ targets = tokens[:, prefix_length:]
11
+ if kind in ("causal", "prefixlm", "zarya"):
12
+ kwargs = {}
13
+ if kind == "prefixlm":
14
+ kwargs["prefix_lengths"] = torch.full((tokens.shape[0],), prefix_length, device=tokens.device)
15
+ hidden = model.model(tokens, use_cache=False, **kwargs).last_hidden_state[:, prefix_length-1:-1]
16
+ elif kind == "seq2seq":
17
+ contract = getattr(model.config, "ul2", None)
18
+ if contract is None:
19
+ raise ValueError("Continuation scoring requires an UL2 checkpoint with its control-token contract")
20
+ mode = tokens.new_full((tokens.shape[0], 1), contract["mode_ids"]["S"])
21
+ span = tokens.new_full((tokens.shape[0], 1), contract["sentinel_ids"][0])
22
+ eos = tokens.new_full((tokens.shape[0], 1), contract["eos_id"])
23
+ source = torch.cat((mode, tokens[:, :prefix_length], span, eos), dim=1)
24
+ bos = tokens.new_full((tokens.shape[0], 1), model.config.decoder_start_token_id)
25
+ decoder = torch.cat((bos, span, targets[:, :-1]), dim=1)
26
+ hidden = model.model(input_ids=source, decoder_input_ids=decoder, use_cache=False).last_hidden_state[:, 1:]
27
+ else:
28
+ raise ValueError("Diffusion masked loss/PLL is not this autoregressive continuation PPL")
29
+ count = targets.numel()
30
+ return chunked_cross_entropy(hidden, model.lm_head, targets, chunk_size) * count, count
evaluation/repro/comparison_runner/losses.py ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Chunked cross-entropy for large-vocab language models.
2
+
3
+ Materializing full logits (batch x seq x vocab) in fp32 dominates memory for
4
+ vocab=32768 models: a single bs=8, seq=2048 logits tensor chain costs ~8 GiB
5
+ before the transformer activations are even counted. Computing the loss in
6
+ sequence chunks keeps peak memory flat and returns exactly the same value as
7
+ the standard mean cross-entropy (sum over non-ignored tokens / token count).
8
+ """
9
+
10
+ import torch
11
+ import torch.nn.functional as F
12
+ from torch.utils.checkpoint import checkpoint
13
+
14
+
15
+ def chunked_cross_entropy(
16
+ hidden: torch.Tensor,
17
+ lm_head: torch.nn.Module,
18
+ labels: torch.Tensor,
19
+ chunk_size: int = 8192,
20
+ token_weights: torch.Tensor | None = None,
21
+ denominator: int | None = None,
22
+ filter_ignored: bool = False,
23
+ ) -> torch.Tensor:
24
+ """Mean cross-entropy computed over chunks of the flattened sequence.
25
+
26
+ Args:
27
+ hidden: (B, T, H) decoder hidden states, already shifted/aligned.
28
+ lm_head: output projection (H -> vocab).
29
+ labels: (B, T) aligned target token ids, -100 = ignore.
30
+ chunk_size: tokens per chunk; peak logits memory is
31
+ chunk_size x vocab x ~6 bytes.
32
+
33
+ Returns:
34
+ Scalar loss, identical to F.cross_entropy(..., ignore_index=-100)
35
+ computed on full logits.
36
+ """
37
+ h = hidden.reshape(-1, hidden.size(-1))
38
+ t = labels.reshape(-1)
39
+ total = torch.zeros((), device=h.device, dtype=torch.float32)
40
+ # token count stays a GPU tensor: no host sync per chunk
41
+ count = denominator if denominator is not None else t.ne(-100).sum().clamp(min=1)
42
+ weights = token_weights.reshape(-1) if token_weights is not None else torch.ones_like(t, dtype=torch.float32)
43
+ if filter_ignored:
44
+ valid = t.ne(-100)
45
+ h, t, weights = h[valid], t[valid], weights[valid]
46
+ # Keep an all-unmasked diffusion draw differentiable with zero loss.
47
+ total = h.float().sum() * 0
48
+ def chunk_loss(states, targets, weight):
49
+ # Checkpoint the projection AND CE: otherwise autograd retains every
50
+ # chunk's vocabulary-sized activations until the eventual backward.
51
+ losses = F.cross_entropy(lm_head(states).float(), targets,
52
+ ignore_index=-100, reduction="none")
53
+ return (losses * weight).sum()
54
+ for i in range(0, h.size(0), chunk_size):
55
+ inputs = (h[i:i + chunk_size], t[i:i + chunk_size], weights[i:i + chunk_size])
56
+ total = total + (checkpoint(chunk_loss, *inputs, use_reentrant=False)
57
+ if torch.is_grad_enabled() else chunk_loss(*inputs))
58
+ return total / count
evaluation/repro/comparison_runner/tasks/balanced_copa.yaml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ task: balanced_copa
2
+ dataset_path: pkavumba/balanced-copa
3
+ dataset_kwargs:
4
+ revision: 813bd03cd6e07d9bd8d7333896ad5d40abb95ea9
5
+ output_type: multiple_choice
6
+ # The mirrored 1000-item evaluation is named train on the Hub.
7
+ # cRia's 58.70% / stderr .0156 suggests n=1000; its exact split is unpublished.
8
+ test_split: train
9
+ num_fewshot: 0
10
+ target_delimiter: " "
11
+ doc_to_text: "{{premise.strip()[:-1]}} {{'because' if question == 'cause' else 'therefore'}}"
12
+ doc_to_choice: "{{[choice1[0].lower() + choice1[1:], choice2[0].lower() + choice2[1:]]}}"
13
+ doc_to_target: "{{label}}"
14
+ metric_list:
15
+ - metric: acc
16
+ aggregation: mean
17
+ higher_is_better: true
18
+ metadata:
19
+ version: 1
20
+ reference_protocol: cRia split and exact prompt unverified; COPA-style prompt
evaluation/repro/comparison_runner/tasks/balanced_copa_test.yaml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ include: balanced_copa.yaml
2
+ task: balanced_copa_test
3
+ test_split: test
4
+ metadata:
5
+ version: 1
6
+ reference_protocol: Original 500-item test split; not the mirrored 1000-item split
evaluation/repro/comparison_runner/token_continuation.py ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Pinned continuation benchmarks whose normalization is by model tokens.
2
+
3
+ The usual harness acc_norm divides by string length. These two benchmarks
4
+ instead tokenize context/answers separately, omit BOS, and rank mean token
5
+ log-probabilities. Reuse each model adapter's likelihood implementation.
6
+ """
7
+
8
+ from collections import Counter, defaultdict
9
+ import hashlib
10
+ import json
11
+ import math
12
+
13
+
14
+ DATASETS = {
15
+ "arithmark3": {
16
+ "repo": "AxiomicLabs/Arithmark-3.0",
17
+ "revision": "6f6e59dd9b7e2c63455f7af7f838f9ecc3d0a746",
18
+ "file": "arithmark-3.jsonl", "split": "train", "count": 1000,
19
+ "context_field": "ctx", "choices_field": "endings",
20
+ "category_field": "activity_label", "context_cap": 1024,
21
+ "context_truncation": "per_choice",
22
+ "primary_metric": "acc_norm",
23
+ },
24
+ "bananamind_base": {
25
+ "repo": "BananaMind/BananaMind-Base-Bench-1.1",
26
+ "revision": "d4aade51312889e8580963e1ce960c6eaef1a450",
27
+ "file": "data/test.jsonl", "split": "test", "count": 350,
28
+ "sha256": "2f563bb46df778ca494fa20f994a8d3045d4c51fbbffeee433764e2813abea21",
29
+ "context_field": "context", "choices_field": "continuations",
30
+ "category_field": "category", "context_cap": None,
31
+ "context_truncation": "shared_longest_choice",
32
+ "primary_metric": "raw_accuracy",
33
+ },
34
+ }
35
+
36
+
37
+ def validate_examples(examples, spec):
38
+ if len(examples) != spec["count"]:
39
+ raise ValueError(f"Expected {spec['count']} examples, got {len(examples)}")
40
+ for index, doc in enumerate(examples):
41
+ context = doc[spec["context_field"]]
42
+ choices = doc[spec["choices_field"]]
43
+ if (not isinstance(context, str) or not context
44
+ or (spec["context_truncation"] == "per_choice" and context[-1].isspace())):
45
+ raise ValueError(f"Invalid context/boundary at example {index}")
46
+ if len(choices) != 4 or any(not isinstance(c, str) or not c or not c[0].isspace() for c in choices):
47
+ raise ValueError(f"Expected four whitespace-prefixed continuations at example {index}")
48
+ if str(doc["label"]) not in ("0", "1", "2", "3"):
49
+ raise ValueError(f"Invalid label at example {index}")
50
+ if "sha256" in spec and (doc.get("version") != "1.1" or doc.get("score_mode") != "mean_logprob"):
51
+ raise ValueError(f"Unexpected BananaMind version/scoring at example {index}")
52
+ if "sha256" in spec:
53
+ categories = Counter(doc["category"] for doc in examples)
54
+ if len(categories) != 7 or set(categories.values()) != {50}:
55
+ raise ValueError("Expected seven BananaMind categories of 50 items")
56
+ if Counter(doc["difficulty"] for doc in examples) != {"easy": 117, "medium": 117, "hard": 116}:
57
+ raise ValueError("Unexpected BananaMind difficulty balance")
58
+ if Counter(int(doc["label"]) for doc in examples) != {0: 88, 1: 88, 2: 87, 3: 87}:
59
+ raise ValueError("Unexpected BananaMind answer balance")
60
+
61
+
62
+ def load_examples(task):
63
+ from huggingface_hub import hf_hub_download
64
+ from huggingface_hub.errors import GatedRepoError
65
+ from pathlib import Path
66
+
67
+ spec = DATASETS[task]
68
+ try:
69
+ path = hf_hub_download(spec["repo"], spec["file"], repo_type="dataset", revision=spec["revision"])
70
+ except GatedRepoError as exc:
71
+ raise RuntimeError(
72
+ f"Accept the evaluation-only terms at https://huggingface.co/datasets/{spec['repo']} "
73
+ "and authenticate this evaluation environment with hf auth login, then use a new output directory."
74
+ ) from exc
75
+ data = Path(path).read_bytes()
76
+ digest = hashlib.sha256(data).hexdigest()
77
+ if spec.get("sha256", digest) != digest:
78
+ raise ValueError(f"{task} dataset checksum mismatch")
79
+ examples = [json.loads(line) for line in data.decode("utf-8").splitlines() if line.strip()]
80
+ validate_examples(examples, spec)
81
+ return examples, digest
82
+
83
+
84
+ def accuracy_metrics(hits, name):
85
+ n = len(hits)
86
+ mean = sum(hits) / n
87
+ return {f"{name},none": mean,
88
+ f"{name}_stderr,none": math.sqrt(mean * (1 - mean) / (n - 1)) if n > 1 else "N/A"}
89
+
90
+
91
+ def evaluate(model, task, args):
92
+ spec = DATASETS[task]
93
+ examples, digest = load_examples(task)
94
+ total = len(examples)
95
+ examples = examples[:args.limit] if args.limit is not None else examples
96
+ cap = min(model.max_length, spec["context_cap"] or model.max_length)
97
+ if cap < 2:
98
+ raise ValueError("Continuation evaluation requires context length >= 2")
99
+ raw_hits, mean_hits, samples = [], [], []
100
+ categories = defaultdict(list)
101
+ truncated = 0
102
+ # Bound requests and logits through the existing adapter batch-size setting.
103
+ for start in range(0, len(examples), args.batch_size):
104
+ batch = examples[start:start + args.batch_size]
105
+ requests, lengths, row_truncations = [], [], []
106
+ for doc in batch:
107
+ context = model.tok_encode(doc[spec["context_field"]], add_special_tokens=False)
108
+ if not context:
109
+ if task != "bananamind_base":
110
+ raise ValueError("Empty tokenized context; implicit BOS would change the protocol")
111
+ # Match the official runner's fallback for tokenizers that erase
112
+ # a nonempty context. This is not unconditional BOS insertion.
113
+ fallback = next((getattr(model.tokenizer, name, None)
114
+ for name in ("eos_token_id", "bos_token_id", "pad_token_id")
115
+ if getattr(model.tokenizer, name, None) is not None), 0)
116
+ context = [int(fallback)]
117
+ answers = [model.tok_encode(choice, add_special_tokens=False)
118
+ for choice in doc[spec["choices_field"]]]
119
+ if any(not answer or len(answer) >= cap for answer in answers):
120
+ raise ValueError("Continuation must leave at least one context token; cannot truncate answers")
121
+ shared_available = cap - max(map(len, answers))
122
+ was_truncated = False
123
+ for answer in answers:
124
+ available = (shared_available if spec["context_truncation"] == "shared_longest_choice"
125
+ else cap - len(answer))
126
+ was_truncated |= len(context) > available
127
+ requests.append((None, context[-available:], answer))
128
+ lengths.append(len(answer))
129
+ row_truncations.append(was_truncated)
130
+ scores = model._loglikelihood_tokens(requests, disable_tqdm=True)
131
+ for i, doc in enumerate(batch):
132
+ raw = [float(score[0]) for score in scores[4 * i:4 * i + 4]]
133
+ counts = lengths[4 * i:4 * i + 4]
134
+ if len(raw) != 4 or not all(math.isfinite(x) for x in raw):
135
+ raise ValueError("Expected four finite continuation likelihoods")
136
+ normalized = [score / count for score, count in zip(raw, counts)]
137
+ label = int(doc["label"])
138
+ raw_prediction = max(range(4), key=raw.__getitem__)
139
+ prediction = max(range(4), key=normalized.__getitem__)
140
+ raw_hits.append(int(raw_prediction == label))
141
+ mean_hits.append(int(prediction == label))
142
+ category = doc[spec["category_field"]]
143
+ categories[category].append(mean_hits[-1])
144
+ truncated += row_truncations[i]
145
+ if args.log_samples:
146
+ samples.append({"doc_id": start + i, "label": label, "category": category,
147
+ "raw_prediction": raw_prediction, "prediction": prediction,
148
+ "loglikelihoods": raw, "token_counts": counts,
149
+ "mean_loglikelihoods": normalized, "context_truncated": row_truncations[i]})
150
+ metrics = accuracy_metrics(mean_hits, spec["primary_metric"])
151
+ if task == "arithmark3":
152
+ metrics.update(accuracy_metrics(raw_hits, "acc"))
153
+ result = {
154
+ "results": {task: metrics},
155
+ "n-samples": {task: {"original": total, "effective": len(examples)}},
156
+ "configs": {task: {**spec, "dataset_sha256": digest, "num_fewshot": 0,
157
+ "effective_max_length": cap, "add_bos": False,
158
+ "tokenization": "context and continuation separately; add_special_tokens=False",
159
+ "normalization": "continuation token count; not character count",
160
+ "context_truncated_examples": truncated,
161
+ "runner": "tiny_llm token_continuation v2; not an official leaderboard submission"}},
162
+ "categories": {name: {"count": len(hits), **accuracy_metrics(hits, spec["primary_metric"])}
163
+ for name, hits in sorted(categories.items())},
164
+ }
165
+ if args.log_samples:
166
+ result["samples"] = {task: samples}
167
+ return result
evaluation/repro/continuation.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Standalone fixed-prefix WikiText evaluation, separate from the sixteen-task mean."""
2
+ import argparse
3
+ import hashlib
4
+ import json
5
+ from pathlib import Path
6
+ import numpy as np
7
+ import torch
8
+ import torch.nn.functional as F
9
+ from datasets import load_dataset
10
+ from transformers import AutoModelForCausalLM, AutoModelForMaskedLM, AutoModelForSeq2SeqLM, AutoTokenizer
11
+ from comparison_runner.continuation import continuation_nll
12
+
13
+
14
+ @torch.inference_mode()
15
+ def main():
16
+ parser = argparse.ArgumentParser(description=__doc__)
17
+ parser.add_argument("--output", required=True, type=Path)
18
+ parser.add_argument("--device", default="cuda:0")
19
+ parser.add_argument("--dtype", choices=["bfloat16", "float32"], default="bfloat16")
20
+ parser.add_argument("--limit-blocks", type=int, help="Smoke only, not a full benchmark")
21
+ args = parser.parse_args()
22
+ assert not args.output.exists()
23
+ assert args.limit_blocks is None or args.limit_blocks > 0
24
+ root = Path(__file__).resolve().parents[2]
25
+ expected = json.loads((root / "evaluation/results.json").read_text())
26
+ with (root / "model.safetensors").open("rb") as stream:
27
+ assert hashlib.file_digest(stream, "sha256").hexdigest() == expected["checkpoint_sha256"]["model.safetensors"]
28
+ config = json.loads((root / "config.json").read_text())
29
+ kind = "diffusion" if config["model_type"] == "diffusion_lm" else "seq2seq" if config.get("ul2") else "causal"
30
+ cls = AutoModelForMaskedLM if kind == "diffusion" else AutoModelForSeq2SeqLM if kind == "seq2seq" else AutoModelForCausalLM
31
+ torch.set_num_threads(4)
32
+ torch.backends.cuda.matmul.allow_tf32 = False
33
+ torch.backends.cudnn.allow_tf32 = False
34
+ tokenizer = AutoTokenizer.from_pretrained(root, trust_remote_code=True)
35
+ tokenizer.model_max_length = 10**9
36
+ data = load_dataset("Salesforce/wikitext", "wikitext-2-raw-v1", split="test")
37
+ text = "\n".join(data["text"])
38
+ ids = tokenizer.encode(text, add_special_tokens=False)
39
+ blocks = torch.tensor(ids[:len(ids)//1024*1024]).reshape(-1, 1024)
40
+ if args.limit_blocks is not None:
41
+ blocks = blocks[:args.limit_blocks]
42
+ # Historical diffusion PLL cast FP32 buffers after loading; preserve this.
43
+ model = cls.from_pretrained(root, trust_remote_code=True,
44
+ dtype=torch.float32 if kind == "diffusion" else getattr(torch, args.dtype)).to(args.device).eval()
45
+ if kind == "diffusion":
46
+ model.to(getattr(torch, args.dtype))
47
+ values = []
48
+ for index, block in enumerate(blocks):
49
+ tokens = block[None].to(args.device)
50
+ if kind == "diffusion":
51
+ total = 0.
52
+ for start in range(512, 1024, 16):
53
+ positions = torch.arange(start, start+16, device=args.device)
54
+ rows = torch.arange(16, device=args.device)
55
+ masked = tokens.expand(16, -1).clone()
56
+ masked[rows, positions] = model.config.mask_token_id
57
+ hidden = model.model(masked, timesteps=torch.full((16,), 1/1024, device=args.device))
58
+ logits = model.lm_head(hidden[rows, positions]).float()
59
+ total += F.cross_entropy(logits, tokens[0, positions], reduction="sum").item()
60
+ value = total / 512
61
+ else:
62
+ nll, count = continuation_nll(model, kind, tokens, 512, 512)
63
+ value = nll.item() / count
64
+ values.append(value)
65
+ if index % 50 == 0:
66
+ print(index, "/", len(blocks), flush=True)
67
+ array = np.asarray(values)
68
+ rng = np.random.default_rng(2026)
69
+ low, high = np.quantile(array[rng.integers(len(array), size=(10000, len(array)))].mean(1), [.025, .975])
70
+ result = dict(nll=float(array.mean()), nll_ci95=[float(low), float(high)],
71
+ ppl=float(np.exp(array.mean())), ppl_ci95=[float(np.exp(low)), float(np.exp(high))],
72
+ block_nll=values, blocks=len(blocks), scored_tokens=len(blocks)*512,
73
+ dropped_tail_tokens=len(ids)%1024, corpus_sha256=hashlib.sha256(text.encode()).hexdigest(),
74
+ checkpoint_sha256=expected["checkpoint_sha256"], kind=kind, dtype=args.dtype, device=args.device,
75
+ smoke_only=args.limit_blocks is not None, bootstrap_samples=10000, bootstrap_seed=2026,
76
+ protocol="1024-token nonoverlapping blocks; 512-token prefix and 512-token suffix. "
77
+ "Diffusion: single-mask continuation PLL, not autoregressive likelihood. "
78
+ "Other models: conditional continuation NLL. Not rolling AR or word perplexity.")
79
+ args.output.write_text(json.dumps(result, indent=2) + "\n")
80
+
81
+
82
+ if __name__ == "__main__":
83
+ main()
evaluation/repro/requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ torch==2.11.0
2
+ transformers==5.17.0
3
+ datasets==5.0.1
4
+ accelerate==1.15.0
5
+ lm_eval==0.4.12
6
+ tensorboard>=2.20,<3
evaluation/repro/run.py ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Reproduce the full sixteen-task comparison suite using the published model code."""
2
+ import argparse
3
+ import hashlib
4
+ import importlib.metadata
5
+ import json
6
+ from pathlib import Path
7
+
8
+ import torch
9
+ from transformers import AutoModelForCausalLM, AutoModelForMaskedLM, AutoModelForSeq2SeqLM, AutoTokenizer
10
+ from lm_eval import evaluator, tasks as harness_tasks
11
+ from lm_eval.models.huggingface import HFLM
12
+
13
+ from comparison_runner.adapters import DiffusionHFLM, PrefixHFLM, UL2HFLM
14
+ from comparison_runner.catalog import BENCHMARKS, HARNESS_VERSION, LOCAL_TASKS, TASK_DIRECTORIES
15
+ from comparison_runner.token_continuation import evaluate
16
+
17
+ TASKS = "hellaswag,arc_easy,arc_challenge,piqa,winogrande,openbookqa,boolq,lambada_openai,arithmark3,balanced_copa,blimp,commonsense_qa,mmlu_continuation,sciq,truthfulqa_mc2,bananamind_base"
18
+
19
+
20
+ def main():
21
+ parser = argparse.ArgumentParser(description=__doc__)
22
+ parser.add_argument("--device", default="cpu")
23
+ parser.add_argument("--dtype", default="float32", choices=["float32", "bfloat16"])
24
+ parser.add_argument("--batch-size", type=int, default=1)
25
+ parser.add_argument("--tasks", default=TASKS)
26
+ parser.add_argument("--limit", type=int, help="Smoke only; not a benchmark result")
27
+ parser.add_argument("--output", required=True, type=Path)
28
+ args = parser.parse_args()
29
+ args.log_samples = False
30
+ assert args.batch_size > 0 and (args.limit is None or args.limit > 0)
31
+ assert importlib.metadata.version("lm_eval") == HARNESS_VERSION
32
+ root = Path(__file__).resolve().parent
33
+ model_root = root.parents[1]
34
+ expected = json.loads((root.parent / "results.json").read_text())
35
+ with (model_root / "model.safetensors").open("rb") as stream:
36
+ assert hashlib.file_digest(stream, "sha256").hexdigest() == expected["checkpoint_sha256"]["model.safetensors"]
37
+ torch.set_num_threads(4)
38
+ torch.backends.cuda.matmul.allow_tf32 = False
39
+ torch.backends.cudnn.allow_tf32 = False
40
+ torch.manual_seed(1234)
41
+ config = json.loads((model_root / "config.json").read_text())
42
+ diffusion = config["model_type"] == "diffusion_lm"
43
+ seq2seq = bool(config.get("ul2"))
44
+ cls = AutoModelForMaskedLM if diffusion else AutoModelForSeq2SeqLM if seq2seq else AutoModelForCausalLM
45
+ adapter_cls = (DiffusionHFLM if diffusion else UL2HFLM if seq2seq else
46
+ PrefixHFLM if config["model_type"] == "prefix_lm" else HFLM)
47
+ if diffusion and args.batch_size != 1:
48
+ parser.error("Experimental diffusion scoring requires --batch-size 1")
49
+ model = cls.from_pretrained(model_root, trust_remote_code=True, dtype=getattr(torch, args.dtype)).to(args.device).eval()
50
+ tokenizer = AutoTokenizer.from_pretrained(model_root, trust_remote_code=True)
51
+ adapter = adapter_cls(pretrained=model, tokenizer=tokenizer, backend="seq2seq" if seq2seq else "causal",
52
+ device=args.device, dtype=args.dtype, batch_size=args.batch_size, max_length=2048)
53
+ names = args.tasks.split(",")
54
+ assert names and set(names) <= set(TASKS.split(","))
55
+ harness_root = Path(harness_tasks.__file__).parent
56
+ directories = {harness_root / TASK_DIRECTORIES[t] for t in names if t in TASK_DIRECTORIES}
57
+ if set(names) & LOCAL_TASKS:
58
+ directories.add(root / "comparison_runner/tasks")
59
+ manager = harness_tasks.TaskManager(include_defaults=False, include_path=sorted(directories))
60
+ args.output.mkdir(parents=True, exist_ok=False)
61
+ metadata = dict(model_root=str(model_root), weights_sha256=expected["checkpoint_sha256"]["model.safetensors"],
62
+ dtype=args.dtype, device=args.device, batch_size=args.batch_size, max_length=2048,
63
+ smoke_only=args.limit is not None, tasks=names, harness=HARNESS_VERSION,
64
+ protocol=expected["protocol"], seed=1234, tf32=False)
65
+ (args.output / "manifest.json").write_text(json.dumps(metadata, indent=2))
66
+ for task in names:
67
+ if BENCHMARKS[task].engine == "token_continuation":
68
+ result = evaluate(adapter, task, args)
69
+ else:
70
+ result = evaluator.simple_evaluate(model=adapter, tasks=[task], num_fewshot=0,
71
+ limit=args.limit, bootstrap_iters=1000, log_samples=False, task_manager=manager,
72
+ apply_chat_template=False, gen_kwargs={"do_sample": False},
73
+ random_seed=1234, numpy_random_seed=1234, torch_random_seed=1234, fewshot_random_seed=1234)
74
+ (args.output / (task + ".json")).write_text(json.dumps(result, indent=2,
75
+ default=lambda value: value.item() if hasattr(value, "item") else str(value)))
76
+ (args.output / "status.json").write_text(json.dumps(dict(status="complete", smoke_only=args.limit is not None)))
77
+
78
+
79
+ if __name__ == "__main__":
80
+ main()
evaluation/results.json ADDED
@@ -0,0 +1,1480 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "label": "Q-MoD",
3
+ "repo": "d0rj/q-mod-51M-base",
4
+ "revision": null,
5
+ "kind": "causal",
6
+ "checkpoint_sha256": {
7
+ "config.json": "194e3135cfd3dc01fb1e01c1c2a801e19212af8a532c465448d2c40af1f64034",
8
+ "generation_config.json": "80da72cc13262a67c14c8b96f4f049f6e7890a027d808a02b8f0b0d48704c245",
9
+ "model.safetensors": "e5be4b27775d846ab2e65293a83f647d89ba2e0a606c00645fa892b21f6d5cd3"
10
+ },
11
+ "parameters": 50919168,
12
+ "tasks": {
13
+ "hellaswag": {
14
+ "label": "HellaSwag",
15
+ "dataset": "Rowan/hellaswag",
16
+ "config": "default",
17
+ "split": "validation",
18
+ "samples": 10042,
19
+ "shots": 0,
20
+ "primary": "acc_norm",
21
+ "metrics": {
22
+ "acc": {
23
+ "value": 0.27633937462656843,
24
+ "stderr": 0.004462727543055927,
25
+ "ci95": [
26
+ 0.2676798053353836,
27
+ 0.28516999640463647
28
+ ],
29
+ "ci_method": "Wilson 95%; item independence approximation"
30
+ },
31
+ "acc_norm": {
32
+ "value": 0.2874925313682533,
33
+ "stderr": 0.004516681953878919,
34
+ "ci95": [
35
+ 0.27872301915216174,
36
+ 0.29642456629450026
37
+ ],
38
+ "ci_method": "Wilson 95%; item independence approximation"
39
+ }
40
+ },
41
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/hellaswag.json",
42
+ "result_sha256": "70c7f8f0f310bad716da22939e4ea8651e35d8262cf7a0688da7c0ee93cba0ef",
43
+ "categories": {}
44
+ },
45
+ "arc_easy": {
46
+ "label": "ARC-Easy",
47
+ "dataset": "allenai/ai2_arc",
48
+ "config": "ARC-Easy",
49
+ "split": "test",
50
+ "samples": 2376,
51
+ "shots": 0,
52
+ "primary": "acc_norm",
53
+ "metrics": {
54
+ "acc": {
55
+ "value": 0.4701178451178451,
56
+ "stderr": 0.010241444322886225,
57
+ "ci95": [
58
+ 0.45011358796458134,
59
+ 0.49021857177921657
60
+ ],
61
+ "ci_method": "Wilson 95%; item independence approximation"
62
+ },
63
+ "acc_norm": {
64
+ "value": 0.41919191919191917,
65
+ "stderr": 0.010124905282491126,
66
+ "ci95": [
67
+ 0.3994976736933545,
68
+ 0.43914703998001464
69
+ ],
70
+ "ci_method": "Wilson 95%; item independence approximation"
71
+ }
72
+ },
73
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/arc_easy.json",
74
+ "result_sha256": "ebe51440ccfc39c2b605ecb210d1aa3d7152cc2941906b72b35594a2afb56b34",
75
+ "categories": {}
76
+ },
77
+ "arc_challenge": {
78
+ "label": "ARC-Challenge",
79
+ "dataset": "allenai/ai2_arc",
80
+ "config": "ARC-Challenge",
81
+ "split": "test",
82
+ "samples": 1172,
83
+ "shots": 0,
84
+ "primary": "acc_norm",
85
+ "metrics": {
86
+ "acc": {
87
+ "value": 0.18344709897610922,
88
+ "stderr": 0.011310170179554583,
89
+ "ci95": [
90
+ 0.16233527070001194,
91
+ 0.20662727570978537
92
+ ],
93
+ "ci_method": "Wilson 95%; item independence approximation"
94
+ },
95
+ "acc_norm": {
96
+ "value": 0.23122866894197952,
97
+ "stderr": 0.01232085883477234,
98
+ "ci95": [
99
+ 0.2079920763450836,
100
+ 0.2562214064556877
101
+ ],
102
+ "ci_method": "Wilson 95%; item independence approximation"
103
+ }
104
+ },
105
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/arc_challenge.json",
106
+ "result_sha256": "f5efc3025bb25c50c5017030cb36f77de89afaf762d8990dc82304ef99454d58",
107
+ "categories": {}
108
+ },
109
+ "piqa": {
110
+ "label": "PIQA",
111
+ "dataset": "baber/piqa",
112
+ "config": "default",
113
+ "split": "validation",
114
+ "samples": 1838,
115
+ "shots": 0,
116
+ "primary": "acc_norm",
117
+ "metrics": {
118
+ "acc": {
119
+ "value": 0.5924918389553863,
120
+ "stderr": 0.01146449062565553,
121
+ "ci95": [
122
+ 0.5698576660793783,
123
+ 0.61474019839572
124
+ ],
125
+ "ci_method": "Wilson 95%; item independence approximation"
126
+ },
127
+ "acc_norm": {
128
+ "value": 0.5875952121871599,
129
+ "stderr": 0.011485407152743092,
130
+ "ci95": [
131
+ 0.5649303971157125,
132
+ 0.6098946392401159
133
+ ],
134
+ "ci_method": "Wilson 95%; item independence approximation"
135
+ }
136
+ },
137
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/piqa.json",
138
+ "result_sha256": "c2d4b2727900015aa72ab771afd02e18a7086d31e744e85d785881c5ac132b33",
139
+ "categories": {}
140
+ },
141
+ "winogrande": {
142
+ "label": "WinoGrande",
143
+ "dataset": "allenai/winogrande",
144
+ "config": "winogrande_xl",
145
+ "split": "validation",
146
+ "samples": 1267,
147
+ "shots": 0,
148
+ "primary": "acc",
149
+ "metrics": {
150
+ "acc": {
151
+ "value": 0.5138121546961326,
152
+ "stderr": 0.014047122916440271,
153
+ "ci95": [
154
+ 0.4862910104211901,
155
+ 0.5412497970942327
156
+ ],
157
+ "ci_method": "Wilson 95%; item independence approximation"
158
+ }
159
+ },
160
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/winogrande.json",
161
+ "result_sha256": "00c93cb02ff2d9638d4392d90a73a968694febf6d246b53b6b5195f17bf96bf3",
162
+ "categories": {}
163
+ },
164
+ "openbookqa": {
165
+ "label": "OpenBookQA",
166
+ "dataset": "allenai/openbookqa",
167
+ "config": "main",
168
+ "split": "test",
169
+ "samples": 500,
170
+ "shots": 0,
171
+ "primary": "acc_norm",
172
+ "metrics": {
173
+ "acc": {
174
+ "value": 0.168,
175
+ "stderr": 0.01673655354154187,
176
+ "ci95": [
177
+ 0.13778823297684417,
178
+ 0.20327432908962656
179
+ ],
180
+ "ci_method": "Wilson 95%; item independence approximation"
181
+ },
182
+ "acc_norm": {
183
+ "value": 0.306,
184
+ "stderr": 0.020629569998345414,
185
+ "ci95": [
186
+ 0.26721346373113636,
187
+ 0.3477447803679459
188
+ ],
189
+ "ci_method": "Wilson 95%; item independence approximation"
190
+ }
191
+ },
192
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/openbookqa.json",
193
+ "result_sha256": "398ce770d102c1d5b33ac91c684b3090c2f5d935253b7c1ef54b01e4a05c08e4",
194
+ "categories": {}
195
+ },
196
+ "boolq": {
197
+ "label": "BoolQ",
198
+ "dataset": "aps/super_glue",
199
+ "config": "boolq",
200
+ "split": "validation",
201
+ "samples": 3270,
202
+ "shots": 0,
203
+ "primary": "acc",
204
+ "metrics": {
205
+ "acc": {
206
+ "value": 0.5577981651376147,
207
+ "stderr": 0.008686430526114761,
208
+ "ci95": [
209
+ 0.5407177130610681,
210
+ 0.5747429788369947
211
+ ],
212
+ "ci_method": "Wilson 95%; item independence approximation"
213
+ }
214
+ },
215
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/boolq.json",
216
+ "result_sha256": "9a3b1d284692559f2af9eb3bc1bd099e6ed785ad49c0abcaca8527c1aab4f8ff",
217
+ "categories": {}
218
+ },
219
+ "lambada_openai": {
220
+ "label": "LAMBADA OpenAI",
221
+ "dataset": "EleutherAI/lambada_openai",
222
+ "config": "default",
223
+ "split": "test",
224
+ "samples": 5153,
225
+ "shots": 0,
226
+ "primary": "acc",
227
+ "metrics": {
228
+ "acc": {
229
+ "value": 0.16689307199689501,
230
+ "stderr": 0.005194952730633079,
231
+ "ci95": [
232
+ 0.1569610474392711,
233
+ 0.17732137574286708
234
+ ],
235
+ "ci_method": "Wilson 95%; item independence approximation"
236
+ },
237
+ "perplexity": {
238
+ "value": 325.20143973341675,
239
+ "stderr": 15.346256502549156
240
+ }
241
+ },
242
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/lambada_openai.json",
243
+ "result_sha256": "f73b22ca335b65a93dc0c7c84fb6d624d96bab4ac8033ee3d09ff64ae1be1627",
244
+ "categories": {}
245
+ },
246
+ "arithmark3": {
247
+ "label": "ArithMark-3",
248
+ "dataset": "AxiomicLabs/Arithmark-3.0",
249
+ "config": "default",
250
+ "split": "train",
251
+ "samples": 1000,
252
+ "shots": 0,
253
+ "primary": "acc_norm",
254
+ "metrics": {
255
+ "acc": {
256
+ "value": 0.338,
257
+ "stderr": 0.014965960710224385,
258
+ "ci95": [
259
+ 0.3093514451469222,
260
+ 0.36788842460239773
261
+ ],
262
+ "ci_method": "Wilson 95%; item independence approximation"
263
+ },
264
+ "acc_norm": {
265
+ "value": 0.341,
266
+ "stderr": 0.01499813134840284,
267
+ "ci95": [
268
+ 0.31227731829126676,
269
+ 0.37093959090713985
270
+ ],
271
+ "ci_method": "Wilson 95%; item independence approximation"
272
+ }
273
+ },
274
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/arithmark3.json",
275
+ "result_sha256": "02c6c465acd3c3b7472e5f33890f841bac021be2608c7a50fb4a8007e09fefd1",
276
+ "categories": {
277
+ "elementary_school_math_continuation::addition::grades_1_2::easy": {
278
+ "count": 128,
279
+ "acc_norm,none": 0.234375,
280
+ "acc_norm_stderr,none": 0.037589092002846054
281
+ },
282
+ "elementary_school_math_continuation::comparison::grades_2_3::medium": {
283
+ "count": 44,
284
+ "acc_norm,none": 0.25,
285
+ "acc_norm_stderr,none": 0.06603381797442179
286
+ },
287
+ "elementary_school_math_continuation::comparison_difference::grades_2_3::medium": {
288
+ "count": 48,
289
+ "acc_norm,none": 0.3125,
290
+ "acc_norm_stderr,none": 0.06761023307918171
291
+ },
292
+ "elementary_school_math_continuation::data::grades_2_3::easy": {
293
+ "count": 43,
294
+ "acc_norm,none": 0.13953488372093023,
295
+ "acc_norm_stderr,none": 0.05346670079545209
296
+ },
297
+ "elementary_school_math_continuation::division::grades_3_4::medium": {
298
+ "count": 54,
299
+ "acc_norm,none": 0.3888888888888889,
300
+ "acc_norm_stderr,none": 0.06696300316010247
301
+ },
302
+ "elementary_school_math_continuation::fractions_counting::grades_3_4::medium": {
303
+ "count": 50,
304
+ "acc_norm,none": 0.22,
305
+ "acc_norm_stderr,none": 0.05917804336345137
306
+ },
307
+ "elementary_school_math_continuation::geometry_area::grades_4_5::medium": {
308
+ "count": 52,
309
+ "acc_norm,none": 0.5,
310
+ "acc_norm_stderr,none": 0.07001400420140048
311
+ },
312
+ "elementary_school_math_continuation::geometry_perimeter::grades_4_5::medium": {
313
+ "count": 45,
314
+ "acc_norm,none": 0.4888888888888889,
315
+ "acc_norm_stderr,none": 0.0753592220347252
316
+ },
317
+ "elementary_school_math_continuation::measurement::grades_2_3::easy": {
318
+ "count": 76,
319
+ "acc_norm,none": 0.35526315789473684,
320
+ "acc_norm_stderr,none": 0.05526315789473684
321
+ },
322
+ "elementary_school_math_continuation::money::grades_3_4::medium": {
323
+ "count": 64,
324
+ "acc_norm,none": 0.3125,
325
+ "acc_norm_stderr,none": 0.058397074018894594
326
+ },
327
+ "elementary_school_math_continuation::multiplication::grades_3_4::medium": {
328
+ "count": 74,
329
+ "acc_norm,none": 0.5675675675675675,
330
+ "acc_norm_stderr,none": 0.057983774751431
331
+ },
332
+ "elementary_school_math_continuation::patterns::grades_3_4::medium": {
333
+ "count": 53,
334
+ "acc_norm,none": 0.2641509433962264,
335
+ "acc_norm_stderr,none": 0.06113906319252699
336
+ },
337
+ "elementary_school_math_continuation::subtraction::grades_1_2::easy": {
338
+ "count": 117,
339
+ "acc_norm,none": 0.21367521367521367,
340
+ "acc_norm_stderr,none": 0.038058271647936806
341
+ },
342
+ "elementary_school_math_continuation::time::grades_2_3::easy": {
343
+ "count": 55,
344
+ "acc_norm,none": 0.9090909090909091,
345
+ "acc_norm_stderr,none": 0.03912104390108503
346
+ },
347
+ "elementary_school_math_continuation::two_step_add_subtract::grades_2_3::medium": {
348
+ "count": 46,
349
+ "acc_norm,none": 0.21739130434782608,
350
+ "acc_norm_stderr,none": 0.06148754619013457
351
+ },
352
+ "elementary_school_math_continuation::two_step_addition::grades_2_3::medium": {
353
+ "count": 19,
354
+ "acc_norm,none": 0.2631578947368421,
355
+ "acc_norm_stderr,none": 0.10379087338771256
356
+ },
357
+ "elementary_school_math_continuation::two_step_subtraction::grades_2_3::medium": {
358
+ "count": 32,
359
+ "acc_norm,none": 0.1875,
360
+ "acc_norm_stderr,none": 0.07010217197868432
361
+ }
362
+ }
363
+ },
364
+ "balanced_copa": {
365
+ "label": "Balanced COPA",
366
+ "dataset": "pkavumba/balanced-copa",
367
+ "config": "default",
368
+ "split": "train",
369
+ "samples": 1000,
370
+ "shots": 0,
371
+ "primary": "acc",
372
+ "metrics": {
373
+ "acc": {
374
+ "value": 0.533,
375
+ "stderr": 0.015784807891138876,
376
+ "ci95": [
377
+ 0.5020104989134991,
378
+ 0.5637369350264544
379
+ ],
380
+ "ci_method": "Wilson 95%; item independence approximation"
381
+ }
382
+ },
383
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/balanced_copa.json",
384
+ "result_sha256": "9abed3267bb970d308a99687f73347bf6093126c89fdf40f35f8e665a6f47c7c",
385
+ "categories": {}
386
+ },
387
+ "blimp": {
388
+ "label": "BLiMP",
389
+ "dataset": "nyu-mll/blimp",
390
+ "config": "67 minimal-pair subsets",
391
+ "split": "train",
392
+ "samples": 67000,
393
+ "shots": 0,
394
+ "primary": "acc",
395
+ "metrics": {
396
+ "acc": {
397
+ "value": 0.7317910447761194,
398
+ "stderr": 0.001517376416839114
399
+ }
400
+ },
401
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/blimp.json",
402
+ "result_sha256": "75189517422b1f0dc53fb4dbcf810b32ac9f40dfe64dab96df6e524ffe9318da",
403
+ "categories": {}
404
+ },
405
+ "commonsense_qa": {
406
+ "label": "CommonsenseQA",
407
+ "dataset": "tau/commonsense_qa",
408
+ "config": "default",
409
+ "split": "validation",
410
+ "samples": 1221,
411
+ "shots": 0,
412
+ "primary": "acc",
413
+ "metrics": {
414
+ "acc": {
415
+ "value": 0.19492219492219492,
416
+ "stderr": 0.011341478090883516,
417
+ "ci95": [
418
+ 0.17367347122724505,
419
+ 0.21808454395514162
420
+ ],
421
+ "ci_method": "Wilson 95%; item independence approximation"
422
+ }
423
+ },
424
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/commonsense_qa.json",
425
+ "result_sha256": "5968567f6503d5ba2924a34c4e7bd017c341dd7b98de53bddfbc80e21c82720b",
426
+ "categories": {}
427
+ },
428
+ "mmlu_continuation": {
429
+ "label": "MMLU continuation",
430
+ "dataset": "cais/mmlu",
431
+ "config": "57 subjects",
432
+ "split": "test",
433
+ "samples": 14042,
434
+ "shots": 0,
435
+ "primary": "acc",
436
+ "metrics": {
437
+ "acc": {
438
+ "value": 0.2521720552627831,
439
+ "stderr": 0.0036528205915989775
440
+ }
441
+ },
442
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/mmlu_continuation.json",
443
+ "result_sha256": "b9cbea26d9c7326596e7220d5fc4b75323207a2a25eee724155d8aca7e78b249",
444
+ "categories": {}
445
+ },
446
+ "sciq": {
447
+ "label": "SciQ (with support)",
448
+ "dataset": "allenai/sciq",
449
+ "config": "default",
450
+ "split": "test",
451
+ "samples": 1000,
452
+ "shots": 0,
453
+ "primary": "acc_norm",
454
+ "metrics": {
455
+ "acc": {
456
+ "value": 0.724,
457
+ "stderr": 0.01414298497574059,
458
+ "ci95": [
459
+ 0.6954767082717307,
460
+ 0.7508089039267406
461
+ ],
462
+ "ci_method": "Wilson 95%; item independence approximation"
463
+ },
464
+ "acc_norm": {
465
+ "value": 0.612,
466
+ "stderr": 0.015417317979911216,
467
+ "ci95": [
468
+ 0.5814239245764211,
469
+ 0.6417188815228144
470
+ ],
471
+ "ci_method": "Wilson 95%; item independence approximation"
472
+ }
473
+ },
474
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/sciq.json",
475
+ "result_sha256": "7cb4cd157ad4871d5063c07feedaa3976f63fb450e5e2f2cc856860b60cd9665",
476
+ "categories": {}
477
+ },
478
+ "truthfulqa_mc2": {
479
+ "label": "TruthfulQA MC2",
480
+ "dataset": "truthfulqa/truthful_qa",
481
+ "config": "multiple_choice",
482
+ "split": "validation",
483
+ "samples": 817,
484
+ "shots": 0,
485
+ "primary": "acc",
486
+ "metrics": {
487
+ "acc": {
488
+ "value": 0.4417644031264386,
489
+ "stderr": 0.01519901667714673
490
+ }
491
+ },
492
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/truthfulqa_mc2.json",
493
+ "result_sha256": "0c85b79db33e94c60bcf454318ecfdd19641326c1bd57d146833c1857429f5e4",
494
+ "categories": {}
495
+ },
496
+ "bananamind_base": {
497
+ "label": "BananaMind Base 1.1",
498
+ "dataset": "BananaMind/BananaMind-Base-Bench-1.1",
499
+ "config": "default",
500
+ "split": "test",
501
+ "samples": 350,
502
+ "shots": 0,
503
+ "primary": "raw_accuracy",
504
+ "metrics": {
505
+ "raw_accuracy": {
506
+ "value": 0.45714285714285713,
507
+ "stderr": 0.02666588697376804,
508
+ "ci95": [
509
+ 0.40570065529637145,
510
+ 0.5095156110507492
511
+ ],
512
+ "ci_method": "Wilson 95%; item independence approximation"
513
+ }
514
+ },
515
+ "result_path": "runs/eval/pending-release-20261001/q-mod/attempt-001/bananamind_base.json",
516
+ "result_sha256": "7d1893178aee2b2c2f9a13b345c405a5b1cb0efed70f574d31e32d449904fb43",
517
+ "categories": {
518
+ "code_completion": {
519
+ "count": 50,
520
+ "raw_accuracy,none": 0.28,
521
+ "raw_accuracy_stderr,none": 0.06414269805898186
522
+ },
523
+ "commonsense": {
524
+ "count": 50,
525
+ "raw_accuracy,none": 0.5,
526
+ "raw_accuracy_stderr,none": 0.07142857142857142
527
+ },
528
+ "context_tracking": {
529
+ "count": 50,
530
+ "raw_accuracy,none": 0.16,
531
+ "raw_accuracy_stderr,none": 0.05237229365663817
532
+ },
533
+ "language_completion": {
534
+ "count": 50,
535
+ "raw_accuracy,none": 0.9,
536
+ "raw_accuracy_stderr,none": 0.04285714285714285
537
+ },
538
+ "logical_reasoning": {
539
+ "count": 50,
540
+ "raw_accuracy,none": 0.44,
541
+ "raw_accuracy_stderr,none": 0.07091242083423346
542
+ },
543
+ "quantitative": {
544
+ "count": 50,
545
+ "raw_accuracy,none": 0.26,
546
+ "raw_accuracy_stderr,none": 0.06266203485560375
547
+ },
548
+ "world_knowledge": {
549
+ "count": 50,
550
+ "raw_accuracy,none": 0.66,
551
+ "raw_accuracy_stderr,none": 0.0676726816132972
552
+ }
553
+ }
554
+ }
555
+ },
556
+ "manifests": {
557
+ "runs/eval/pending-release-20261001/q-mod/attempt-001": {
558
+ "checkpoint": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/checkpoints/q-mod",
559
+ "local_model": "q_mod",
560
+ "kind": "causal",
561
+ "tokenizer": "tokenizer",
562
+ "revision": "main",
563
+ "tokenizer_revision": null,
564
+ "protocol": "autoregressive likelihood",
565
+ "harness_version": "0.4.12",
566
+ "smoke_only": false,
567
+ "tasks": [
568
+ {
569
+ "task": "hellaswag",
570
+ "shots": 0,
571
+ "description": "Commonsense completion; acc and acc_norm",
572
+ "unsafe_code": false,
573
+ "rolling": false,
574
+ "engine": "lm_eval"
575
+ },
576
+ {
577
+ "task": "arc_easy",
578
+ "shots": 0,
579
+ "description": "AI2 ARC-Easy science questions; acc and acc_norm",
580
+ "unsafe_code": false,
581
+ "rolling": false,
582
+ "engine": "lm_eval"
583
+ },
584
+ {
585
+ "task": "arc_challenge",
586
+ "shots": 0,
587
+ "description": "AI2 ARC-Challenge; acc and acc_norm",
588
+ "unsafe_code": false,
589
+ "rolling": false,
590
+ "engine": "lm_eval"
591
+ },
592
+ {
593
+ "task": "piqa",
594
+ "shots": 0,
595
+ "description": "Physical commonsense; acc and acc_norm",
596
+ "unsafe_code": false,
597
+ "rolling": false,
598
+ "engine": "lm_eval"
599
+ },
600
+ {
601
+ "task": "winogrande",
602
+ "shots": 0,
603
+ "description": "Pronoun resolution; acc",
604
+ "unsafe_code": false,
605
+ "rolling": false,
606
+ "engine": "lm_eval"
607
+ },
608
+ {
609
+ "task": "openbookqa",
610
+ "shots": 0,
611
+ "description": "Science multiple choice; acc and acc_norm",
612
+ "unsafe_code": false,
613
+ "rolling": false,
614
+ "engine": "lm_eval"
615
+ },
616
+ {
617
+ "task": "boolq",
618
+ "shots": 0,
619
+ "description": "Yes/no reading comprehension; acc",
620
+ "unsafe_code": false,
621
+ "rolling": false,
622
+ "engine": "lm_eval"
623
+ },
624
+ {
625
+ "task": "lambada_openai",
626
+ "shots": 0,
627
+ "description": "Complete final word; acc and perplexity",
628
+ "unsafe_code": false,
629
+ "rolling": false,
630
+ "engine": "lm_eval"
631
+ },
632
+ {
633
+ "task": "arithmark3",
634
+ "shots": 0,
635
+ "description": "ArithMark-3.0 train-named evaluation split; token-normalized acc_norm",
636
+ "unsafe_code": false,
637
+ "rolling": false,
638
+ "engine": "token_continuation"
639
+ },
640
+ {
641
+ "task": "balanced_copa",
642
+ "shots": 0,
643
+ "description": "Balanced COPA mirrored 1000-item train split; acc; cRia split inferred",
644
+ "unsafe_code": false,
645
+ "rolling": false,
646
+ "engine": "lm_eval"
647
+ },
648
+ {
649
+ "task": "blimp",
650
+ "shots": 0,
651
+ "description": "Full BLiMP group; grammatical minimal pairs",
652
+ "unsafe_code": false,
653
+ "rolling": false,
654
+ "engine": "lm_eval"
655
+ },
656
+ {
657
+ "task": "commonsense_qa",
658
+ "shots": 0,
659
+ "description": "CommonsenseQA; acc",
660
+ "unsafe_code": false,
661
+ "rolling": false,
662
+ "engine": "lm_eval"
663
+ },
664
+ {
665
+ "task": "mmlu_continuation",
666
+ "shots": 0,
667
+ "description": "MMLU cloze: full answer continuations; acc",
668
+ "unsafe_code": false,
669
+ "rolling": false,
670
+ "engine": "lm_eval"
671
+ },
672
+ {
673
+ "task": "sciq",
674
+ "shots": 0,
675
+ "description": "SciQ test with support passage; acc and acc_norm",
676
+ "unsafe_code": false,
677
+ "rolling": false,
678
+ "engine": "lm_eval"
679
+ },
680
+ {
681
+ "task": "truthfulqa_mc2",
682
+ "shots": 0,
683
+ "description": "TruthfulQA multiple choice; mc2",
684
+ "unsafe_code": false,
685
+ "rolling": false,
686
+ "engine": "lm_eval"
687
+ },
688
+ {
689
+ "task": "bananamind_base",
690
+ "shots": 0,
691
+ "description": "BananaMind Base Bench 1.1 test; mean-token raw accuracy; gated",
692
+ "unsafe_code": false,
693
+ "rolling": false,
694
+ "engine": "token_continuation"
695
+ }
696
+ ],
697
+ "options": {
698
+ "checkpoint": "runs/eval/pending-release-20261001/checkpoints/q-mod",
699
+ "model": null,
700
+ "tokenizer": "tokenizer",
701
+ "revision": "main",
702
+ "tokenizer_revision": null,
703
+ "suite": "core",
704
+ "tasks": "hellaswag,arc_easy,arc_challenge,piqa,winogrande,openbookqa,boolq,lambada_openai,arithmark3,balanced_copa,blimp,commonsense_qa,mmlu_continuation,sciq,truthfulqa_mc2,bananamind_base",
705
+ "num_fewshot": null,
706
+ "device": "cuda:0",
707
+ "dtype": "bfloat16",
708
+ "allow_tf32": false,
709
+ "batch_size": 8,
710
+ "max_length": 2048,
711
+ "max_gen_toks": null,
712
+ "limit": null,
713
+ "seed": 1234,
714
+ "threads": 4,
715
+ "bootstrap_iters": 1000,
716
+ "trust_remote_code": false,
717
+ "allow_code_execution": false,
718
+ "apply_chat_template": false,
719
+ "log_samples": false,
720
+ "output": "/mnt/d/Projects/tiny_llm/runs/eval/pending-release-20261001/q-mod/attempt-001",
721
+ "tb_dir": "runs/q-mod-total-v1/tb",
722
+ "training_step": 15000,
723
+ "list": false,
724
+ "dry_run": false
725
+ },
726
+ "checkpoint_stamp": {
727
+ "model.safetensors": [
728
+ 203692144,
729
+ 1790864804000000000
730
+ ],
731
+ "config.json": [
732
+ 808,
733
+ 1790864803000000000
734
+ ],
735
+ "generation_config.json": [
736
+ 195,
737
+ 1790864803000000000
738
+ ]
739
+ },
740
+ "checkpoint_sha256": {
741
+ "config.json": "194e3135cfd3dc01fb1e01c1c2a801e19212af8a532c465448d2c40af1f64034",
742
+ "generation_config.json": "80da72cc13262a67c14c8b96f4f049f6e7890a027d808a02b8f0b0d48704c245",
743
+ "model.safetensors": "e5be4b27775d846ab2e65293a83f647d89ba2e0a606c00645fa892b21f6d5cd3"
744
+ },
745
+ "source_sha256": {
746
+ "src/tiny_llm/__init__.py": "8c7f075d51006a53fe1d645ef5a84d65db58ff4251e7544074fe29ee7549c14c",
747
+ "src/tiny_llm/benchmarks.py": "5d9f461366389bd1f926c6a6468192f3e2313c87caf5b1de27f407d563a858a4",
748
+ "src/tiny_llm/checkpoint.py": "ac9df5f8c981a47eb1f1e59d0687ff41a1f6c38ca74ced50f71ac446a58d6ef5",
749
+ "src/tiny_llm/comet_sync.py": "ea802bfb58dacad66f83b9e5ac5ccb330c190204a81c90c9e14aafe44c893c37",
750
+ "src/tiny_llm/comet_views.py": "3e03f4ae69f8edc2eaf5f946f5cc90f373ca1b9cc91f9dd2e9adae6d6a672689",
751
+ "src/tiny_llm/continuation.py": "4f4143c828d4f94a851bcbf8a466d3e1b3e9eaec1027970a426208cc0ff4f4db",
752
+ "src/tiny_llm/data.py": "1a52e38afef9af32463779cc2f471d9b7174a7c4c73753e74f485d526d3c6733",
753
+ "src/tiny_llm/diffusion_diagnostics.py": "2ae667a076b1d3f057a29d20f00559068eb73a073b3f99030e1d5b4c2f478fa5",
754
+ "src/tiny_llm/evaluation/__init__.py": "e49e80f7be3ab6e200f0db14b028e465de9caa8f6f705430eabce0c41b8322ba",
755
+ "src/tiny_llm/evaluation/adapters.py": "8e64e5542bbcb0f9ad448b320e712916a9559823987e298b22321a8d8e2f727f",
756
+ "src/tiny_llm/evaluation/catalog.py": "2fd29084ec780539023a38bcbfd7302931fa6be48624e227875f13518a1b986f",
757
+ "src/tiny_llm/evaluation/cli.py": "a322e39bf58ba52132249dae524e9772c3a8e1a5ba388f5c0267f8dc1ea18882",
758
+ "src/tiny_llm/evaluation/tasks/balanced_copa.yaml": "f47baa6a713e15f7a5600ed257f316f8c54252bf4977bbc716a6da7aa580f05d",
759
+ "src/tiny_llm/evaluation/tasks/balanced_copa_test.yaml": "dce21ad70b395d8d576c584be1b87ebae846e360e59878030645215a387b28e6",
760
+ "src/tiny_llm/evaluation/telemetry.py": "f4dad30574753739ea10ba71ef9a7ed9d9118a89a8202dee224961be27f13a48",
761
+ "src/tiny_llm/evaluation/token_continuation.py": "e8d88cd4aca51ca2fda07f2b799a54612d0e2964a98e05824a135bea1a533550",
762
+ "src/tiny_llm/losses.py": "592a05287369f6e5077b3faca404a9392de4772cf06389fb8aa7e36924e74f86",
763
+ "src/tiny_llm/models/__init__.py": "b94ab167b6eb9f9b455823eea382e67b5ac2cc7f9ef5f6de183a09b9650b9718",
764
+ "src/tiny_llm/models/diffusion/__init__.py": "c92eaf5986d604d8aaf1894a862a217cefa32ab25359175b88110e45a71c1b25",
765
+ "src/tiny_llm/models/diffusion/configuration_diffusion_lm.py": "3b303aba60f0a831c966f5cfa7f5441daa2584814e335646195bd6ceecfa6d0c",
766
+ "src/tiny_llm/models/diffusion/modeling_diffusion_lm.py": "4fc21c2aed1d5a231afe6f7634d9d8c3682b4e2abfc8fecef27b52136de77b2f",
767
+ "src/tiny_llm/models/looped/__init__.py": "4b46b426021c59ed313cb2f49afc1926ad2793d771ef90117e3fef0462957cff",
768
+ "src/tiny_llm/models/looped/configuration_looped_lm.py": "b8d99c52b98e0a97a4cae76ca4c20affd8f4d019ec38e0a9beefd5fad864dc25",
769
+ "src/tiny_llm/models/looped/modeling_looped_lm.py": "9bdb3c5e3aaae663d09e98055f95df1adbc42e0a4bf5dffb7f6c39242af41b9e",
770
+ "src/tiny_llm/models/moe_t5/__init__.py": "18e33fe38b2049521f573512ac8796afa209e1b25c2052784e1c927a7160d66c",
771
+ "src/tiny_llm/models/moe_t5/configuration_alicet5_moe.py": "4647b1e9ab9ce07887bffc1abc3beb3e691962a380b4cc237aae376490bb56b7",
772
+ "src/tiny_llm/models/moe_t5/modeling_alicet5_moe.py": "5f899c4726b120eed6c9bf6258ad319bb1ccea734645f27e7e6ccbc5057222ff",
773
+ "src/tiny_llm/models/prefixlm/__init__.py": "c94c3c861acba8d2147a3a6c46bccfc71ac8adc8d70757bede009598029d31ea",
774
+ "src/tiny_llm/models/prefixlm/configuration_prefix_lm.py": "20b3a62ae3628b5a64566ef19d2947c90f10c6159daad00dd13d18fc5910c42c",
775
+ "src/tiny_llm/models/prefixlm/modeling_prefix_lm.py": "f62a38211df175696f64945173d1e41d9f7fcf6152a7648020da8c91788e98fd",
776
+ "src/tiny_llm/models/q50m/__init__.py": "9d0dfec6fa0cfa6967e2f17a73d8fbeca69ba93b4a93651eda4d95626d5f5eb5",
777
+ "src/tiny_llm/models/q50m/configuration_q50m.py": "796806b2d5d982b633796bc7de53c3073b1b6e52d259f44ef798b63f55eaea92",
778
+ "src/tiny_llm/models/q50m/modeling_q50m.py": "b68abce1f19a36deb39c4ac4e520ffaab0c879d8a7cc2abef35f014bacc011f2",
779
+ "src/tiny_llm/models/qmod/__init__.py": "e8c3e10710ac1cceac72ea329db480e680e8bbaae2a92ec26c36c92a778552ad",
780
+ "src/tiny_llm/models/qmod/configuration_qmod.py": "0dfc9a4540697a9b15e423b9592df9fc435dcfc437ddad20dc6b6377ebebea40",
781
+ "src/tiny_llm/models/qmod/modeling_qmod.py": "3831e34a86309b91a7a0787b9471eaceb91aa4c267f8030eb2e6722a0fcab6f8",
782
+ "src/tiny_llm/models/qmoe/__init__.py": "cfb2bb24bc2f3d5b72b3890a393b0386cb25f127e375f5454255478a36dec32f",
783
+ "src/tiny_llm/models/qmoe/configuration_qmoe.py": "bba7c9ac16f444146a78c99e7a26b4a11864b215d2b673bf658d9930f2f4de2f",
784
+ "src/tiny_llm/models/qmoe/modeling_qmoe.py": "1d713e5e287f46dbf13b7cf9c562b4539efbf6231f7ceaa261f8cea1acd2768c",
785
+ "src/tiny_llm/models/qt5/__init__.py": "df943b42a9f339e006687bcd30a666838c1dec15c79751b944e5f7a2bc69186c",
786
+ "src/tiny_llm/models/qt5/configuration_qt5.py": "59709fe2c9fe08ccecea6633b29b3b47170fd30abcbee37952507d676446cd44",
787
+ "src/tiny_llm/models/qt5/modeling_qt5.py": "6269829cca6631824622df034ff7b544dbbe47790556c60b26e356b5279cceff",
788
+ "src/tiny_llm/models/t5/__init__.py": "e4d8838253800edbcac1f9a9b6dc875bcb3ffa2962a0c9044d066448ea10488e",
789
+ "src/tiny_llm/models/t5/configuration_alicet5.py": "81b1f594139f201af9afb25ba58df862432c15dedf57f6e340ee2af80ed0d44f",
790
+ "src/tiny_llm/models/t5/modeling_alicet5.py": "bd52ce0022668f2defb57770df229f148e070ea73becca9a2e681325114bfc20",
791
+ "src/tiny_llm/models/zarya/__init__.py": "651b19cdba422680ff16bf2b2f63be0c3e9045c44c410fb17dbf51df2a23bd55",
792
+ "src/tiny_llm/models/zarya/configuration_zarya_lm.py": "42a3e7a1b11b687bac34e00f9cd3cb59d1cd573eec7492e1c55834662d37ed3f",
793
+ "src/tiny_llm/models/zarya/modeling_zarya_lm.py": "73ab033860288f7367d5b912c79de908fd81a4e88f369a658b96dd2bcfcd7bfe",
794
+ "src/tiny_llm/telemetry.py": "7ee8f14f4545bfa0e5ac632440d49c7f86fd6812a16429f862ebe3cfe09e3545",
795
+ "src/tiny_llm/ul2.py": "f4d948d89d5e106965612971dd473a54b57719f811761f18457c6221d763b876",
796
+ "src/tiny_llm/zarya.py": "8b5084ab5086c75745115d3a9ba4f2fa9cfda8ad713f65d3f8a22e77db8c0941"
797
+ },
798
+ "packages": {
799
+ "lm_eval": "0.4.12",
800
+ "torch": "2.11.0+cu128",
801
+ "transformers": "5.17.0",
802
+ "datasets": "5.0.1",
803
+ "accelerate": "1.15.0"
804
+ },
805
+ "git_commit": "d2b5d7b5cbb913e4bed99b37a2fdcd9f0ae98dbb",
806
+ "git_dirty": true
807
+ }
808
+ },
809
+ "continuation": {
810
+ "result": {
811
+ "model": "q-mod",
812
+ "checkpoint_sha256": {
813
+ "model.safetensors": "e5be4b27775d846ab2e65293a83f647d89ba2e0a606c00645fa892b21f6d5cd3"
814
+ },
815
+ "corpus_sha256": "aca2f46735043bcfd0a44eca981d04627b9cdf74c4c9a04bf0856d04066f58fc",
816
+ "tokenizer_sha256": "fc71a154536f6c84a5bf729d06324032126603ef5183c0b4979407e4fad68a8d",
817
+ "blocks": 291,
818
+ "scored_tokens": 148992,
819
+ "dropped_tail_tokens": 335,
820
+ "protocol": "WikiText-2 raw test, newline-joined; tokenizer-specific nonoverlapping 1024-token blocks; 512 prefix + 512 scored suffix; full vocabulary. GPU BF16 and FP32 separately, TF32 off. Block bootstrap, 10000 resamples, seed 2026. PPL is not rolling or word PPL; different tokenizer results are not directly comparable.",
821
+ "measurements": {
822
+ "torch.bfloat16": {
823
+ "nll": 3.6892377994314502,
824
+ "nll_ci95": [
825
+ 3.6496566288659666,
826
+ 3.7284908163793307
827
+ ],
828
+ "ppl": 40.014336381234685,
829
+ "ppl_ci95": [
830
+ 38.46145722721316,
831
+ 41.616254177697236
832
+ ],
833
+ "block_nll": [
834
+ 3.0334739685058594,
835
+ 3.740220069885254,
836
+ 3.628894805908203,
837
+ 3.6683175563812256,
838
+ 4.014724254608154,
839
+ 3.891292095184326,
840
+ 4.447037696838379,
841
+ 4.0522780418396,
842
+ 3.8349380493164062,
843
+ 3.823822021484375,
844
+ 3.633845329284668,
845
+ 3.2401468753814697,
846
+ 3.266814708709717,
847
+ 3.5836172103881836,
848
+ 3.8599278926849365,
849
+ 3.666652202606201,
850
+ 3.956968307495117,
851
+ 3.8685550689697266,
852
+ 3.7003097534179688,
853
+ 3.9863815307617188,
854
+ 3.7272982597351074,
855
+ 3.4920151233673096,
856
+ 4.134518623352051,
857
+ 3.097790241241455,
858
+ 3.377092123031616,
859
+ 3.659186363220215,
860
+ 3.691166877746582,
861
+ 3.5041279792785645,
862
+ 3.5620369911193848,
863
+ 3.4219396114349365,
864
+ 3.945758819580078,
865
+ 4.074984073638916,
866
+ 3.4408555030822754,
867
+ 3.3952572345733643,
868
+ 3.482008695602417,
869
+ 4.128378868103027,
870
+ 3.7565321922302246,
871
+ 3.6840639114379883,
872
+ 3.3337631225585938,
873
+ 3.7233495712280273,
874
+ 3.358358144760132,
875
+ 3.8522372245788574,
876
+ 3.4598348140716553,
877
+ 3.858750343322754,
878
+ 3.539834976196289,
879
+ 3.7883243560791016,
880
+ 3.972238302230835,
881
+ 3.525768518447876,
882
+ 3.943371295928955,
883
+ 3.6065564155578613,
884
+ 3.502178192138672,
885
+ 3.6186389923095703,
886
+ 3.925199270248413,
887
+ 4.104352951049805,
888
+ 3.556373357772827,
889
+ 4.266332626342773,
890
+ 3.2788915634155273,
891
+ 3.275848150253296,
892
+ 3.6967127323150635,
893
+ 3.381783962249756,
894
+ 3.3477587699890137,
895
+ 3.2133116722106934,
896
+ 3.3617265224456787,
897
+ 2.6435787677764893,
898
+ 3.3020172119140625,
899
+ 3.4059677124023438,
900
+ 3.1757893562316895,
901
+ 3.1442549228668213,
902
+ 3.4717979431152344,
903
+ 3.4961135387420654,
904
+ 3.559631824493408,
905
+ 3.3489818572998047,
906
+ 3.8820650577545166,
907
+ 3.555074691772461,
908
+ 3.8889122009277344,
909
+ 3.5896503925323486,
910
+ 3.769655227661133,
911
+ 3.8484110832214355,
912
+ 3.7232885360717773,
913
+ 3.7955780029296875,
914
+ 3.5623092651367188,
915
+ 3.676947832107544,
916
+ 3.684424877166748,
917
+ 4.132134437561035,
918
+ 4.085684776306152,
919
+ 4.260656833648682,
920
+ 3.877305507659912,
921
+ 3.9520206451416016,
922
+ 3.867370128631592,
923
+ 4.114029884338379,
924
+ 3.622154951095581,
925
+ 3.7936620712280273,
926
+ 3.7642085552215576,
927
+ 3.8050858974456787,
928
+ 3.628535270690918,
929
+ 3.818166494369507,
930
+ 3.595874309539795,
931
+ 3.5458860397338867,
932
+ 3.472426652908325,
933
+ 4.054523468017578,
934
+ 3.888446092605591,
935
+ 3.6914849281311035,
936
+ 3.0026016235351562,
937
+ 3.6276140213012695,
938
+ 3.5678868293762207,
939
+ 3.2021985054016113,
940
+ 3.4582393169403076,
941
+ 3.1557910442352295,
942
+ 3.4210400581359863,
943
+ 3.4203357696533203,
944
+ 3.337662696838379,
945
+ 3.530256986618042,
946
+ 2.94315767288208,
947
+ 3.107532501220703,
948
+ 3.6951563358306885,
949
+ 3.2887697219848633,
950
+ 3.3305134773254395,
951
+ 3.8404202461242676,
952
+ 3.448058605194092,
953
+ 3.5578668117523193,
954
+ 3.8797223567962646,
955
+ 3.9302845001220703,
956
+ 3.7769031524658203,
957
+ 3.735970973968506,
958
+ 4.003993511199951,
959
+ 3.8857574462890625,
960
+ 3.718710422515869,
961
+ 3.696420669555664,
962
+ 3.990670680999756,
963
+ 3.836711883544922,
964
+ 3.9563257694244385,
965
+ 3.8588461875915527,
966
+ 3.8682708740234375,
967
+ 3.552096366882324,
968
+ 4.007606506347656,
969
+ 3.6597299575805664,
970
+ 3.721909284591675,
971
+ 3.916825532913208,
972
+ 3.618872880935669,
973
+ 4.049559593200684,
974
+ 3.5828661918640137,
975
+ 3.300783395767212,
976
+ 4.254912376403809,
977
+ 3.9667701721191406,
978
+ 4.053187370300293,
979
+ 4.266885757446289,
980
+ 4.450619220733643,
981
+ 4.25779914855957,
982
+ 3.4460010528564453,
983
+ 3.620326519012451,
984
+ 3.8935182094573975,
985
+ 3.7257468700408936,
986
+ 3.1817684173583984,
987
+ 3.5945611000061035,
988
+ 3.14451265335083,
989
+ 3.5998497009277344,
990
+ 3.827526092529297,
991
+ 3.8065614700317383,
992
+ 4.318783760070801,
993
+ 3.381446361541748,
994
+ 3.701540470123291,
995
+ 3.774550437927246,
996
+ 3.0764577388763428,
997
+ 3.0016181468963623,
998
+ 2.8728439807891846,
999
+ 3.309659242630005,
1000
+ 3.2308201789855957,
1001
+ 3.528296709060669,
1002
+ 3.1466598510742188,
1003
+ 4.0538530349731445,
1004
+ 3.837440252304077,
1005
+ 4.182062149047852,
1006
+ 4.07778263092041,
1007
+ 4.6475090980529785,
1008
+ 4.582226753234863,
1009
+ 3.9743824005126953,
1010
+ 4.288257598876953,
1011
+ 3.4931979179382324,
1012
+ 3.476074695587158,
1013
+ 4.683747291564941,
1014
+ 3.927859306335449,
1015
+ 4.299893379211426,
1016
+ 4.255132675170898,
1017
+ 4.288380146026611,
1018
+ 4.4493513107299805,
1019
+ 4.2332000732421875,
1020
+ 4.063198566436768,
1021
+ 4.357582092285156,
1022
+ 4.2598466873168945,
1023
+ 4.221273422241211,
1024
+ 4.55598258972168,
1025
+ 4.1570329666137695,
1026
+ 3.369076728820801,
1027
+ 4.477698802947998,
1028
+ 4.309594631195068,
1029
+ 3.729815721511841,
1030
+ 3.8138747215270996,
1031
+ 3.4916563034057617,
1032
+ 3.8918566703796387,
1033
+ 3.7358622550964355,
1034
+ 3.576416254043579,
1035
+ 3.2475414276123047,
1036
+ 3.634760856628418,
1037
+ 3.4506139755249023,
1038
+ 3.6861281394958496,
1039
+ 3.718350887298584,
1040
+ 3.434321880340576,
1041
+ 3.793008804321289,
1042
+ 3.359323501586914,
1043
+ 3.665397882461548,
1044
+ 3.6199021339416504,
1045
+ 3.3855361938476562,
1046
+ 3.4763875007629395,
1047
+ 3.5085606575012207,
1048
+ 3.3470630645751953,
1049
+ 3.6974496841430664,
1050
+ 3.754701614379883,
1051
+ 3.4645261764526367,
1052
+ 3.109065532684326,
1053
+ 3.254002094268799,
1054
+ 3.4032177925109863,
1055
+ 3.6319453716278076,
1056
+ 3.323887825012207,
1057
+ 3.2882790565490723,
1058
+ 3.724388837814331,
1059
+ 3.4665753841400146,
1060
+ 3.174009323120117,
1061
+ 3.791433095932007,
1062
+ 4.040876388549805,
1063
+ 3.4488320350646973,
1064
+ 3.8699331283569336,
1065
+ 3.6910126209259033,
1066
+ 3.5286316871643066,
1067
+ 3.798151731491089,
1068
+ 3.882476806640625,
1069
+ 3.844326972961426,
1070
+ 4.06152868270874,
1071
+ 3.8325114250183105,
1072
+ 3.337923526763916,
1073
+ 3.7876949310302734,
1074
+ 3.5918965339660645,
1075
+ 3.615245819091797,
1076
+ 3.2705817222595215,
1077
+ 3.1231560707092285,
1078
+ 3.385634422302246,
1079
+ 3.420309066772461,
1080
+ 3.39042329788208,
1081
+ 3.7529053688049316,
1082
+ 4.090065956115723,
1083
+ 3.57220196723938,
1084
+ 4.007654190063477,
1085
+ 4.212186813354492,
1086
+ 3.671332359313965,
1087
+ 3.585268974304199,
1088
+ 3.951240062713623,
1089
+ 3.822371006011963,
1090
+ 3.564332962036133,
1091
+ 3.556788921356201,
1092
+ 3.841912031173706,
1093
+ 3.7584228515625,
1094
+ 3.6320042610168457,
1095
+ 3.6407132148742676,
1096
+ 3.273137092590332,
1097
+ 3.4374094009399414,
1098
+ 3.547950506210327,
1099
+ 3.7734694480895996,
1100
+ 3.434028148651123,
1101
+ 3.8533287048339844,
1102
+ 3.884617567062378,
1103
+ 3.1127676963806152,
1104
+ 3.9401354789733887,
1105
+ 3.767160177230835,
1106
+ 3.10684871673584,
1107
+ 3.317154884338379,
1108
+ 3.160114288330078,
1109
+ 2.7552032470703125,
1110
+ 3.654399871826172,
1111
+ 3.568580389022827,
1112
+ 3.8528037071228027,
1113
+ 3.8489787578582764,
1114
+ 3.773097515106201,
1115
+ 3.8523926734924316,
1116
+ 3.409104108810425,
1117
+ 3.7001962661743164,
1118
+ 3.8040661811828613,
1119
+ 3.4476029872894287,
1120
+ 3.7821860313415527,
1121
+ 3.9857730865478516,
1122
+ 4.512575149536133,
1123
+ 4.251725673675537,
1124
+ 3.6333508491516113
1125
+ ]
1126
+ },
1127
+ "torch.float32": {
1128
+ "nll": 3.6888507895453277,
1129
+ "nll_ci95": [
1130
+ 3.649182625079073,
1131
+ 3.728063138858559
1132
+ ],
1133
+ "ppl": 39.99885343368865,
1134
+ "ppl_ci95": [
1135
+ 38.44323067090763,
1136
+ 41.598459646718396
1137
+ ],
1138
+ "block_nll": [
1139
+ 3.027667760848999,
1140
+ 3.738102912902832,
1141
+ 3.6281819343566895,
1142
+ 3.6695809364318848,
1143
+ 4.015194892883301,
1144
+ 3.894198417663574,
1145
+ 4.446779251098633,
1146
+ 4.050177574157715,
1147
+ 3.8330178260803223,
1148
+ 3.821993112564087,
1149
+ 3.6341664791107178,
1150
+ 3.2412233352661133,
1151
+ 3.2660343647003174,
1152
+ 3.5816807746887207,
1153
+ 3.8598198890686035,
1154
+ 3.66544771194458,
1155
+ 3.954576015472412,
1156
+ 3.8663859367370605,
1157
+ 3.700993299484253,
1158
+ 3.98309588432312,
1159
+ 3.726853370666504,
1160
+ 3.4925546646118164,
1161
+ 4.133160591125488,
1162
+ 3.097299098968506,
1163
+ 3.3766369819641113,
1164
+ 3.6585729122161865,
1165
+ 3.6912124156951904,
1166
+ 3.5034966468811035,
1167
+ 3.560659408569336,
1168
+ 3.421860456466675,
1169
+ 3.944514751434326,
1170
+ 4.076074123382568,
1171
+ 3.4416584968566895,
1172
+ 3.3954355716705322,
1173
+ 3.483755111694336,
1174
+ 4.1278228759765625,
1175
+ 3.755769968032837,
1176
+ 3.682060718536377,
1177
+ 3.33280086517334,
1178
+ 3.7252397537231445,
1179
+ 3.360107183456421,
1180
+ 3.8527755737304688,
1181
+ 3.460200786590576,
1182
+ 3.855809211730957,
1183
+ 3.5398995876312256,
1184
+ 3.7887706756591797,
1185
+ 3.971407890319824,
1186
+ 3.5239522457122803,
1187
+ 3.942335844039917,
1188
+ 3.6075119972229004,
1189
+ 3.4993295669555664,
1190
+ 3.6204614639282227,
1191
+ 3.9251532554626465,
1192
+ 4.106016159057617,
1193
+ 3.555708408355713,
1194
+ 4.265496730804443,
1195
+ 3.2797160148620605,
1196
+ 3.276913642883301,
1197
+ 3.6964378356933594,
1198
+ 3.384550094604492,
1199
+ 3.348212242126465,
1200
+ 3.213447332382202,
1201
+ 3.362593173980713,
1202
+ 2.643364429473877,
1203
+ 3.302009105682373,
1204
+ 3.4066994190216064,
1205
+ 3.1740009784698486,
1206
+ 3.146824836730957,
1207
+ 3.4738929271698,
1208
+ 3.4947752952575684,
1209
+ 3.5605530738830566,
1210
+ 3.346153497695923,
1211
+ 3.879917860031128,
1212
+ 3.5560824871063232,
1213
+ 3.8901753425598145,
1214
+ 3.5909934043884277,
1215
+ 3.768007516860962,
1216
+ 3.8438334465026855,
1217
+ 3.71993088722229,
1218
+ 3.7953481674194336,
1219
+ 3.5641112327575684,
1220
+ 3.6742324829101562,
1221
+ 3.6839911937713623,
1222
+ 4.1331987380981445,
1223
+ 4.086156845092773,
1224
+ 4.263089179992676,
1225
+ 3.8775670528411865,
1226
+ 3.950777530670166,
1227
+ 3.86856746673584,
1228
+ 4.112517833709717,
1229
+ 3.620612144470215,
1230
+ 3.7948694229125977,
1231
+ 3.7628049850463867,
1232
+ 3.8032991886138916,
1233
+ 3.6272482872009277,
1234
+ 3.817592144012451,
1235
+ 3.594144105911255,
1236
+ 3.547070264816284,
1237
+ 3.4730372428894043,
1238
+ 4.054729461669922,
1239
+ 3.8879971504211426,
1240
+ 3.6934356689453125,
1241
+ 3.000913381576538,
1242
+ 3.625133991241455,
1243
+ 3.568268060684204,
1244
+ 3.2034006118774414,
1245
+ 3.4547390937805176,
1246
+ 3.1572463512420654,
1247
+ 3.4198713302612305,
1248
+ 3.4206738471984863,
1249
+ 3.3378567695617676,
1250
+ 3.5324578285217285,
1251
+ 2.9415979385375977,
1252
+ 3.1075520515441895,
1253
+ 3.6945276260375977,
1254
+ 3.289034366607666,
1255
+ 3.333094596862793,
1256
+ 3.8393657207489014,
1257
+ 3.4496171474456787,
1258
+ 3.5584096908569336,
1259
+ 3.878268241882324,
1260
+ 3.929405689239502,
1261
+ 3.7761900424957275,
1262
+ 3.736541271209717,
1263
+ 3.9996914863586426,
1264
+ 3.8869969844818115,
1265
+ 3.717820167541504,
1266
+ 3.6949455738067627,
1267
+ 3.9903812408447266,
1268
+ 3.836249828338623,
1269
+ 3.959465980529785,
1270
+ 3.858759880065918,
1271
+ 3.868380308151245,
1272
+ 3.550398826599121,
1273
+ 4.00911808013916,
1274
+ 3.6598963737487793,
1275
+ 3.722276210784912,
1276
+ 3.916846990585327,
1277
+ 3.616698980331421,
1278
+ 4.050436019897461,
1279
+ 3.5778284072875977,
1280
+ 3.2959275245666504,
1281
+ 4.254424571990967,
1282
+ 3.9653892517089844,
1283
+ 4.0521240234375,
1284
+ 4.270989418029785,
1285
+ 4.4489850997924805,
1286
+ 4.254066467285156,
1287
+ 3.445030689239502,
1288
+ 3.61728572845459,
1289
+ 3.894674777984619,
1290
+ 3.7256832122802734,
1291
+ 3.181084632873535,
1292
+ 3.5941505432128906,
1293
+ 3.144176483154297,
1294
+ 3.5967330932617188,
1295
+ 3.829509735107422,
1296
+ 3.805874824523926,
1297
+ 4.318291664123535,
1298
+ 3.3804588317871094,
1299
+ 3.7016525268554688,
1300
+ 3.7745108604431152,
1301
+ 3.076606273651123,
1302
+ 2.9988205432891846,
1303
+ 2.872002601623535,
1304
+ 3.307823896408081,
1305
+ 3.2268385887145996,
1306
+ 3.525599956512451,
1307
+ 3.147146224975586,
1308
+ 4.053147315979004,
1309
+ 3.8385915756225586,
1310
+ 4.182605743408203,
1311
+ 4.073055267333984,
1312
+ 4.646452903747559,
1313
+ 4.581335544586182,
1314
+ 3.976539134979248,
1315
+ 4.287915229797363,
1316
+ 3.492595911026001,
1317
+ 3.4744696617126465,
1318
+ 4.682605743408203,
1319
+ 3.9282143115997314,
1320
+ 4.29866886138916,
1321
+ 4.253904342651367,
1322
+ 4.2884039878845215,
1323
+ 4.448787689208984,
1324
+ 4.234960556030273,
1325
+ 4.059430122375488,
1326
+ 4.357001781463623,
1327
+ 4.257026672363281,
1328
+ 4.221226692199707,
1329
+ 4.557419776916504,
1330
+ 4.155788898468018,
1331
+ 3.3654861450195312,
1332
+ 4.480966567993164,
1333
+ 4.309287071228027,
1334
+ 3.730501174926758,
1335
+ 3.8162360191345215,
1336
+ 3.4917783737182617,
1337
+ 3.889458656311035,
1338
+ 3.737387180328369,
1339
+ 3.574091911315918,
1340
+ 3.245443820953369,
1341
+ 3.635066032409668,
1342
+ 3.4508020877838135,
1343
+ 3.685305595397949,
1344
+ 3.7202224731445312,
1345
+ 3.436110019683838,
1346
+ 3.793421745300293,
1347
+ 3.3612964153289795,
1348
+ 3.664384603500366,
1349
+ 3.6176421642303467,
1350
+ 3.384169578552246,
1351
+ 3.4765501022338867,
1352
+ 3.50846004486084,
1353
+ 3.3470969200134277,
1354
+ 3.69547700881958,
1355
+ 3.752682685852051,
1356
+ 3.464268445968628,
1357
+ 3.1101222038269043,
1358
+ 3.250185489654541,
1359
+ 3.4053843021392822,
1360
+ 3.6328437328338623,
1361
+ 3.3243253231048584,
1362
+ 3.287609100341797,
1363
+ 3.7263553142547607,
1364
+ 3.465762138366699,
1365
+ 3.1718688011169434,
1366
+ 3.7949929237365723,
1367
+ 4.041664123535156,
1368
+ 3.4488463401794434,
1369
+ 3.8704917430877686,
1370
+ 3.690990924835205,
1371
+ 3.5286307334899902,
1372
+ 3.799253463745117,
1373
+ 3.8777198791503906,
1374
+ 3.8435721397399902,
1375
+ 4.059334754943848,
1376
+ 3.8340835571289062,
1377
+ 3.3388919830322266,
1378
+ 3.788696050643921,
1379
+ 3.5927886962890625,
1380
+ 3.6131863594055176,
1381
+ 3.2687082290649414,
1382
+ 3.120223045349121,
1383
+ 3.3863675594329834,
1384
+ 3.4221267700195312,
1385
+ 3.3879547119140625,
1386
+ 3.7518320083618164,
1387
+ 4.08969783782959,
1388
+ 3.574854850769043,
1389
+ 4.006902694702148,
1390
+ 4.210338592529297,
1391
+ 3.671088695526123,
1392
+ 3.586747407913208,
1393
+ 3.94930362701416,
1394
+ 3.821291923522949,
1395
+ 3.565288782119751,
1396
+ 3.5583267211914062,
1397
+ 3.840996742248535,
1398
+ 3.755756378173828,
1399
+ 3.632883071899414,
1400
+ 3.638172149658203,
1401
+ 3.272749185562134,
1402
+ 3.437190294265747,
1403
+ 3.547724723815918,
1404
+ 3.7728371620178223,
1405
+ 3.4354710578918457,
1406
+ 3.8511710166931152,
1407
+ 3.8856048583984375,
1408
+ 3.1140756607055664,
1409
+ 3.939563751220703,
1410
+ 3.765720844268799,
1411
+ 3.105600118637085,
1412
+ 3.3165178298950195,
1413
+ 3.1615777015686035,
1414
+ 2.7535500526428223,
1415
+ 3.6520907878875732,
1416
+ 3.569089889526367,
1417
+ 3.8519628047943115,
1418
+ 3.850273609161377,
1419
+ 3.775264263153076,
1420
+ 3.8534600734710693,
1421
+ 3.4068784713745117,
1422
+ 3.702049732208252,
1423
+ 3.802506923675537,
1424
+ 3.449129581451416,
1425
+ 3.781672954559326,
1426
+ 3.984006881713867,
1427
+ 4.511618137359619,
1428
+ 4.252767562866211,
1429
+ 3.6308560371398926
1430
+ ]
1431
+ }
1432
+ }
1433
+ },
1434
+ "path": "runs/eval/pending-release-20261001/q-mod/continuation.json",
1435
+ "sha256": "3b31fcaa4f71b0f317100a1b37b94481bb3773046676f909dec2f545c54ef40b"
1436
+ },
1437
+ "mean_16": 0.41461276742189673,
1438
+ "mean_16_percent": 41.461276742189675,
1439
+ "tensorboard_verified_points": 1244,
1440
+ "training_history": {
1441
+ "train/grad_clipped_fraction": {
1442
+ "points": 750,
1443
+ "first_step": 20,
1444
+ "last_step": 15000
1445
+ },
1446
+ "train/grad_norm_pre_clip": {
1447
+ "points": 750,
1448
+ "first_step": 20,
1449
+ "last_step": 15000
1450
+ },
1451
+ "train/loss": {
1452
+ "points": 750,
1453
+ "first_step": 20,
1454
+ "last_step": 15000
1455
+ },
1456
+ "train/lr": {
1457
+ "points": 750,
1458
+ "first_step": 20,
1459
+ "last_step": 15000
1460
+ },
1461
+ "train/mod_router_bce_raw": {
1462
+ "points": 750,
1463
+ "first_step": 20,
1464
+ "last_step": 15000
1465
+ },
1466
+ "train/mod_router_bce_weighted": {
1467
+ "points": 750,
1468
+ "first_step": 20,
1469
+ "last_step": 15000
1470
+ },
1471
+ "train/token_ce": {
1472
+ "points": 750,
1473
+ "first_step": 20,
1474
+ "last_step": 15000
1475
+ }
1476
+ },
1477
+ "tb": "runs/q-mod-total-v1/tb",
1478
+ "external_reference": false,
1479
+ "protocol": "Full selected splits; lm-eval 0.4.12; seed 1234; BF16 on RTX 5070 Ti;\ncontext cap 2048 (ArithMark 1024), TF32 disabled on new runs (historical core flag unrecorded), no chat template and no added\nfew-shot examples. TruthfulQA retains the harness's fixed six-QA preamble.\nArithMark and BananaMind normalize by continuation token count; ordinary harness\nacc_norm uses its own length normalization. BananaMind is raw accuracy, not Elo.\nSciQ includes the support passage. Balanced COPA uses the mirrored 1000-item\ntrain-named evaluation split; cRia's split was inferred, not confirmed.\nMMLU scores full answer continuations across 57 subjects, weighted by item count;\nBLiMP averages 67 equal-sized minimal-pair subsets. Standard errors are retained\nfrom each evaluator. Wilson intervals are reported only where the runner logged\nbinary item accuracy; MC2 is probability mass, not binary accuracy. These\nintervals do not model dependence between paired/templated examples or training\nseed variation. UL2, PrefixLM and experimental diffusion PLL use their documented\nconditional scoring protocols; PLL exposes the other answer tokens and is not\nautoregressive likelihood. cRia's published scores used a different precision\nand benchmark-adapted checkpoint; this completes our comparison coverage, not\nan independent reproduction of cRia or an official leaderboard submission."
1480
+ }
generation_config.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token_id": 1,
3
+ "eos_token_id": 2,
4
+ "pad_token_id": 0,
5
+ "do_sample": false
6
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e5be4b27775d846ab2e65293a83f647d89ba2e0a606c00645fa892b21f6d5cd3
3
+ size 203692144
modeling_q50m.py ADDED
@@ -0,0 +1,453 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Modeling for the Q-50M architecture (replica of q-project/Q-50M-Base).
2
+
3
+ Self-contained implementation of the exact architecture described in the
4
+ model card: Mistral-shaped 512-wide 10-layer decoder, GQA 8q/2kv, per-head
5
+ QK-Norm, RoPE in every layer (configurable NoPE), scalar content-dependent
6
+ gates (gate = multiplier * sigmoid(Wx)) on attention and MLP residual
7
+ branches, SwiGLU MLP, tied input/output embeddings, final RMSNorm.
8
+
9
+ Follows the transformers v5 modeling pattern (DynamicCache, create_causal_mask,
10
+ GradientCheckpointingLayer, GenerationMixin).
11
+ """
12
+
13
+ from collections.abc import Callable
14
+
15
+ import torch
16
+ import torch.nn as nn
17
+ import torch.nn.functional as F
18
+ from transformers.cache_utils import Cache, DynamicCache
19
+ from transformers.generation import GenerationMixin
20
+ from transformers.masking_utils import create_causal_mask
21
+ from transformers.modeling_layers import GradientCheckpointingLayer
22
+ from transformers.modeling_outputs import BaseModelOutputWithPast, CausalLMOutputWithPast
23
+ from transformers.modeling_utils import ALL_ATTENTION_FUNCTIONS, PreTrainedModel
24
+ from transformers.processing_utils import Unpack
25
+ from transformers.utils import TransformersKwargs
26
+
27
+ try:
28
+ from .configuration_q50m import Q50MConfig
29
+ except ImportError: # standalone use inside an HF model directory
30
+ from configuration_q50m import Q50MConfig
31
+
32
+
33
+ def _rotate_half(x: torch.Tensor) -> torch.Tensor:
34
+ x1 = x[..., : x.shape[-1] // 2]
35
+ x2 = x[..., x.shape[-1] // 2 :]
36
+ return torch.cat((-x2, x1), dim=-1)
37
+
38
+
39
+ def _apply_rotary_pos_emb(q, k, cos, sin):
40
+ # cos/sin: (batch, seq, head_dim)
41
+ cos = cos.unsqueeze(1)
42
+ sin = sin.unsqueeze(1)
43
+ return q * cos + _rotate_half(q) * sin, k * cos + _rotate_half(k) * sin
44
+
45
+
46
+ class Q50MRMSNorm(nn.Module):
47
+ def __init__(self, hidden_size: int, eps: float = 1e-6) -> None:
48
+ super().__init__()
49
+ self.weight = nn.Parameter(torch.ones(hidden_size))
50
+ self.variance_epsilon = eps
51
+
52
+ def forward(self, hidden_states: torch.Tensor) -> torch.Tensor:
53
+ input_dtype = hidden_states.dtype
54
+ hidden_states = hidden_states.to(torch.float32)
55
+ variance = hidden_states.pow(2).mean(-1, keepdim=True)
56
+ hidden_states = hidden_states * torch.rsqrt(variance + self.variance_epsilon)
57
+ return (self.weight * hidden_states.to(input_dtype)).to(input_dtype)
58
+
59
+ def extra_repr(self):
60
+ return f"{tuple(self.weight.shape)}, eps={self.variance_epsilon}"
61
+
62
+
63
+ class Q50MRotaryEmbedding(nn.Module):
64
+ def __init__(self, config: Q50MConfig, device=None):
65
+ super().__init__()
66
+ self.config = config
67
+ inv_freq = 1.0 / (
68
+ config.rope_theta
69
+ ** (torch.arange(0, config.head_dim, 2, dtype=torch.float32, device=device) / config.head_dim)
70
+ )
71
+ self.inv_freq = nn.Buffer(inv_freq, persistent=True)
72
+
73
+ @torch.no_grad()
74
+ def forward(self, x, position_ids):
75
+ inv_freq_expanded = (
76
+ self.inv_freq[None, :, None].expand(position_ids.shape[0], -1, 1)
77
+ .to(dtype=torch.float32, device=x.device)
78
+ )
79
+ position_ids_expanded = position_ids[:, None, :].float()
80
+ freqs = (inv_freq_expanded @ position_ids_expanded).transpose(1, 2)
81
+ emb = torch.cat((freqs, freqs), dim=-1)
82
+ return emb.cos().to(dtype=x.dtype), emb.sin().to(dtype=x.dtype)
83
+
84
+
85
+ class Q50MScalarGate(nn.Module):
86
+ """Content-dependent scalar gate: output = branch * multiplier * sigmoid(W x)."""
87
+
88
+ def __init__(self, hidden_size: int, multiplier: float = 2.0):
89
+ super().__init__()
90
+ self.projection = nn.Linear(hidden_size, 1, bias=False)
91
+ self.multiplier = multiplier
92
+
93
+ def forward(self, branch: torch.Tensor, residual_input: torch.Tensor) -> torch.Tensor:
94
+ return branch * self.multiplier * torch.sigmoid(self.projection(residual_input))
95
+
96
+ def reset_parameters(self):
97
+ nn.init.zeros_(self.projection.weight)
98
+
99
+
100
+ def _repeat_kv(hidden_states: torch.Tensor, n_rep: int) -> torch.Tensor:
101
+ batch, num_key_value_heads, slen, head_dim = hidden_states.shape
102
+ if n_rep == 1:
103
+ return hidden_states
104
+ hidden_states = hidden_states[:, :, None, :, :].expand(batch, num_key_value_heads, n_rep, slen, head_dim)
105
+ return hidden_states.reshape(batch, num_key_value_heads * n_rep, slen, head_dim)
106
+
107
+
108
+ def _eager_attention_forward(
109
+ module: nn.Module,
110
+ query: torch.Tensor,
111
+ key: torch.Tensor,
112
+ value: torch.Tensor,
113
+ attention_mask: torch.Tensor | None,
114
+ scaling: float,
115
+ dropout: float = 0.0,
116
+ **kwargs: Unpack[TransformersKwargs],
117
+ ):
118
+ key_states = _repeat_kv(key, module.num_key_value_groups)
119
+ value_states = _repeat_kv(value, module.num_key_value_groups)
120
+ attn_weights = torch.matmul(query, key_states.transpose(2, 3)) * scaling
121
+ if attention_mask is not None:
122
+ attn_weights = attn_weights + attention_mask
123
+ attn_weights = nn.functional.softmax(attn_weights, dim=-1, dtype=torch.float32).to(query.dtype)
124
+ attn_weights = nn.functional.dropout(attn_weights, p=dropout, training=module.training)
125
+ attn_output = torch.matmul(attn_weights, value_states)
126
+ attn_output = attn_output.transpose(1, 2).contiguous()
127
+ return attn_output, attn_weights
128
+
129
+
130
+ def _sdpa_attention_forward(
131
+ module: nn.Module,
132
+ query: torch.Tensor,
133
+ key: torch.Tensor,
134
+ value: torch.Tensor,
135
+ attention_mask: torch.Tensor | None,
136
+ scaling: float,
137
+ dropout: float = 0.0,
138
+ **kwargs: Unpack[TransformersKwargs],
139
+ ):
140
+ """Local SDPA wrapper. HF's generic SDPA interface falls back to the math
141
+ backend for GQA shapes (q heads != kv heads), which materializes
142
+ (batch, heads, seq, seq) fp32 attention scores. Expanding kv first keeps
143
+ the fused flash / memory-efficient kernels eligible."""
144
+ n_rep = getattr(module, "num_key_value_groups", 1)
145
+ if n_rep > 1:
146
+ key = _repeat_kv(key, n_rep)
147
+ value = _repeat_kv(value, n_rep)
148
+ is_causal = (
149
+ attention_mask is None
150
+ and getattr(module, "is_causal", False)
151
+ and query.shape[2] > 1
152
+ )
153
+ attn_output = nn.functional.scaled_dot_product_attention(
154
+ query,
155
+ key,
156
+ value,
157
+ attn_mask=attention_mask,
158
+ dropout_p=dropout,
159
+ is_causal=is_causal,
160
+ scale=scaling,
161
+ )
162
+ return attn_output.transpose(1, 2).contiguous(), None
163
+
164
+
165
+ class Q50MAttention(nn.Module):
166
+ def __init__(self, config: Q50MConfig, layer_idx: int):
167
+ super().__init__()
168
+ self.config = config
169
+ self.layer_idx = layer_idx
170
+ self.head_dim = config.head_dim
171
+ self.num_heads = config.num_attention_heads
172
+ self.num_kv_heads = config.num_key_value_heads
173
+ self.num_key_value_groups = self.num_heads // self.num_kv_heads
174
+ self.scaling = self.head_dim**-0.5
175
+ self.attention_dropout = config.attention_dropout
176
+ self.is_causal = True
177
+ self.use_rope = layer_idx not in config.nope_layers
178
+
179
+ inner = self.num_heads * self.head_dim
180
+ kv_inner = self.num_kv_heads * self.head_dim
181
+ self.q_proj = nn.Linear(config.hidden_size, inner, bias=False)
182
+ self.k_proj = nn.Linear(config.hidden_size, kv_inner, bias=False)
183
+ self.v_proj = nn.Linear(config.hidden_size, kv_inner, bias=False)
184
+ self.o_proj = nn.Linear(inner, config.hidden_size, bias=False)
185
+ self.q_norm = Q50MRMSNorm(self.head_dim, config.rms_norm_eps) if config.qk_norm else None
186
+ self.k_norm = Q50MRMSNorm(self.head_dim, config.rms_norm_eps) if config.qk_norm else None
187
+ self.output_gate = (
188
+ Q50MScalarGate(config.hidden_size, config.gate_multiplier)
189
+ if config.attention_scalar_gate
190
+ else None
191
+ )
192
+
193
+ def forward(
194
+ self,
195
+ hidden_states: torch.Tensor,
196
+ position_embeddings: tuple[torch.Tensor, torch.Tensor] | None = None,
197
+ attention_mask: torch.Tensor | None = None,
198
+ past_key_values: Cache | None = None,
199
+ **kwargs: Unpack[TransformersKwargs],
200
+ ) -> tuple[torch.Tensor, torch.Tensor]:
201
+ input_shape = hidden_states.shape[:-1]
202
+ hidden_shape = (*input_shape, -1, self.head_dim)
203
+ q = self.q_proj(hidden_states).view(hidden_shape).transpose(1, 2)
204
+ k = self.k_proj(hidden_states).view(hidden_shape).transpose(1, 2)
205
+ v = self.v_proj(hidden_states).view(hidden_shape).transpose(1, 2)
206
+
207
+ if self.q_norm is not None:
208
+ q = self.q_norm(q)
209
+ k = self.k_norm(k)
210
+ if self.use_rope:
211
+ cos, sin = position_embeddings
212
+ q, k = _apply_rotary_pos_emb(q, k, cos, sin)
213
+
214
+ if past_key_values is not None:
215
+ k, v = past_key_values.update(k, v, self.layer_idx)
216
+
217
+ if self.config._attn_implementation == "sdpa":
218
+ attention_interface: Callable = _sdpa_attention_forward
219
+ else:
220
+ attention_interface = ALL_ATTENTION_FUNCTIONS.get_interface(
221
+ self.config._attn_implementation, _eager_attention_forward
222
+ )
223
+ attn_output, attn_weights = attention_interface(
224
+ self,
225
+ q, k, v,
226
+ attention_mask,
227
+ dropout=0.0 if not self.training else self.attention_dropout,
228
+ scaling=self.scaling,
229
+ **kwargs,
230
+ )
231
+ attn_output = attn_output.reshape(*input_shape, -1).contiguous()
232
+ attn_output = self.o_proj(attn_output)
233
+ if self.output_gate is not None:
234
+ attn_output = self.output_gate(attn_output, hidden_states)
235
+ return attn_output, attn_weights
236
+
237
+
238
+ class Q50MMLP(nn.Module):
239
+ def __init__(self, config: Q50MConfig):
240
+ super().__init__()
241
+ self.gate_proj = nn.Linear(config.hidden_size, config.intermediate_size, bias=False)
242
+ self.up_proj = nn.Linear(config.hidden_size, config.intermediate_size, bias=False)
243
+ self.down_proj = nn.Linear(config.intermediate_size, config.hidden_size, bias=False)
244
+ self.output_gate = (
245
+ Q50MScalarGate(config.hidden_size, config.gate_multiplier)
246
+ if config.mlp_scalar_gate
247
+ else None
248
+ )
249
+
250
+ def forward(self, hidden_states):
251
+ output = self.down_proj(F.silu(self.gate_proj(hidden_states)) * self.up_proj(hidden_states))
252
+ if self.output_gate is not None:
253
+ output = self.output_gate(output, hidden_states)
254
+ return output
255
+
256
+
257
+ class Q50MDecoderLayer(GradientCheckpointingLayer):
258
+ def __init__(self, config: Q50MConfig, layer_idx: int):
259
+ super().__init__()
260
+ self.hidden_size = config.hidden_size
261
+ self.self_attn = Q50MAttention(config, layer_idx)
262
+ self.mlp = Q50MMLP(config)
263
+ self.input_layernorm = Q50MRMSNorm(config.hidden_size, eps=config.rms_norm_eps)
264
+ self.post_attention_layernorm = Q50MRMSNorm(config.hidden_size, eps=config.rms_norm_eps)
265
+
266
+ def forward(
267
+ self,
268
+ hidden_states: torch.Tensor,
269
+ attention_mask: torch.Tensor | None = None,
270
+ position_ids: torch.LongTensor | None = None,
271
+ past_key_values: Cache | None = None,
272
+ use_cache: bool | None = False,
273
+ position_embeddings: tuple[torch.Tensor, torch.Tensor] | None = None,
274
+ **kwargs: Unpack[TransformersKwargs],
275
+ ) -> torch.Tensor:
276
+ residual = hidden_states
277
+ hidden_states = self.input_layernorm(hidden_states)
278
+ hidden_states, _ = self.self_attn(
279
+ hidden_states=hidden_states,
280
+ attention_mask=attention_mask,
281
+ position_ids=position_ids,
282
+ past_key_values=past_key_values,
283
+ use_cache=use_cache,
284
+ position_embeddings=position_embeddings,
285
+ **kwargs,
286
+ )
287
+ hidden_states = residual + hidden_states
288
+
289
+ residual = hidden_states
290
+ hidden_states = self.post_attention_layernorm(hidden_states)
291
+ hidden_states = self.mlp(hidden_states)
292
+ hidden_states = residual + hidden_states
293
+ return hidden_states
294
+
295
+
296
+ class Q50MPreTrainedModel(PreTrainedModel):
297
+ config_class = Q50MConfig
298
+ base_model_prefix = "model"
299
+ supports_gradient_checkpointing = True
300
+ _no_split_modules = ["Q50MDecoderLayer"]
301
+ _skip_keys_device_placement = ["past_key_values"]
302
+ _supports_sdpa = True
303
+ _supports_flash_attn = False
304
+ _supports_flex_attn = False
305
+
306
+
307
+ class Q50MModel(Q50MPreTrainedModel):
308
+ def __init__(self, config: Q50MConfig):
309
+ super().__init__(config)
310
+ self.padding_idx = config.pad_token_id
311
+ self.vocab_size = config.vocab_size
312
+ self.embed_tokens = nn.Embedding(config.vocab_size, config.hidden_size, self.padding_idx)
313
+ self.layers = nn.ModuleList(
314
+ [Q50MDecoderLayer(config, layer_idx) for layer_idx in range(config.num_hidden_layers)]
315
+ )
316
+ self.norm = Q50MRMSNorm(config.hidden_size, eps=config.rms_norm_eps)
317
+ self.rotary_emb = Q50MRotaryEmbedding(config=config)
318
+ self.gradient_checkpointing = False
319
+ self.post_init()
320
+
321
+ def forward(
322
+ self,
323
+ input_ids: torch.LongTensor | None = None,
324
+ attention_mask: torch.Tensor | None = None,
325
+ position_ids: torch.LongTensor | None = None,
326
+ past_key_values: Cache | None = None,
327
+ inputs_embeds: torch.FloatTensor | None = None,
328
+ use_cache: bool | None = None,
329
+ rotary_position_ids: torch.LongTensor | None = None,
330
+ **kwargs: Unpack[TransformersKwargs],
331
+ ) -> BaseModelOutputWithPast:
332
+ if (input_ids is None) ^ (inputs_embeds is not None):
333
+ raise ValueError("You must specify exactly one of input_ids or inputs_embeds")
334
+
335
+ if inputs_embeds is None:
336
+ inputs_embeds = self.embed_tokens(input_ids)
337
+
338
+ if use_cache and past_key_values is None:
339
+ past_key_values = DynamicCache(config=self.config)
340
+
341
+ standard_positions = position_ids is None
342
+ if position_ids is None:
343
+ past_seen_tokens = past_key_values.get_seq_length() if past_key_values is not None else 0
344
+ position_ids = torch.arange(inputs_embeds.shape[1], device=inputs_embeds.device) + past_seen_tokens
345
+ position_ids = position_ids.unsqueeze(0)
346
+
347
+ # Unpadded, uncached SDPA can use its native causal flag, including
348
+ # under torch.compile where HF otherwise materializes a dense mask.
349
+ causal_mask = None if (
350
+ attention_mask is None and past_key_values is None and standard_positions
351
+ and self.config._attn_implementation == "sdpa"
352
+ ) else create_causal_mask(
353
+ config=self.config,
354
+ inputs_embeds=inputs_embeds,
355
+ attention_mask=attention_mask,
356
+ past_key_values=past_key_values,
357
+ position_ids=position_ids,
358
+ )
359
+
360
+ hidden_states = inputs_embeds
361
+ # Slotted Zarya keeps source positions for RoPE but attends causally in
362
+ # the permuted sequence order. Never let HF infer packed-sequence masks
363
+ # from those nonmonotonic rotary positions.
364
+ position_embeddings = self.rotary_emb(
365
+ hidden_states, position_ids=position_ids if rotary_position_ids is None else rotary_position_ids)
366
+
367
+ for decoder_layer in self.layers[: self.config.num_hidden_layers]:
368
+ if self.gradient_checkpointing and self.training:
369
+ hidden_states = self._gradient_checkpointing_func(
370
+ decoder_layer.forward,
371
+ hidden_states,
372
+ causal_mask,
373
+ position_ids,
374
+ past_key_values,
375
+ use_cache,
376
+ position_embeddings,
377
+ )
378
+ else:
379
+ hidden_states = decoder_layer(
380
+ hidden_states,
381
+ attention_mask=causal_mask,
382
+ position_embeddings=position_embeddings,
383
+ position_ids=position_ids,
384
+ past_key_values=past_key_values,
385
+ use_cache=use_cache,
386
+ **kwargs,
387
+ )
388
+
389
+ hidden_states = self.norm(hidden_states)
390
+ return BaseModelOutputWithPast(
391
+ last_hidden_state=hidden_states,
392
+ past_key_values=past_key_values,
393
+ )
394
+
395
+
396
+ class Q50MForCausalLM(Q50MPreTrainedModel, GenerationMixin):
397
+ _tied_weights_keys = {"lm_head.weight": "model.embed_tokens.weight"}
398
+
399
+ def __init__(self, config: Q50MConfig):
400
+ super().__init__(config)
401
+ self.model = Q50MModel(config)
402
+ self.vocab_size = config.vocab_size
403
+ self.lm_head = nn.Linear(config.hidden_size, config.vocab_size, bias=False)
404
+ self.post_init()
405
+
406
+ def get_input_embeddings(self):
407
+ return self.model.embed_tokens
408
+
409
+ def set_input_embeddings(self, value):
410
+ self.model.embed_tokens = value
411
+
412
+ def get_output_embeddings(self):
413
+ return self.lm_head
414
+
415
+ def forward(
416
+ self,
417
+ input_ids: torch.LongTensor | None = None,
418
+ attention_mask: torch.Tensor | None = None,
419
+ position_ids: torch.LongTensor | None = None,
420
+ past_key_values: Cache | None = None,
421
+ inputs_embeds: torch.FloatTensor | None = None,
422
+ labels: torch.LongTensor | None = None,
423
+ use_cache: bool | None = None,
424
+ logits_to_keep: int | torch.Tensor = 0,
425
+ **kwargs: Unpack[TransformersKwargs],
426
+ ) -> CausalLMOutputWithPast:
427
+ outputs = self.model(
428
+ input_ids=input_ids,
429
+ attention_mask=attention_mask,
430
+ position_ids=position_ids,
431
+ past_key_values=past_key_values,
432
+ inputs_embeds=inputs_embeds,
433
+ use_cache=use_cache,
434
+ **kwargs,
435
+ )
436
+ hidden_states = outputs.last_hidden_state
437
+ slice_indices = slice(-logits_to_keep, None) if isinstance(logits_to_keep, int) else logits_to_keep
438
+ logits = self.lm_head(hidden_states[:, slice_indices, :])
439
+
440
+ loss = None
441
+ if labels is not None:
442
+ shift_logits = logits[..., :-1, :].contiguous()
443
+ shift_labels = labels[..., 1:].contiguous()
444
+ loss = F.cross_entropy(
445
+ shift_logits.view(-1, shift_logits.size(-1)),
446
+ shift_labels.view(-1),
447
+ ignore_index=-100,
448
+ )
449
+ return CausalLMOutputWithPast(
450
+ loss=loss,
451
+ logits=logits,
452
+ past_key_values=outputs.past_key_values,
453
+ )
modeling_qmod.py ADDED
@@ -0,0 +1,259 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Sparse whole-block routing with top-k training and causal threshold inference.
2
+
3
+ Raposo et al., arXiv:2404.02258, sections 3.4/3.5 (same-router BCE option).
4
+ Only selected tokens enter attention AND SwiGLU. Original RoPE positions and
5
+ sequence order survive packing. Eval never uses sequence-wide top-k decisions.
6
+ """
7
+ import copy
8
+
9
+ import torch
10
+ from torch import nn
11
+ from torch.nn import functional as F
12
+ from transformers.cache_utils import DynamicCache
13
+ from transformers.modeling_outputs import BaseModelOutputWithPast
14
+
15
+ from .modeling_q50m import (
16
+ Q50MDecoderLayer, Q50MForCausalLM, Q50MPreTrainedModel,
17
+ Q50MRMSNorm, Q50MRotaryEmbedding,
18
+ )
19
+ from .configuration_qmod import QMoDConfig
20
+
21
+
22
+ class QMoDCache(DynamicCache):
23
+ """Packed per-layer KV with source positions, validity and a global clock.
24
+
25
+ Padding between batch members/chunks can remain in storage; masked entries
26
+ never become keys. The clock counts source tokens, not sparse KV entries.
27
+ """
28
+ def __init__(self, config):
29
+ super().__init__(config=config)
30
+ self.seen_tokens = 0
31
+ self.token_positions = [None] * config.num_hidden_layers
32
+ self.valid_tokens = [None] * config.num_hidden_layers
33
+
34
+ def get_seq_length(self, layer_idx=0):
35
+ return self.seen_tokens
36
+
37
+ def append_metadata(self, layer_idx, positions, valid):
38
+ old = self.token_positions[layer_idx]
39
+ self.token_positions[layer_idx] = positions if old is None else torch.cat((old, positions), -1)
40
+ old_valid = self.valid_tokens[layer_idx]
41
+ self.valid_tokens[layer_idx] = valid if old_valid is None else torch.cat((old_valid, valid), -1)
42
+ return self.token_positions[layer_idx], self.valid_tokens[layer_idx]
43
+
44
+ def reorder_cache(self, beam_idx):
45
+ super().reorder_cache(beam_idx)
46
+ for i, positions in enumerate(self.token_positions):
47
+ if positions is not None:
48
+ self.token_positions[i] = positions.index_select(0, beam_idx.to(positions.device))
49
+ self.valid_tokens[i] = self.valid_tokens[i].index_select(0, beam_idx.to(positions.device))
50
+
51
+ def batch_repeat_interleave(self, repeats):
52
+ super().batch_repeat_interleave(repeats)
53
+ for i, positions in enumerate(self.token_positions):
54
+ if positions is not None:
55
+ self.token_positions[i] = positions.repeat_interleave(repeats, dim=0)
56
+ self.valid_tokens[i] = self.valid_tokens[i].repeat_interleave(repeats, dim=0)
57
+
58
+ def batch_select_indices(self, indices):
59
+ self.reorder_cache(indices)
60
+
61
+ def crop(self, max_length):
62
+ raise NotImplementedError("QMoD packed cache does not support assisted-decoding rollback")
63
+
64
+ def reset(self):
65
+ # DynamicLayer.reset retains storage, which would desynchronize metadata.
66
+ for layer in self.layers:
67
+ if layer.is_initialized:
68
+ layer.keys = layer.keys[..., :0, :]
69
+ layer.values = layer.values[..., :0, :]
70
+ self.seen_tokens = 0
71
+ self.token_positions = [None] * len(self.layers)
72
+ self.valid_tokens = [None] * len(self.layers)
73
+
74
+
75
+ def gather_tokens(x, indices):
76
+ return x.gather(1, indices[..., None].expand(-1, -1, x.shape[-1]))
77
+
78
+
79
+ class QMoDDecoderLayer(Q50MDecoderLayer):
80
+ def __init__(self, config, layer_idx):
81
+ block_config = copy.deepcopy(config)
82
+ self.routed = layer_idx in config.mod_layers
83
+ if self.routed:
84
+ block_config.intermediate_size = config.mod_intermediate_size
85
+ super().__init__(block_config, layer_idx)
86
+ self.config = config
87
+ self.layer_idx = layer_idx
88
+ self.router = nn.Linear(config.hidden_size, 1, bias=False) if self.routed else None
89
+
90
+ def route(self, hidden_states, valid):
91
+ # FP32 router and BCE, also when the block runs in BF16 autocast.
92
+ with torch.autocast(device_type=hidden_states.device.type, enabled=False):
93
+ logits = F.linear(hidden_states.float(), self.router.weight.float()).squeeze(-1)
94
+ if self.training:
95
+ # Deterministic tie breaking preserves checkpoint replay. Capacity is
96
+ # per valid sequence, never per batch and never allocated to padding.
97
+ counts = torch.ceil(valid.sum(-1) * self.config.mod_capacity).long()
98
+ order = logits.detach().masked_fill(~valid, -torch.inf).argsort(dim=-1, descending=True, stable=True)
99
+ ranks = torch.empty_like(order).scatter(1, order, torch.arange(order.shape[1], device=order.device).expand_as(order))
100
+ selected = (ranks < counts[:, None]) & valid
101
+ bce = F.binary_cross_entropy_with_logits(logits, selected.float(), reduction="none")
102
+ aux = (bce * valid).sum() / valid.sum().clamp_min(1)
103
+ else:
104
+ # No top-k, capacity clipping or sequence normalization in eval:
105
+ # changing future tokens must not alter any prefix routing decision.
106
+ selected = (logits > 0) & valid
107
+ aux = logits.new_zeros(())
108
+ return logits, selected, aux
109
+
110
+ def forward(self, hidden_states, valid, token_positions, position_embeddings, past_key_values=None):
111
+ batch, seq, _ = hidden_states.shape
112
+ zero = hidden_states.new_zeros((), dtype=torch.float32)
113
+ if self.routed:
114
+ logits, selected, aux = self.route(hidden_states, valid)
115
+ count = selected.sum(-1)
116
+ width = int(count.max().item())
117
+ stats = torch.stack((selected.sum() / valid.sum().clamp_min(1),
118
+ (((logits > 0) != selected) & valid).sum() / valid.sum().clamp_min(1))).detach()
119
+ if width == 0:
120
+ return hidden_states, aux, stats
121
+ # Sort by ORIGINAL time, not router score. Surplus entries are dummy
122
+ # slots for shorter batch members, excluded from keys and scatter.
123
+ order = torch.arange(seq, device=hidden_states.device).expand(batch, -1)
124
+ indices = order.masked_fill(~selected, seq).sort(-1).values[:, :width].clamp_max(seq - 1)
125
+ packed_valid = torch.arange(width, device=hidden_states.device)[None, :] < count[:, None]
126
+ packed = gather_tokens(hidden_states, indices)
127
+ positions = token_positions.gather(1, indices)
128
+ rotary = tuple(gather_tokens(x, indices) for x in position_embeddings)
129
+ else:
130
+ aux, stats = zero, torch.stack((zero, zero))
131
+ packed, packed_valid, positions, rotary = hidden_states, valid, token_positions, position_embeddings
132
+
133
+ key_positions, key_valid = positions, packed_valid
134
+ if past_key_values is not None:
135
+ key_positions, key_valid = past_key_values.append_metadata(self.layer_idx, positions, packed_valid)
136
+ # The common unpadded training path can use fused SDPA's causal flag.
137
+ mask = None
138
+ if not (past_key_values is None and self.config._attn_implementation == "sdpa"
139
+ and bool(packed_valid.all())):
140
+ allowed = (key_positions[:, None, :] <= positions[:, :, None]) & key_valid[:, None, :]
141
+ mask = packed.new_zeros((batch, 1, packed.shape[1], key_positions.shape[1]))
142
+ mask.masked_fill_(~allowed[:, None], torch.finfo(packed.dtype).min)
143
+ transformed = super().forward(packed, attention_mask=mask,
144
+ position_embeddings=rotary, past_key_values=past_key_values)
145
+ if not self.routed:
146
+ return torch.where(valid[..., None], transformed, hidden_states), aux, stats
147
+ # Weight the residual UPDATE, never the identity/skip path. Raw scalar
148
+ # weights follow equation (1); sigmoid is only the BCE interpretation.
149
+ update = (transformed - packed) * logits.gather(1, indices)[..., None].to(packed.dtype)
150
+ update = update * packed_valid[..., None]
151
+ result = hidden_states.scatter_add(1, indices[..., None].expand_as(update), update)
152
+ return result, aux, stats
153
+
154
+
155
+ class QMoDModel(Q50MPreTrainedModel):
156
+ config_class = QMoDConfig
157
+ _no_split_modules = ["QMoDDecoderLayer"]
158
+
159
+ def __init__(self, config):
160
+ super().__init__(config)
161
+ self.embed_tokens = nn.Embedding(config.vocab_size, config.hidden_size, config.pad_token_id)
162
+ self.layers = nn.ModuleList([QMoDDecoderLayer(config, i) for i in range(config.num_hidden_layers)])
163
+ self.norm = Q50MRMSNorm(config.hidden_size, config.rms_norm_eps)
164
+ self.rotary_emb = Q50MRotaryEmbedding(config)
165
+ self.gradient_checkpointing = False
166
+ self.router_loss = None
167
+ self.last_router_metrics = {}
168
+ self.post_init()
169
+
170
+ def forward(self, input_ids=None, attention_mask=None, position_ids=None,
171
+ past_key_values=None, inputs_embeds=None, use_cache=None, **kwargs):
172
+ if (input_ids is None) == (inputs_embeds is None):
173
+ raise ValueError("Specify exactly one of input_ids or inputs_embeds")
174
+ if self.training and (use_cache or past_key_values is not None):
175
+ raise ValueError("MoD top-k training does not support a KV cache; use model.eval() for inference")
176
+ if past_key_values is not None and not isinstance(past_key_values, QMoDCache):
177
+ raise ValueError("QMoD requires its own packed QMoDCache")
178
+ if inputs_embeds is None:
179
+ inputs_embeds = self.embed_tokens(input_ids)
180
+ batch, seq, _ = inputs_embeds.shape
181
+ if seq == 0:
182
+ raise ValueError("Input sequence must not be empty")
183
+ if use_cache and past_key_values is None:
184
+ past_key_values = QMoDCache(self.config)
185
+ past = 0 if past_key_values is None else past_key_values.get_seq_length()
186
+ positions = torch.arange(past, past + seq, device=inputs_embeds.device).expand(batch, -1)
187
+ valid = torch.ones((batch, seq), dtype=torch.bool, device=inputs_embeds.device)
188
+ if attention_mask is not None:
189
+ if attention_mask.ndim != 2 or attention_mask.shape != (batch, past + seq):
190
+ raise ValueError("QMoD expects a 2D attention_mask covering the full cached + current sequence")
191
+ valid = attention_mask[:, -seq:].to(device=inputs_embeds.device, dtype=torch.bool)
192
+ if position_ids is None:
193
+ position_ids = positions if attention_mask is None else attention_mask.long().cumsum(-1)[:, -seq:] - 1
194
+ position_ids = position_ids.clamp_min(0)
195
+ position_ids = position_ids.to(inputs_embeds.device).expand(batch, seq)
196
+ rotary = self.rotary_emb(inputs_embeds, position_ids)
197
+ hidden = inputs_embeds
198
+ losses = []
199
+ self.router_loss = None
200
+ self.last_router_metrics = {}
201
+ for i, layer in enumerate(self.layers):
202
+ if self.gradient_checkpointing and self.training:
203
+ hidden, aux, stats = self._gradient_checkpointing_func(
204
+ layer.forward, hidden, valid, positions, rotary)
205
+ else:
206
+ hidden, aux, stats = layer(hidden, valid, positions, rotary, past_key_values=past_key_values)
207
+ if layer.routed:
208
+ losses.append(aux)
209
+ self.last_router_metrics[f"mod/layer_{i}/selected_fraction"] = stats[0]
210
+ self.last_router_metrics[f"mod/layer_{i}/threshold_disagreement"] = stats[1]
211
+ if self.training:
212
+ self.router_loss = torch.stack(losses).mean() if losses else hidden.sum() * 0
213
+ if past_key_values is not None:
214
+ past_key_values.seen_tokens += seq
215
+ return BaseModelOutputWithPast(last_hidden_state=self.norm(hidden), past_key_values=past_key_values)
216
+
217
+
218
+ class QMoDForCausalLM(Q50MForCausalLM):
219
+ config_class = QMoDConfig
220
+ _no_split_modules = ["QMoDDecoderLayer"]
221
+
222
+ def __init__(self, config):
223
+ Q50MPreTrainedModel.__init__(self, config)
224
+ self.model = QMoDModel(config)
225
+ self.vocab_size = config.vocab_size
226
+ self.lm_head = nn.Linear(config.hidden_size, config.vocab_size, bias=False)
227
+ self.post_init()
228
+
229
+ @classmethod
230
+ def _supports_default_dynamic_cache(cls):
231
+ return False
232
+
233
+ def forward(self, *args, **kwargs):
234
+ out = super().forward(*args, **kwargs)
235
+ if out.loss is not None and self.training:
236
+ out.loss = out.loss + self.consume_router_loss()
237
+ return out
238
+
239
+ def consume_router_loss(self, metrics=None):
240
+ aux = self.model.router_loss
241
+ if aux is None:
242
+ raise RuntimeError("Consume router loss once after a training forward")
243
+ self.model.router_loss = None
244
+ if metrics is not None:
245
+ metrics["train/mod_router_bce_raw"] = aux.detach()
246
+ metrics["train/mod_router_bce_weighted"] = aux.detach() * self.config.router_aux_coef
247
+ return aux * self.config.router_aux_coef
248
+
249
+ def router_metrics(self):
250
+ return self.model.last_router_metrics.copy()
251
+
252
+ def parameter_budget(self):
253
+ total = sum(p.numel() for p in self.parameters())
254
+ conditional = sum(p.numel() for layer in self.model.layers if layer.routed
255
+ for name, p in layer.named_parameters() if not name.startswith("router."))
256
+ return {"total": total, "always_active": total - conditional,
257
+ "expected_active_training": total - conditional + self.config.mod_capacity * conditional,
258
+ "active_min": total - conditional, "active_max": total,
259
+ "capacity": self.config.mod_capacity}
release-manifest.json ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "repo": "d0rj/q-mod-51M-base",
3
+ "source_run": "q-mod-total-v1",
4
+ "weights_sha256": "e5be4b27775d846ab2e65293a83f647d89ba2e0a606c00645fa892b21f6d5cd3",
5
+ "files_sha256": {
6
+ "README.md": "1ca5a8137f256573c7e04ade31e0b6b142606f9643e134703ae2f2eaef21c49f",
7
+ "config.json": "bac171e1314be5dd05458a4ee532f6999f8f82145b184278ddae286ed4e92d96",
8
+ "configuration_q50m.py": "796806b2d5d982b633796bc7de53c3073b1b6e52d259f44ef798b63f55eaea92",
9
+ "configuration_qmod.py": "82dd452f9c193d85f3e2a001075c5728297f523aa9314aad8095ebda64498db9",
10
+ "evaluation/continuation.json": "3b31fcaa4f71b0f317100a1b37b94481bb3773046676f909dec2f545c54ef40b",
11
+ "evaluation/raw/arc_challenge.json": "f5efc3025bb25c50c5017030cb36f77de89afaf762d8990dc82304ef99454d58",
12
+ "evaluation/raw/arc_easy.json": "ebe51440ccfc39c2b605ecb210d1aa3d7152cc2941906b72b35594a2afb56b34",
13
+ "evaluation/raw/arithmark3.json": "02c6c465acd3c3b7472e5f33890f841bac021be2608c7a50fb4a8007e09fefd1",
14
+ "evaluation/raw/balanced_copa.json": "9abed3267bb970d308a99687f73347bf6093126c89fdf40f35f8e665a6f47c7c",
15
+ "evaluation/raw/bananamind_base.json": "7d1893178aee2b2c2f9a13b345c405a5b1cb0efed70f574d31e32d449904fb43",
16
+ "evaluation/raw/blimp.json": "75189517422b1f0dc53fb4dbcf810b32ac9f40dfe64dab96df6e524ffe9318da",
17
+ "evaluation/raw/boolq.json": "9a3b1d284692559f2af9eb3bc1bd099e6ed785ad49c0abcaca8527c1aab4f8ff",
18
+ "evaluation/raw/commonsense_qa.json": "5968567f6503d5ba2924a34c4e7bd017c341dd7b98de53bddfbc80e21c82720b",
19
+ "evaluation/raw/hellaswag.json": "70c7f8f0f310bad716da22939e4ea8651e35d8262cf7a0688da7c0ee93cba0ef",
20
+ "evaluation/raw/lambada_openai.json": "f73b22ca335b65a93dc0c7c84fb6d624d96bab4ac8033ee3d09ff64ae1be1627",
21
+ "evaluation/raw/mmlu_continuation.json": "b9cbea26d9c7326596e7220d5fc4b75323207a2a25eee724155d8aca7e78b249",
22
+ "evaluation/raw/openbookqa.json": "398ce770d102c1d5b33ac91c684b3090c2f5d935253b7c1ef54b01e4a05c08e4",
23
+ "evaluation/raw/piqa.json": "c2d4b2727900015aa72ab771afd02e18a7086d31e744e85d785881c5ac132b33",
24
+ "evaluation/raw/sciq.json": "7cb4cd157ad4871d5063c07feedaa3976f63fb450e5e2f2cc856860b60cd9665",
25
+ "evaluation/raw/truthfulqa_mc2.json": "0c85b79db33e94c60bcf454318ecfdd19641326c1bd57d146833c1857429f5e4",
26
+ "evaluation/raw/winogrande.json": "00c93cb02ff2d9638d4392d90a73a968694febf6d246b53b6b5195f17bf96bf3",
27
+ "evaluation/repro/comparison_runner/__init__.py": "e49e80f7be3ab6e200f0db14b028e465de9caa8f6f705430eabce0c41b8322ba",
28
+ "evaluation/repro/comparison_runner/adapters.py": "8e64e5542bbcb0f9ad448b320e712916a9559823987e298b22321a8d8e2f727f",
29
+ "evaluation/repro/comparison_runner/catalog.py": "2fd29084ec780539023a38bcbfd7302931fa6be48624e227875f13518a1b986f",
30
+ "evaluation/repro/comparison_runner/continuation.py": "4f4143c828d4f94a851bcbf8a466d3e1b3e9eaec1027970a426208cc0ff4f4db",
31
+ "evaluation/repro/comparison_runner/losses.py": "592a05287369f6e5077b3faca404a9392de4772cf06389fb8aa7e36924e74f86",
32
+ "evaluation/repro/comparison_runner/tasks/balanced_copa.yaml": "f47baa6a713e15f7a5600ed257f316f8c54252bf4977bbc716a6da7aa580f05d",
33
+ "evaluation/repro/comparison_runner/tasks/balanced_copa_test.yaml": "dce21ad70b395d8d576c584be1b87ebae846e360e59878030645215a387b28e6",
34
+ "evaluation/repro/comparison_runner/token_continuation.py": "e8d88cd4aca51ca2fda07f2b799a54612d0e2964a98e05824a135bea1a533550",
35
+ "evaluation/repro/continuation.py": "6d3e1743047002e6eb33f3149f1e505ed5f97d202622ba7e2f2df1e7f0f02ee9",
36
+ "evaluation/repro/requirements.txt": "2d5c31a7bf4bca6fd361ae94be46f5e2cf52dd1d13ce039a8ed5080dfa5b6cf3",
37
+ "evaluation/repro/run.py": "04eef40e03f24ce432c8062b41fb3604059016a9ea72ac18194eacf6ba05ebaf",
38
+ "evaluation/results.json": "dcda27cae5a1e4437f1d4d634fe57cf6ad609603e33d524fe209792157254309",
39
+ "generation_config.json": "a9dd7c763300c1e5dcc5341ee772e2c4f35abfc11da7ec1aec986477f207f5c8",
40
+ "model.safetensors": "e5be4b27775d846ab2e65293a83f647d89ba2e0a606c00645fa892b21f6d5cd3",
41
+ "modeling_q50m.py": "b68abce1f19a36deb39c4ac4e520ffaab0c879d8a7cc2abef35f014bacc011f2",
42
+ "modeling_qmod.py": "eceb59328374894893d5c0798708fd1e9575d67bf9a3d2c7a1b53f780d801e37",
43
+ "requirements.txt": "a2b109a8c01d0c30dae771b2232700311d3ed6c280f1d5b3ae880d02adca09fa",
44
+ "tensorboard/events.out.tfevents.1790785789.DESKTOP-OU3A33R.14755.0": "76005dc07e72c936f1e6728c11596f6a3bf4e7b1aaf6e48454bf0406cce61ea9",
45
+ "tensorboard/events.out.tfevents.1790874945.DESKTOP-OU3A33R.25655.2.continuation-release-20261001": "e6e871852bd7198579fa7c42d86fb8070d87251c5cd7d54af223a406a30de825",
46
+ "tensorboard/events.out.tfevents.1790878703.DESKTOP-OU3A33R.32581.0.eval": "ee3978fb6340c4d6b62e4c4a25d9d6c984f20414e473a2de096925ac785ba1ca",
47
+ "tensorboard/events.out.tfevents.1790878760.DESKTOP-OU3A33R.32581.1.eval": "652a6f405bfdd73bfa84c9ee90dd9925ef9b6d1aec3cfb7fb91285581179229d",
48
+ "tensorboard/events.out.tfevents.1790878791.DESKTOP-OU3A33R.32581.2.eval": "bbdb8af7f01195dc4b85404d513de905c0931c09c0cd9332e11d8b893a07b361",
49
+ "tensorboard/events.out.tfevents.1790878814.DESKTOP-OU3A33R.32581.3.eval": "88005a681436a2b357d42fd67e4e44262c0cfe65e0f9de789e41cc03dc0e210c",
50
+ "tensorboard/events.out.tfevents.1790878826.DESKTOP-OU3A33R.32581.4.eval": "8000c7f98338021622d91eab8549927b8da85657c434449d5a43ffeb4319160f",
51
+ "tensorboard/events.out.tfevents.1790878836.DESKTOP-OU3A33R.32581.5.eval": "91fe5a391f512fedaf1228b202aa5a206e1e37dc79ed719774c1701fda38fd59",
52
+ "tensorboard/events.out.tfevents.1790878859.DESKTOP-OU3A33R.32581.6.eval": "9b07cdcd9c667ceee6b5d9ec7f6c1a26c93b513cdcc635f0fd2eb7de9ace325d",
53
+ "tensorboard/events.out.tfevents.1790878893.DESKTOP-OU3A33R.32581.7.eval": "fda9cc55438813ffe8a6ff0e50426b20ea7b883244dff8afcca2068738a61850",
54
+ "tensorboard/events.out.tfevents.1790878916.DESKTOP-OU3A33R.32581.8.eval": "3da90b5bac05951a954bd7900f455ff09f545e0d1652b85e7d060b05070e23a4",
55
+ "tensorboard/events.out.tfevents.1790878934.DESKTOP-OU3A33R.32581.9.eval": "df5cb6a3c6760dbd4e689dc072c4640e2eb94eea40be38ef453a4dcf13ec1818",
56
+ "tensorboard/events.out.tfevents.1790879411.DESKTOP-OU3A33R.32581.10.eval": "af81181e46c14ec75fe556f24a8e332df8d47419ead5ab5f65d234168094ddca",
57
+ "tensorboard/events.out.tfevents.1790879418.DESKTOP-OU3A33R.32581.11.eval": "93d757cf5534204e23b4af7e755ff32e2d13dc7f55acbbd1980b3744ccf49600",
58
+ "tensorboard/events.out.tfevents.1790879558.DESKTOP-OU3A33R.32581.12.eval": "8ce66c7b838c47bf28380f6266a36550ce5d4427ce368c24e7814e270a8bc6b7",
59
+ "tensorboard/events.out.tfevents.1790879569.DESKTOP-OU3A33R.32581.13.eval": "59cd365bc84b14dae49ec6bff8e9399b0af465775f1e470227b0724109a3f0cf",
60
+ "tensorboard/events.out.tfevents.1790879590.DESKTOP-OU3A33R.32581.14.eval": "3f80079f9bcab184bcddc4c0d34c0ea53e8e80ef41a33bc55426ad7936a328e0",
61
+ "tensorboard/events.out.tfevents.1790879593.DESKTOP-OU3A33R.32581.15.eval": "84a001d26d212b48301e439d9219a352b79536be1b0d1044633ffa6796e881d8",
62
+ "tokenizer.json": "6155a4212832ddd656acd1cd45ab4acb327dbb080e3acdbec84f086adf17414e",
63
+ "tokenizer_config.json": "cccfc292e0846e8ab8aa04dafae32483a831bcf1df6f15100f82d306b4a9f4c6",
64
+ "training_config.json": "693c8b3ad22d53ea736ea44a6b9a5fc7b1c6062d98be8bec392dce8879f3f826"
65
+ },
66
+ "validation": {
67
+ "logits_bitwise_equal": true,
68
+ "controls": 3,
69
+ "tokenizer_vocabulary_identical": true,
70
+ "parameters": 50919168,
71
+ "greedy_cache_parity": true,
72
+ "generated_ids": [
73
+ [
74
+ [
75
+ 463,
76
+ 2934,
77
+ 283,
78
+ 4226,
79
+ 314,
80
+ 265,
81
+ 2046,
82
+ 283,
83
+ 6270,
84
+ 17,
85
+ 366,
86
+ 2046,
87
+ 283
88
+ ]
89
+ ],
90
+ [
91
+ [
92
+ 9632,
93
+ 7295,
94
+ 786,
95
+ 314,
96
+ 261,
97
+ 1035,
98
+ 904,
99
+ 292,
100
+ 853,
101
+ 265,
102
+ 683,
103
+ 576
104
+ ]
105
+ ],
106
+ [
107
+ [
108
+ 463,
109
+ 7371,
110
+ 353,
111
+ 8896,
112
+ 287,
113
+ 265,
114
+ 4071,
115
+ 17,
116
+ 1023,
117
+ 353,
118
+ 433,
119
+ 8896,
120
+ 287,
121
+ 265,
122
+ 1031,
123
+ 4071
124
+ ]
125
+ ]
126
+ ],
127
+ "weights_sha256": "e5be4b27775d846ab2e65293a83f647d89ba2e0a606c00645fa892b21f6d5cd3",
128
+ "output": "hf_exports/pending-20261001/q-mod/q_mod",
129
+ "source_sha256": {
130
+ "configuration_q50m.py": "796806b2d5d982b633796bc7de53c3073b1b6e52d259f44ef798b63f55eaea92",
131
+ "configuration_qmod.py": "82dd452f9c193d85f3e2a001075c5728297f523aa9314aad8095ebda64498db9",
132
+ "modeling_q50m.py": "b68abce1f19a36deb39c4ac4e520ffaab0c879d8a7cc2abef35f014bacc011f2",
133
+ "modeling_qmod.py": "eceb59328374894893d5c0798708fd1e9575d67bf9a3d2c7a1b53f780d801e37"
134
+ }
135
+ },
136
+ "tasks": [
137
+ "hellaswag",
138
+ "arc_easy",
139
+ "arc_challenge",
140
+ "piqa",
141
+ "winogrande",
142
+ "openbookqa",
143
+ "boolq",
144
+ "lambada_openai",
145
+ "arithmark3",
146
+ "balanced_copa",
147
+ "blimp",
148
+ "commonsense_qa",
149
+ "mmlu_continuation",
150
+ "sciq",
151
+ "truthfulqa_mc2",
152
+ "bananamind_base"
153
+ ],
154
+ "parameters": 50919168,
155
+ "source_tokens": 3932160000,
156
+ "optimizer_step": 15000
157
+ }
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ torch==2.11.0
2
+ transformers==5.17.0
3
+ tokenizers>=0.22
4
+ safetensors>=0.4
tensorboard/events.out.tfevents.1790785789.DESKTOP-OU3A33R.14755.0 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:76005dc07e72c936f1e6728c11596f6a3bf4e7b1aaf6e48454bf0406cce61ea9
3
+ size 1591094
tensorboard/events.out.tfevents.1790874945.DESKTOP-OU3A33R.25655.2.continuation-release-20261001 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e6e871852bd7198579fa7c42d86fb8070d87251c5cd7d54af223a406a30de825
3
+ size 1562
tensorboard/events.out.tfevents.1790878703.DESKTOP-OU3A33R.32581.0.eval ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ee3978fb6340c4d6b62e4c4a25d9d6c984f20414e473a2de096925ac785ba1ca
3
+ size 3759
tensorboard/events.out.tfevents.1790878760.DESKTOP-OU3A33R.32581.1.eval ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:652a6f405bfdd73bfa84c9ee90dd9925ef9b6d1aec3cfb7fb91285581179229d
3
+ size 3457
tensorboard/events.out.tfevents.1790878791.DESKTOP-OU3A33R.32581.2.eval ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bbdb8af7f01195dc4b85404d513de905c0931c09c0cd9332e11d8b893a07b361
3
+ size 3529
tensorboard/events.out.tfevents.1790878814.DESKTOP-OU3A33R.32581.3.eval ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:88005a681436a2b357d42fd67e4e44262c0cfe65e0f9de789e41cc03dc0e210c
3
+ size 3236
tensorboard/events.out.tfevents.1790878826.DESKTOP-OU3A33R.32581.4.eval ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8000c7f98338021622d91eab8549927b8da85657c434449d5a43ffeb4319160f
3
+ size 3567
tensorboard/events.out.tfevents.1790878836.DESKTOP-OU3A33R.32581.5.eval ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:91fe5a391f512fedaf1228b202aa5a206e1e37dc79ed719774c1701fda38fd59
3
+ size 3452
tensorboard/events.out.tfevents.1790878859.DESKTOP-OU3A33R.32581.6.eval ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9b07cdcd9c667ceee6b5d9ec7f6c1a26c93b513cdcc635f0fd2eb7de9ace325d
3
+ size 3059
tensorboard/events.out.tfevents.1790878893.DESKTOP-OU3A33R.32581.7.eval ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fda9cc55438813ffe8a6ff0e50426b20ea7b883244dff8afcca2068738a61850
3
+ size 3332
tensorboard/events.out.tfevents.1790878916.DESKTOP-OU3A33R.32581.8.eval ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3da90b5bac05951a954bd7900f455ff09f545e0d1652b85e7d060b05070e23a4
3
+ size 3020