kumarabd1996 commited on
Commit
226ce32
·
verified ·
1 Parent(s): d7d382b

laya loop-taxonomy v2: nine labels incl. plan (47/54 held out, plan 11/13)

Browse files
Files changed (5) hide show
  1. README.md +45 -97
  2. model.safetensors +1 -1
  3. questions.json +9 -11
  4. rl_agent_config.json +51 -51
  5. train_report.json +43 -43
README.md CHANGED
@@ -14,7 +14,7 @@ pipeline_tag: text-classification
14
 
15
  # agent-task-classifier
16
 
17
- *(laya loop-taxonomy v1)*
18
 
19
  A fine-tuned [laya](https://huggingface.co/convaiinnovations/laya) checkpoint that classifies a
20
  user request to a personal-assistant agent by **the agent-loop shape it demands** — the skeleton
@@ -23,25 +23,32 @@ of the high-level process required to fulfil it — rather than by topic.
23
  Same interface as every laya checkpoint: text in, one typed `choice` decision out, one forward
24
  pass, no generation. English, ~0.3 s/query on CPU.
25
 
26
- ## The eleven labels
 
 
 
 
 
 
27
 
28
  | label | the loop it demands |
29
  |---|---|
30
- | `conversation` | answer/act directly — the default, safe fallback |
31
- | `diagnose` | find the cause of a specific malfunction or anomaly |
32
- | `research` | assemble understanding from investigation (multi-source, synthesis) |
33
- | `arrange` | commit a real-world arrangement — book, reserve, schedule, hire |
34
- | `acquire` | obtain a purchasable good, and verify it arrived |
35
- | `execute` | complete a known, externally-defined procedure (renew, file, claim) |
36
- | `make` | produce an artifact judged against a standard (tests, spec, taste) |
37
- | `tend` | review/maintain a standing concern (budget, health, home, wardrobe) |
38
- | `learn` | build the user's own ability over sessions (practice, tutoring) |
39
  | `companion` | inner-life support with no outcome in the world (reflection, therapy) |
40
- | `react` | urgent/deteriorating situation — act before full understanding |
 
 
 
 
 
 
41
 
42
  Boundary rule: two requests share a label iff they demand the same loop skeleton — same phases,
43
- same iteration driver, same exit criterion. Topic is irrelevant (`conversation` spans finance,
44
- wardrobe, memories; `make` spans code, letters, meal plans).
 
 
 
45
 
46
  ## Usage
47
 
@@ -49,103 +56,44 @@ wardrobe, memories; `make` spans code, letters, meal plans).
49
  import laya
50
 
51
  agent = laya.load("kumarabd1996/agent-task-classifier", device="cpu")
52
- questions = {
53
- "loop": {
54
- "type": "choice",
55
- "instructions": "What does this request (or the request it continues) demand?",
56
- "criteria": { ... }, # shipped as questions.json in this repo
57
- }
58
- }
59
- out = agent.predict("the user's message", questions)
60
- out["answers"]["loop"]["choice"] # e.g. "arrange"
61
  out["answers"]["loop"]["probabilities"] # calibrated (temperatures fitted at train time)
62
  ```
63
 
64
  Continuations: pass the request being continued in the state, the format the model was trained on:
65
 
66
  ```
