Mapika commited on
Commit
8ac1efa
·
verified ·
1 Parent(s): 09e9e33

decider-12b v2: merged state-tracking LoRA (rank 32) on Gemma-4-12B-it; T choice 1.5 / noul 0.05 / score 1.0; v1 kept under tag v1

Browse files
Files changed (3) hide show
  1. README.md +54 -39
  2. decider_config.json +4 -4
  3. model.safetensors +1 -1
README.md CHANGED
@@ -8,8 +8,8 @@ tags: [decision-model, calibrated, structured-output, system-one, one-pass]
8
 
9
  # decider-12b: typed decisions with calibrated probabilities in one forward pass, on Gemma-4-12B-it
10
 
11
- decider-12b is [google/gemma-4-12B-it](https://huggingface.co/google/gemma-4-12B-it) (revision `707f0a3b`) with its weights
12
- unchanged, read through the decider readout. It is not trained further.
13
 
14
  - **Input:** a state and one or more typed questions (Choice, Noul yes/no, Score), each with an explicit option list.
15
  - **Output:** a probability distribution over the options for every question, from one forward pass. There is no decoding and
@@ -18,7 +18,11 @@ unchanged, read through the decider readout. It is not trained further.
18
  final-logit softcapping applied.
19
  - **Temperatures:** one per answer type, in `decider_config.json`.
20
 
21
- This repository holds the bf16 weights as published by Google, the chat template, and `decider_config.json`.
 
 
 
 
22
 
23
  ## Usage
24
 
@@ -33,51 +37,62 @@ d.system_one(state, {"refund": {"type": "noul", "instructions": "Is the refund a
33
 
34
  Serving: `DECIDER_MODEL=Mapika/decider-12b uvicorn decider.serve:app` (POST `/v1/systemone`, the System One wire format).
35
 
36
- ## Temperatures
37
-
38
- | type | T | fitted on (our own rows, no JevBench or Decision Index items) |
39
- |---|---|---|
40
- | Choice | 4.0 | NLL and top-label ECE over 2,113 Choice rows (human-labelled public sets, held-out generated decision families, teacher-written document questions) |
41
- | Noul | 1.0 | 685 Noul rows plus the 204-item fit half of a fresh authored yes/no set |
42
- | Score | 3.5 | 246 Score rows |
43
-
44
- Choice accuracy does not depend on T, so its temperature is chosen for calibration only:
45
- - ECE 0.243 at T 1.0, 0.026 at T 4.0.
46
-
47
- Noul is kept sharp. JevBench v1.5 counts a yes/no answer with P(yes) between 0.2 and 0.8 as wrong:
48
- - on the fresh set, T 2.0 would lower ECE from 0.140 to 0.096 but cost 16 chance-corrected points.
 
 
 
49
 
50
- Score is read as the expected level:
51
- - T 3.5 gives chance-corrected competence 59.9 (60.4 at best, 57.1 at T 1.0), with top-label ECE 0.044 (0.241 at T 1.0).
52
-
53
- ## Measurements (decider-ai 1.7.0, one B300)
54
 
55
- | set | decider-12b | decider-4b v2 | decider-35b-a3b |
56
  |---|---|---|---|
57
- | JevBench public items, accuracy easy / standard / hard | 1.000 / 0.986 / 0.730 | 1.000 / 0.986 / 0.676 | 1.000 / 0.972 / 0.676 |
58
- | JevBench public hard tier, top-label ECE | 0.106 | 0.104 | 0.157 |
59
- | fresh 399-item yes/no set, v1.5 chance-corrected Noul score | 61.2 | 1.0 | 21.0 |
60
- | the same, argmax accuracy / share of answers between 0.2 and 0.8 | 0.822 / 4 % | 0.717 / 38 % | 0.737 / 21 % |
61
- | latency per decision, serial, p50 / p95 | 20 ms / 155 ms | 33 ms / 55 ms | |
62
 
63
- About the fresh yes/no set:
64
- - 319 items were written and reviewed for this model family's evaluation. 80 are generated state-tracking logs with
65
- computed answers.
66
- - The set was not used for anything but the Noul temperature, which was fitted on its fit half.
67
 
68
- About the JevBench public items:
69
- - They were read for measurement only.
70
- - They were not used for training, temperatures or any choice in this repository.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
 
72
  ## Limitations
73
 
74
- - The model is stock Gemma-4-12B-it. Its strengths and failure modes are the base model's. The one change is the readout: one
75
- forward pass with the probabilities read at a fixed answer slot.
76
- - Choice probabilities at T 4.0 are calibrated on our rows. Per-dataset calibration still varies (knowledge multiple choice is
77
- underconfident, hard reasoning overconfident).
78
- - Weakest measured area: state-tracking logs, with argmax accuracy 0.69 on the fresh set.
79
 
80
  ## Licence
81
 
82
- Weights: google/gemma-4-12B-it, Apache-2.0 as published by Google.
83
  Readout code: Apache-2.0 (github.com/Mapika/decider).
 
8
 
9
  # decider-12b: typed decisions with calibrated probabilities in one forward pass, on Gemma-4-12B-it
10
 
11
+ decider-12b is [google/gemma-4-12B-it](https://huggingface.co/google/gemma-4-12B-it) (revision `707f0a3b`) read through
12
+ the decider readout.
13
 
14
  - **Input:** a state and one or more typed questions (Choice, Noul yes/no, Score), each with an explicit option list.
15
  - **Output:** a probability distribution over the options for every question, from one forward pass. There is no decoding and
 
18
  final-logit softcapping applied.
19
  - **Temperatures:** one per answer type, in `decider_config.json`.
20
 
21
+ **Version 2 (2026-09-29, this revision):** a merged LoRA fine-tune (state tracking) on top of the stock weights.
22
+ - Only the 328 attention and MLP projection matrices differ from Google's weights. The config, tokenizer and chat template are
23
+ Google's files unchanged.
24
+ - **Version 1** is stock Gemma-4-12B-it with no training. It is kept under the tag `v1`:
25
+ `Decider("Mapika/decider-12b", revision="v1")`.
26
 
27
  ## Usage
28
 
 
37
 
38
  Serving: `DECIDER_MODEL=Mapika/decider-12b uvicorn decider.serve:app` (POST `/v1/systemone`, the System One wire format).
39
 
40
+ ## Training (version 2)
41
+
42
+ - **Method:** LoRA rank 32, alpha 64, on q/k/v/o/gate/up/down. One epoch of 10,000 items (10.6M tokens), LR 5e-5 cosine,
43
+ one B300, 45 minutes. The loss is cross-entropy over the option letters at the answer slot, in the same chat layout as serving.
44
+ - **Data:**
45
+ - **6,000 generated state-tracking decisions:** event logs over seven invented domains (library loans, parking permits, hotel
46
+ rooms, sprint boards, vehicle fleets, licence seats, lab samples). They include rejected entries, VOID and CORRECTION
47
+ entries, aliases and out-of-order exports, rendered as logs, tables, prose and JSON.
48
+ - The gold answers are computed by replaying the log.
49
+ - Of 104 yes/no rows answered blind by GLM-5.3-Flash, 101 agree with the computed gold.
50
+ - **4,000 rows from our earlier training data, replayed:**
51
+ - 836 human-labelled public datasets;
52
+ - 2,047 from our own generated decision families, written without reading JevBench items;
53
+ - 1,117 teacher-written document questions.
54
+ - **Not used for training or selection:** JevBench items, public or sealed; Decision Index rows. The checkpoint and the
55
+ temperatures were chosen on our own held-out sets only.
56
 
57
+ ## Temperatures
 
 
 
58
 
59
+ | type | v2 T | v1 T | fitted on (our own rows) |
60
  |---|---|---|---|
61
+ | Choice | 1.5 | 4.0 | NLL and top-label ECE over 2,113 held-out Choice rows |
62
+ | Noul | 0.05 | 1.0 | chance-corrected v1.5 Noul score on 685 rows plus the 204-item fit half of a fresh yes/no set |
63
+ | Score | 1.0 | 3.5 | chance-corrected Score competence on 246 rows |
 
 
64
 
65
+ - The fine-tune leaves the model less confident, so every temperature is lower than in v1.
66
+ - Noul is read sharp. JevBench v1.5 counts a yes/no answer with P(yes) between 0.2 and 0.8 as wrong, and at T 0.05 about 1% of
67
+ answers fall in that band.
 
68
 
69
+ ## Measurements (decider-ai 1.8.0, one B300, each version at its own temperatures)
70
+
71
+ | set | v2 | v1 |
72
+ |---|---|---|
73
+ | fresh 399-item yes/no set, test half (195), v1.5 chance-corrected Noul score | 71.6 | 58.8 |
74
+ | same, argmax accuracy / share of answers between 0.2 and 0.8 / ECE | 0.856 / 1 % / 0.144 | 0.805 / 6 % / 0.181 |
75
+ | same set, 80 generated state-tracking logs (another generator than training), argmax | 0.750 | 0.675 |
76
+ | same set, 319 written items, argmax | 0.871 | 0.859 |
77
+ | held-out generated decisions (1,500) and teacher questions (944): Choice accuracy | 0.615 | 0.588 |
78
+ | same rows: Noul accuracy / chance-corrected Noul score | 0.790 / 57.1 | 0.740 / 38.7 |
79
+ | same rows: chance-corrected Score competence | 61.2 | 60.1 |
80
+ | human-labelled Choice rows (600): accuracy / ECE | 0.847 / 0.015 | 0.845 / 0.024 |
81
+ | JevBench public items, accuracy easy / standard / hard | 1.000 / 0.986 / 0.712 | 1.000 / 0.986 / 0.730 |
82
+ | JevBench public hard tier, top-label ECE | 0.147 | 0.098 |
83
+
84
+ - The public JevBench items were read for measurement only.
85
+ - On the hard tier (111 items), v2 answers 79 correctly and v1 answers 81.
86
+ - Hard-tier calibration is worse in v2.
87
 
88
  ## Limitations
89
 
90
+ - The base model's strengths and failure modes carry over.
91
+ - The fine-tune targets state tracking over event logs. Gains elsewhere come from the replayed rows and are 1-5 points.
92
+ - On the JevBench public hard tier, v2 is not better than v1: 79 vs 81 correct of 111, and ECE 0.147 vs 0.098.
93
+ - Per-dataset calibration still varies: knowledge multiple choice is underconfident, and hard reasoning is overconfident.
 
94
 
95
  ## Licence
96
 
97
+ Weights: derived from google/gemma-4-12B-it, Apache-2.0 as published by Google.
98
  Readout code: Apache-2.0 (github.com/Mapika/decider).
decider_config.json CHANGED
@@ -1,10 +1,10 @@
1
  {
2
- "version": "12b-v1",
3
  "layout": "chat",
4
- "temperature": 4.0,
5
- "temperature_by_type": {"choice": 4.0, "noul": 1.0, "score": 3.5},
6
  "neutralize_none": false,
7
  "isolated_levels": false,
8
- "base": "google/gemma-4-12B-it (revision 707f0a3b), unmodified weights",
9
  "requires": "decider-ai>=1.7.0 (final-logit softcapping)"
10
  }
 
1
  {
2
+ "version": "12b-v2",
3
  "layout": "chat",
4
+ "temperature": 1.5,
5
+ "temperature_by_type": {"choice": 1.5, "noul": 0.05, "score": 1.0},
6
  "neutralize_none": false,
7
  "isolated_levels": false,
8
+ "base": "google/gemma-4-12B-it (revision 707f0a3b) + merged LoRA (rank 32, attention and MLP), state-tracking fine-tune",
9
  "requires": "decider-ai>=1.7.0 (final-logit softcapping)"
10
  }
model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:5a84cb313260ac447237b890387116dfa8682e49a6b44bc585ae8353abbff18d
3
  size 23919549408
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:efb90aaf7521515851584f673ff4513027abb84df97a9ad2aa4fe27bc250770a
3
  size 23919549408