67
- Earlier request: What are my biggest categories?
68
- New request: Continue the bulk update
69
  ```
70
 
71
- ## Serving
72
 
73
- A ready-made HTTP image (CPU, weights baked in) is published from
74
- [realnighthawk/classifier](https://github.com/realnighthawk/classifier):
75
 
76
- ```
77
- docker run -p 8000:8000 ghcr.io/realnighthawk/classifier:latest
78
- curl localhost:8000/classify -H 'content-type: application/json' \
79
- -d '{"text":"book me a table for two at 8pm friday"}'
80
- # {"label":"arrange","probabilities":{...}}
81
- ```
82
 
83
- `POST /classify` takes `{text, earlier?}`; `earlier` is the request being continued.
 
 
 
 
 
84
 
85
  ## Training
86
 
87
- - **Base**: `convaiinnovations/laya` (English checkpoint; ModernBERT-large + decision head), Apache-2.0.
88
- - **Corpus**: 5,280 items, 8 sources — MultiWOZ 2.1 booking utterances (~990, arrange), MASSIVE
89
- en-US slices (~920, acquire/arrange/conversation), OASST2 prompts + continuations (~1,060,
90
- teacher-labeled), synthetic items (~2,315) covering all eleven shapes (labels by construction,
91
- incl. 34 hand-written boundary cases), and 1,056 continuation-form items
92
- (`Earlier request: … / New request: …`). Per-class caps keep the largest class ≤ ~28%.
93
- Released as a dataset: `kumarabd1996/agent-task-classifier-dataset`.
94
- - **Hyperparameters**: 4 epochs, effective batch 64 (micro 4 × accum 16), encoder lr 2.5e-5 /
95
- head lr 1e-4, RLCD objective (default), option-order augmentation, max-len 256.
96
- - **Hardware**: one Mac, CPU only (~2 hours). A frozen-encoder variant failed to learn the
97
- taxonomy (37% in-distribution); encoder adaptation is required — matching laya's own findings.
98
- - Temperatures fitted automatically on a held-out calibration slice (choice temperature ≈ 3.82).
99
-
100
- ## Evaluation
101
-
102
- Boundary drills: 24 held-out hand-written cases targeting the taxonomy's hard boundaries
103
- (info-vs-procedure, understanding-vs-commitment, urgency-vs-worry, artifact-vs-investigation).
104
-
105
- | | accuracy | ECE | mean confidence |
106
- |---|---|---|---|
107
- | base `convaiinnovations/laya` (zero-shot) | 0.29 (7/24) | 0.54 | 0.83 (miscalibrated) |
108
- | **this checkpoint** | **0.83 (20/24)** | **0.13** | 0.96 |
109
-
110
- The 4 remaining misses, all at genuine boundaries: "Is Bali worth visiting in December?"
111
- (research, predicted arrange), "What does renewing a passport require?" (conversation,
112
- predicted execute), "Why have I been so tired lately?" (diagnose, predicted conversation),
113
- "Sign me up for the best EV lease deal you find." (arrange, predicted conversation).
114
 
115
  ## Limitations
116
 
117
- - Trained largely on synthetic + public chat corpora; real user traffic is under-represented.
118
- - English only (the base multilingual checkpoint was not used).
119
- - The eleven labels are fixed; requests outside them resolve to `conversation` by design.
120
- - Continuations require the caller to supply the continued request in the state.
121
- - Not a safety classifier — do not use for guardrails or moderation.
122
-
123
- ## Related work
124
-
125
- Small-model routing exists on two other axes, both public on the Hub:
126
-
127
- - **Capability buckets** — e.g. [ai-systems/agent-task-classifier](https://huggingface.co/ai-systems/agent-task-classifier),
128
- a TF-IDF reference model over tool/subsystem categories (browser, retrieval, verification, …).
129
- It answers *which capability a task needs*.
130
- - **Model-choice routing** — e.g. [subhash4face/agentic-ai-routing-task-classifier](https://huggingface.co/subhash4face/agentic-ai-routing-task-classifier),
131
- a DeBERTa fine-tune over LLM task types (QA, coding, summarization, long-context, …).
132
- It answers *which model should handle a prompt*.
133
-
134
- This model answers a third question: **which execution loop the task demands** — the only one of the
135
- three that decides how the agent's own work should proceed (phases, iteration driver, exit
136
- criteria) rather than which resource to engage. Capability and loop are orthogonal — a `diagnose`
137
- task may need retrieval tools, a `conversation` task may need none — and in an agent harness the
138
- loop decision is the routing decision that determines everything downstream.
139
-
140
- ## Training data provenance
141
-
142
- MultiWOZ 2.1 (research use, MIT-licensed distribution) · MASSIVE en-US (CC-BY-4.0, Amazon) ·
143
- OASST2 (Apache-2.0, OpenAssistant) · synthetic/generated items (Apache-2.0 with this release).
144
- No user/private data was used in training.
145
-
146
- ## Files
147
-
148
- `model.safetensors` (weights, incl. encoder) · `encoder/config.json` · `tokenizer/` ·
149
- `questions.json` (the taxonomy question, ready to pass to `predict`) ·
150
- `rl_agent_config.json` (fitted temperatures, training config) · `train_report.json`
151
- (before/after metrics).
 
14
 
15
  # agent-task-classifier
16
 
17
+ *(laya loop-taxonomy v2 — nine labels)*
18
 
19
  A fine-tuned [laya](https://huggingface.co/convaiinnovations/laya) checkpoint that classifies a
20
  user request to a personal-assistant agent by **the agent-loop shape it demands** — the skeleton
 
23
  Same interface as every laya checkpoint: text in, one typed `choice` decision out, one forward
24
  pass, no generation. English, ~0.3 s/query on CPU.
25
 
26
+ **v2 changes the label set** (v1 had eleven labels; `git` history keeps it). v1 → v2:
27
+ `make`→`produce`; `react`→`stabilize`; `arrange`, `acquire`, `execute`→`transact`;
28
+ `tend`→`conversation` (reviewing a standing concern is a lookup; the wake that raises it is a
29
+ trigger, not a request); **`plan` is new** — setting up or changing a person's own goals, routines,
30
+ budgets and trackers.
31
+
32
+ ## The nine labels
33
 
34
  | label | the loop it demands |
35
  |---|---|
36
+ | `conversation` | questions, quick asks, lookups, a reported measurement, a single reminder, chatter — the default, safe fallback |
 
 
 
 
 
 
 
 
37
  | `companion` | inner-life support with no outcome in the world (reflection, therapy) |
38
+ | `learn` | build the user's own ability over sessions (practice, tutoring) |
39
+ | `diagnose` | find the cause of a specific malfunction or anomaly, including in the user's own data |
40
+ | `research` | assemble understanding from investigation (multi-source, comparison, synthesis) |
41
+ | `produce` | make an artifact judged against a standard (document, spreadsheet, script, letter) |
42
+ | `transact` | a commitment or possession in the world: book, buy, pay, transfer, or complete a procedure |
43
+ | `stabilize` | urgent or deteriorating situation — act before full understanding |
44
+ | `plan` | set up or change the person's own standing structure: a goal, routine, budget/limit, or tracker |
45
 
46
  Boundary rule: two requests share a label iff they demand the same loop skeleton — same phases,
47
+ same iteration driver, same exit criterion. Topic is irrelevant. Labels are checked in the order
48
+ `stabilize`, `transact`, `plan`, `produce`, `diagnose`, `research`, `learn`, `companion`,
49
+ `conversation`; the first match wins. `plan` is *not* a single reminder ("remind me to call Sam"),
50
+ a lookup ("how much did I spend on dining"), a reported measurement ("I weighed 82 kg"), a document
51
+ to write ("build me a budget spreadsheet") or a payment ("transfer $500 to savings").
52
 
53
  ## Usage
54
 
 
56
  import laya
57
 
58
  agent = laya.load("kumarabd1996/agent-task-classifier", device="cpu")
59
+ questions = json.load(open(hf_hub_download("kumarabd1996/agent-task-classifier", "questions.json")))
60
+ out = agent.predict("I want to keep my dining spending under $200 a month", questions)
61
+ out["answers"]["loop"]["choice"] # "plan"
 
 
 
 
 
 
62
  out["answers"]["loop"]["probabilities"] # calibrated (temperatures fitted at train time)
63
  ```
64
 
65
  Continuations: pass the request being continued in the state, the format the model was trained on:
66
 
67
  ```
68
+ Earlier request: I want to keep my dining spending under $200 a month
69
+ New request: All
70
  ```
71
 
72
+ ## Evaluation (held out, never trained on)
73
 
74
+ 54 items: the 24 taxonomy boundary drills (relabelled to v2) plus 30 hand-written personal-records
75
+ and finance cases.
76
 
77
+ | | accuracy | mean confidence | ECE |
78
+ |---|---|---|---|
79
+ | untuned laya | 24.1% (13/54) | 0.31 | 0.19 |
80
+ | **this model** | **87.0% (47/54)** | 0.96 | 0.09 |
 
 
81
 
82
+ `plan`: 11/13. Nothing outside `plan` was predicted as `plan`. The two misses were implicit
83
+ phrasings ("Don't let me overspend on clothes this quarter", "I keep meaning to exercise more, can
84
+ you help me actually do it?"). Remaining misses are older boundary drills (an implied purchase,
85
+ "is X worth it?" as research, a money transfer) and the model is confident when it is wrong (~0.95),
86
+ so a confidence floor does not catch them. 54 items is a small sample: treat the numbers as a
87
+ smoke test, not a benchmark.
88
 
89
  ## Training
90
 
91
+ Full fine-tune of laya on 4,754 examples (400 held back to fit calibration temperatures), 4 epochs,
92
+ effective batch 64. Data: [kumarabd1996/agent-task-classifier-dataset](https://huggingface.co/datasets/kumarabd1996/agent-task-classifier-dataset).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
 
94
  ## Limitations
95
 
96
+ - English only; nine fixed labels; out-of-taxonomy requests resolve to `conversation`.
97
+ - Much of the training data is synthetic, so template phrasing biases it; implicit or indirect
98
+ requests ("I keep meaning to…") are the weak spot.
99
+ - Calibrated on a small held-out slice; probabilities are not reliable above ~0.9.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:04eb1c795796ddc492cfc661f229e1438e6bca9651081a839b387aa8437d4321
3
  size 842609220
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fca19e77f4f6462c84d0adc568e2982d6e3a290e1f778334320c891aad8a5c09
3
  size 842609220
questions.json CHANGED
@@ -3,17 +3,15 @@
3
  "type": "choice",
4
  "instructions": "What does this request (or the request it continues) demand?",
5
  "criteria": {
6
- "react": "Urgent or deteriorating situation where delay has real consequences (safety, health, money, a missed critical window).",
7
- "acquire": "The outcome is possession of a purchasable good \u2014 buy, order, restock, replace.",
8
- "arrange": "The outcome is a commitment in the world with other parties or the calendar \u2014 book, reserve, schedule, hire, plan-to-commit.",
9
- "execute": "The request names a known, externally-defined procedure to be completed to submission or acceptance \u2014 renew, file, claim, apply, submit.",
10
- "make": "The outcome is an artifact the assistant produces, judged against a standard (tests, a spec, taste).",
11
- "diagnose": "The outcome is the cause of a specific malfunction or anomaly.",
12
- "research": "The outcome is understanding assembled from investigation \u2014 multi-source, current, or synthesis-shaped.",
13
- "learn": "The outcome is the user's own ability, built over sessions \u2014 practice, tutoring, review.",
14
- "tend": "The request concerns the ongoing state of a standing concern \u2014 review, maintain, adjust; recurring or wake-arrived.",
15
- "companion": "Inner-life support with no outcome in the world \u2014 explicitly reflective or support-seeking.",
16
- "conversation": "Nothing above fits \u2014 questions, quick asks, lookups, chatter, micro-tasks."
17
  }
18
  }
19
  }
 
3
  "type": "choice",
4
  "instructions": "What does this request (or the request it continues) demand?",
5
  "criteria": {
6
+ "stabilize": "Urgent or deteriorating situation where delay has real consequences (safety, health, money, a missed critical window) and a cheap, reversible action plausibly stops the worsening.",
7
+ "transact": "The outcome is a commitment or possession in the world: a booking, reservation, purchase, payment, transfer, or a named procedure completed to acceptance.",
8
+ "plan": "The outcome is the person's own standing structure, set up or changed in their personal records: a goal, a routine, a budget or spending limit, a tracker. Reversible, nobody else involved.",
9
+ "produce": "The outcome is an artifact the assistant produces, judged against a standard (tests, a spec, taste): a document, spreadsheet, script, letter.",
10
+ "diagnose": "The outcome is the cause of a specific malfunction or anomaly, including causes in the person's own data.",
11
+ "research": "The outcome is understanding assembled from investigation: multi-source, current, comparison or synthesis-shaped.",
12
+ "learn": "The outcome is the person's own ability, built over sessions: practice, tutoring, review.",
13
+ "companion": "Inner-life support with no outcome in the world: explicitly reflective or support-seeking.",
14
+ "conversation": "None of the above: questions, quick asks, lookups, reports of a measurement, a single reminder or note, chatter."
 
 
15
  }
16
  }
17
  }
rl_agent_config.json CHANGED
@@ -11,7 +11,7 @@
11
  "amp_dtype": "bf16",
12
  "model_name": "rl-agent",
13
  "temperature": [
14
- 3.8229823112487793,
15
  1.0,
16
  1.0
17
  ],
@@ -23,8 +23,8 @@
23
  "fine_tuned_from_checkpoint": true,
24
  "laya_train": {
25
  "epochs": 4,
26
- "micro_batch": 4,
27
- "grad_accum": 16,
28
  "encoder_lr": 2.5e-05,
29
  "head_lr": 0.0001,
30
  "min_lr": 1e-06,
@@ -55,17 +55,17 @@
55
  "label_column": "label",
56
  "question_id": "label",
57
  "instructions": null,
58
- "eval_data": "corpus/eval_drills.jsonl",
59
  "target_error": 0.1,
60
  "min_abstain_n": 10
61
  },
62
  "laya_train_calibration": {
63
  "choice": {
64
  "items": 400,
65
- "temperature": 3.8229823112487793,
66
  "issues": [],
67
- "accuracy": 0.9475,
68
- "mean_confidence": 0.9591468240120362
69
  },
70
  "score": {
71
  "items": 0,
@@ -79,66 +79,66 @@
79
  }
80
  },
81
  "train_report": {
82
- "eval_source": "corpus/eval_drills.jsonl",
83
  "eval_mode": "held_out",
84
  "is_held_out": true,
85
- "eval_items": 24,
86
  "note": "Metrics reflect independent held-out evaluation.",
87
  "before": {
88
- "items": 24,
89
- "loss": 7.6903,
90
- "accuracy": 0.2917,
91
- "mean_confidence": 0.8302,
92
- "ece": 0.5385,
93
- "brier": 1.1763,
94
- "brier_top1": 0.4885,
95
  "by_type": {
96
  "choice": {
97
- "items": 24,
98
- "loss": 7.6903,
99
- "accuracy": 0.2917,
100
- "mean_confidence": 0.8302,
101
- "ece": 0.5385,
102
- "brier": 1.1763,
103
- "brier_top1": 0.4885
104
  }
105
  }
106
  },
107
  "after": {
108
- "items": 24,
109
- "loss": 0.7962,
110
- "accuracy": 0.8333,
111
- "mean_confidence": 0.9643,
112
- "ece": 0.131,
113
- "brier": 0.315,
114
- "brier_top1": 0.1524,
115
  "by_type": {
116
  "choice": {
117
- "items": 24,
118
- "loss": 0.7962,
119
- "accuracy": 0.8333,
120
- "mean_confidence": 0.9643,
121
- "ece": 0.131,
122
- "brier": 0.315,
123
- "brier_top1": 0.1524
124
  }
125
  }
126
  },
127
  "comparison": {
128
- "delta_accuracy": 0.5416,
129
- "delta_loss": -6.8941,
130
- "delta_ece": -0.4075,
131
- "delta_brier": -0.8613,
132
- "delta_brier_top1": -0.3361,
133
- "delta_mean_confidence": 0.1341
134
  },
135
  "calibration": {
136
  "choice": {
137
  "items": 400,
138
- "temperature": 3.8229823112487793,
139
  "issues": [],
140
- "accuracy": 0.9475,
141
- "mean_confidence": 0.9591468240120362
142
  },
143
  "score": {
144
  "items": 0,
@@ -152,12 +152,12 @@
152
  }
153
  },
154
  "abstention_thresholds": {
155
- "choice:11+": 0.3049
156
  },
157
  "training": {
158
  "epochs": 4,
159
- "micro_batch": 4,
160
- "grad_accum": 16,
161
  "encoder_lr": 2.5e-05,
162
  "head_lr": 0.0001,
163
  "min_lr": 1e-06,
@@ -188,13 +188,13 @@
188
  "label_column": "label",
189
  "question_id": "label",
190
  "instructions": null,
191
- "eval_data": "corpus/eval_drills.jsonl",
192
  "target_error": 0.1,
193
  "min_abstain_n": 10
194
  }
195
  },
196
  "abstention_thresholds": {
197
- "choice:11+": 0.3049
198
  }
199
  },
200
  "fine_tuned": true
 
11
  "amp_dtype": "bf16",
12
  "model_name": "rl-agent",
13
  "temperature": [
14
+ 3.9046413898468018,
15
  1.0,
16
  1.0
17
  ],
 
23
  "fine_tuned_from_checkpoint": true,
24
  "laya_train": {
25
  "epochs": 4,
26
+ "micro_batch": 2,
27
+ "grad_accum": 32,
28
  "encoder_lr": 2.5e-05,
29
  "head_lr": 0.0001,
30
  "min_lr": 1e-06,
 
55
  "label_column": "label",
56
  "question_id": "label",
57
  "instructions": null,
58
+ "eval_data": "corpus_v2/eval.jsonl",
59
  "target_error": 0.1,
60
  "min_abstain_n": 10
61
  },
62
  "laya_train_calibration": {
63
  "choice": {
64
  "items": 400,
65
+ "temperature": 3.9046413898468018,
66
  "issues": [],
67
+ "accuracy": 0.9575,
68
+ "mean_confidence": 0.9617928987797445
69
  },
70
  "score": {
71
  "items": 0,
 
79
  }
80
  },
81
  "train_report": {
82
+ "eval_source": "corpus_v2/eval.jsonl",
83
  "eval_mode": "held_out",
84
  "is_held_out": true,
85
+ "eval_items": 54,
86
  "note": "Metrics reflect independent held-out evaluation.",
87
  "before": {
88
+ "items": 54,
89
+ "loss": 1.8596,
90
+ "accuracy": 0.2407,
91
+ "mean_confidence": 0.3148,
92
+ "ece": 0.1869,
93
+ "brier": 0.7831,
94
+ "brier_top1": 0.1308,
95
  "by_type": {
96
  "choice": {
97
+ "items": 54,
98
+ "loss": 1.8596,
99
+ "accuracy": 0.2407,
100
+ "mean_confidence": 0.3148,
101
+ "ece": 0.1869,
102
+ "brier": 0.7831,
103
+ "brier_top1": 0.1308
104
  }
105
  }
106
  },
107
  "after": {
108
+ "items": 54,
109
+ "loss": 0.6661,
110
+ "accuracy": 0.8704,
111
+ "mean_confidence": 0.9589,
112
+ "ece": 0.0886,
113
+ "brier": 0.2397,
114
+ "brier_top1": 0.1096,
115
  "by_type": {
116
  "choice": {
117
+ "items": 54,
118
+ "loss": 0.6661,
119
+ "accuracy": 0.8704,
120
+ "mean_confidence": 0.9589,
121
+ "ece": 0.0886,
122
+ "brier": 0.2397,
123
+ "brier_top1": 0.1096
124
  }
125
  }
126
  },
127
  "comparison": {
128
+ "delta_accuracy": 0.6297,
129
+ "delta_loss": -1.1935,
130
+ "delta_ece": -0.0983,
131
+ "delta_brier": -0.5434,
132
+ "delta_brier_top1": -0.0212,
133
+ "delta_mean_confidence": 0.6441
134
  },
135
  "calibration": {
136
  "choice": {
137
  "items": 400,
138
+ "temperature": 3.9046413898468018,
139
  "issues": [],
140
+ "accuracy": 0.9575,
141
+ "mean_confidence": 0.9617928987797445
142
  },
143
  "score": {
144
  "items": 0,
 
152
  }
153
  },
154
  "abstention_thresholds": {
155
+ "choice:6-10": 0.5204
156
  },
157
  "training": {
158
  "epochs": 4,
159
+ "micro_batch": 2,
160
+ "grad_accum": 32,
161
  "encoder_lr": 2.5e-05,
162
  "head_lr": 0.0001,
163
  "min_lr": 1e-06,
 
188
  "label_column": "label",
189
  "question_id": "label",
190
  "instructions": null,
191
+ "eval_data": "corpus_v2/eval.jsonl",
192
  "target_error": 0.1,
193
  "min_abstain_n": 10
194
  }
195
  },
196
  "abstention_thresholds": {
197
+ "choice:6-10": 0.5204
198
  }
199
  },
200
  "fine_tuned": true
train_report.json CHANGED
@@ -1,64 +1,64 @@
1
  {
2
- "eval_source": "corpus/eval_drills.jsonl",
3
  "eval_mode": "held_out",
4
  "is_held_out": true,
5
- "eval_items": 24,
6
  "note": "Metrics reflect independent held-out evaluation.",
7
  "before": {
8
- "items": 24,
9
- "loss": 7.6903,
10
- "accuracy": 0.2917,
11
- "mean_confidence": 0.8302,
12
- "ece": 0.5385,
13
- "brier": 1.1763,
14
- "brier_top1": 0.4885,
15
  "by_type": {
16
  "choice": {
17
- "items": 24,
18
- "loss": 7.6903,
19
- "accuracy": 0.2917,
20
- "mean_confidence": 0.8302,
21
- "ece": 0.5385,
22
- "brier": 1.1763,
23
- "brier_top1": 0.4885
24
  }
25
  }
26
  },
27
  "after": {
28
- "items": 24,
29
- "loss": 0.7962,
30
- "accuracy": 0.8333,
31
- "mean_confidence": 0.9643,
32
- "ece": 0.131,
33
- "brier": 0.315,
34
- "brier_top1": 0.1524,
35
  "by_type": {
36
  "choice": {
37
- "items": 24,
38
- "loss": 0.7962,
39
- "accuracy": 0.8333,
40
- "mean_confidence": 0.9643,
41
- "ece": 0.131,
42
- "brier": 0.315,
43
- "brier_top1": 0.1524
44
  }
45
  }
46
  },
47
  "comparison": {
48
- "delta_accuracy": 0.5416,
49
- "delta_loss": -6.8941,
50
- "delta_ece": -0.4075,
51
- "delta_brier": -0.8613,
52
- "delta_brier_top1": -0.3361,
53
- "delta_mean_confidence": 0.1341
54
  },
55
  "calibration": {
56
  "choice": {
57
  "items": 400,
58
- "temperature": 3.8229823112487793,
59
  "issues": [],
60
- "accuracy": 0.9475,
61
- "mean_confidence": 0.9591468240120362
62
  },
63
  "score": {
64
  "items": 0,
@@ -72,12 +72,12 @@
72
  }
73
  },
74
  "abstention_thresholds": {
75
- "choice:11+": 0.3049
76
  },
77
  "training": {
78
  "epochs": 4,
79
- "micro_batch": 4,
80
- "grad_accum": 16,
81
  "encoder_lr": 2.5e-05,
82
  "head_lr": 0.0001,
83
  "min_lr": 1e-06,
@@ -108,7 +108,7 @@
108
  "label_column": "label",
109
  "question_id": "label",
110
  "instructions": null,
111
- "eval_data": "corpus/eval_drills.jsonl",
112
  "target_error": 0.1,
113
  "min_abstain_n": 10
114
  }
 
1
  {
2
+ "eval_source": "corpus_v2/eval.jsonl",
3
  "eval_mode": "held_out",
4
  "is_held_out": true,
5
+ "eval_items": 54,
6
  "note": "Metrics reflect independent held-out evaluation.",
7
  "before": {
8
+ "items": 54,
9
+ "loss": 1.8596,
10
+ "accuracy": 0.2407,
11
+ "mean_confidence": 0.3148,
12
+ "ece": 0.1869,
13
+ "brier": 0.7831,
14
+ "brier_top1": 0.1308,
15
  "by_type": {
16
  "choice": {
17
+ "items": 54,
18
+ "loss": 1.8596,
19
+ "accuracy": 0.2407,
20
+ "mean_confidence": 0.3148,
21
+ "ece": 0.1869,
22
+ "brier": 0.7831,
23
+ "brier_top1": 0.1308
24
  }
25
  }
26
  },
27
  "after": {
28
+ "items": 54,
29
+ "loss": 0.6661,
30
+ "accuracy": 0.8704,
31
+ "mean_confidence": 0.9589,
32
+ "ece": 0.0886,
33
+ "brier": 0.2397,
34
+ "brier_top1": 0.1096,
35
  "by_type": {
36
  "choice": {
37
+ "items": 54,
38
+ "loss": 0.6661,
39
+ "accuracy": 0.8704,
40
+ "mean_confidence": 0.9589,
41
+ "ece": 0.0886,
42
+ "brier": 0.2397,
43
+ "brier_top1": 0.1096
44
  }
45
  }
46
  },
47
  "comparison": {
48
+ "delta_accuracy": 0.6297,
49
+ "delta_loss": -1.1935,
50
+ "delta_ece": -0.0983,
51
+ "delta_brier": -0.5434,
52
+ "delta_brier_top1": -0.0212,
53
+ "delta_mean_confidence": 0.6441
54
  },
55
  "calibration": {
56
  "choice": {
57
  "items": 400,
58
+ "temperature": 3.9046413898468018,
59
  "issues": [],
60
+ "accuracy": 0.9575,
61
+ "mean_confidence": 0.9617928987797445
62
  },
63
  "score": {
64
  "items": 0,
 
72
  }
73
  },
74
  "abstention_thresholds": {
75
+ "choice:6-10": 0.5204
76
  },
77
  "training": {
78
  "epochs": 4,
79
+ "micro_batch": 2,
80
+ "grad_accum": 32,
81
  "encoder_lr": 2.5e-05,
82
  "head_lr": 0.0001,
83
  "min_lr": 1e-06,
 
108
  "label_column": "label",
109
  "question_id": "label",
110
  "instructions": null,
111
+ "eval_data": "corpus_v2/eval.jsonl",
112
  "target_error": 0.1,
113
  "min_abstain_n": 10
114
  }