rdaum commited on
Commit
f748940
·
verified ·
1 Parent(s): 04cfd60

Describe the model for users: sources, usage, results, and limitations

Browse files
Files changed (1) hide show
  1. README.md +119 -246
README.md CHANGED
@@ -33,58 +33,47 @@ datasets:
33
 
34
  # Dory 1.0 4B Typed Decisions
35
 
36
- **Release: `state-32k`.** A Dory fine-tune for fast typed decisions, action selection, and state tracking in software agents.
37
- This release continues `actions-48k` with 32,000 questions about state tracking, planning, human judgements, and earlier tasks.
38
- On 512 reserved new questions, native NVFP4 accuracy improves from **46.48% to 75.59%**.
39
- The main gains come from state tracking and planning. Human-judgement accuracy remains almost unchanged.
40
 
41
- The base model is [NVIDIA Dory 1.0 4B](https://huggingface.co/nvidia/NVIDIA-Nemotron-Labs-Dory1.0-4B-BF16).
42
- An application supplies a state, a question, and permitted answers.
43
- The model scores those answers and returns a binary probability, a named choice, or an ordered score.
44
 
45
- This experiment belongs to [Eider](https://github.com/rdaum/eider), a Rust/CUDA inference server for NVIDIA DGX Spark.
46
- Eider provides the evaluated prompt format and an optimized serving implementation.
47
- The learned behaviour can also run in another engine that implements Dory and the same decision format.
48
 
49
- ## Available formats
50
 
51
- All three formats contain the same fine-tuned `state-32k` model. They share this model card and training history.
52
-
53
- | Format | Location | Use |
 
 
 
 
 
 
 
54
  |---|---|---|
55
- | BF16 safetensors | Root: eight shards and `model.safetensors.index.json` | Merged weights for a runtime with Dory support. |
56
- | NVFP4 safetensors | [`nvfp4/`](nvfp4) | Eider's evaluated packed 4-bit checkpoint, with its config and tokenizer. |
57
- | Q8_0 GGUF | [`dory-decisions-Q8_0.gguf`](dory-decisions-Q8_0.gguf), 4.23 GB | llama.cpp generation and native `/v1/systemone` decisions; instructions below. |
58
- | Rank-8 LoRA adapter | [`adapter/`](adapter/README.md) | Standalone training changes for the original NVIDIA BF16 model. |
59
-
60
- BF16 is the merged full-precision release; NVFP4 and Q8_0 are its quantized exports.
61
-
62
- This release has **no fitted probability-calibration profile**.
63
 
64
- ## What this is for
 
 
65
 
66
- The intended use is a small, local decision component inside a larger application or agent.
67
- Examples include tool-call validation, workflow routing, document-grounding judgements, and assessments against a rubric.
68
- The application defines the question and answer meanings at request time, so the model can serve many classification tasks.
69
 
70
- The objective is a fast “System 1” judgement without an autoregressive explanation for every decision.
71
- The application can use the answer distribution to choose an action or request further analysis.
72
- These are intended uses, not guarantees of accuracy on every task.
73
-
74
- | Answer type | Meaning | Example |
75
  |---|---|---|
76
- | Binary (`noul` in the API) | Estimated probability of the supplied true condition | Does this proposed call satisfy the request? |
77
- | Choice | Distribution over named options and the highest-scoring option | Which queue receives this ticket? |
78
  | Ordered score | Distribution over rubric levels and their expected index | How well does this response satisfy the rubric? |
79
 
80
- ## How the decision works
81
-
82
- The model keeps the original Dory architecture and vocabulary output head.
83
- LoRA training changes attention and MLP weights. It adds no separate classification head.
84
- The model uses **two recurrent loops**, which repeat internal computation through Dory layers without generating a chain of thought.
85
-
86
- The prompt combines the state, evaluation instructions, a question, and JSON-described options with single-token labels such as `A` and `B`.
87
- This excerpt illustrates the question portion:
88
 
89
  ```text
90
  Question: Is the response supported by the supplied evidence?
@@ -94,206 +83,104 @@ A: {"option":"true","description":"Every claim is supported by the evidence."}
94
  B: {"option":"false","description":"At least one claim lacks support."}
95
  ```
96
 
97
- The complete prompt also uses the Dory chat template, disabled explicit reasoning, and an assistant prefix of `Answer:\n`.
98
- At that position, the runtime reads the next-token logits for the permitted labels.
99
- It applies softmax across those labels and maps the resulting distribution to the requested answer type.
100
- These are conditional probabilities over the supplied options. They do not establish that the option list covers every possible answer.
101
 
102
- The application enforces the response type and option membership.
103
- The model supplies the judgement within that structure.
104
- This training does not establish support for arbitrary JSON schemas or open-ended structured generation.
105
 
106
- ## How Eider serves decisions
107
 
108
- Eider exposes a `/v1/decisions` endpoint. A request contains a shared state and one or more typed questions.
109
- Each question supplies its permitted answers and their meanings.
110
-
111
- 1. Eider renders the state and each question with the decision prompt described above.
112
- 2. It processes the shared state once and evaluates separate question branches. Questions cannot attend to each other.
113
- 3. It reads only the vocabulary-head rows for the answer labels at the end of each branch.
114
- 4. It applies softmax over those labels and returns the requested binary probability, choice distribution, or ordered score.
115
-
116
- The decision path generates no answer tokens or explanation. Dory still performs its two internal recurrent loops.
117
- Eider batches question branches, reuses cached state prefixes, and uses a compact label readout to reduce repeated work.
118
- These are serving optimizations. The weights contain the learned decision behaviour and need no Eider-specific classification head.
119
- Another Dory runtime can reproduce the method with the same prompt, label mapping, recurrent settings, and probability calculation.
120
-
121
- A fitted calibration profile can adjust the distributions after inference, but this release does not include one.
122
- The probabilities describe the supplied options; they are not independently verified confidence estimates.
123
 
124
  ## Training data
125
 
126
- The adapter carries five training stages. The tables below list all source families, grouped by purpose.
127
- A source can appear in several stages through replay.
128
- Pinned versions, source-file hashes, recorded source licences, and split rules are in [training-data.json](training-data.json).
129
- This repository contains model weights and metadata; they do not redistribute the source datasets.
130
-
131
- ### Latest stage: state tracking, planning, and human judgements
132
-
133
- | Source | Questions in this stage | What the model learns |
134
- |---|---:|---|
135
- | [SCONE](https://nlp.stanford.edu/projects/scone/) — Alchemy and Tangrams | 6,000 | Track a world state through a complete instruction sequence and answer from the recorded final state. |
136
- | Independent Eider planning generators, motivated by [PlanBench](https://github.com/karthikv792/LLMs-Planning/tree/main/plan-bench) | 8,000 | Choose optimal next moves and assess legality or progress in block stacking and package delivery. |
137
- | [NVIDIA HelpSteer2](https://huggingface.co/datasets/nvidia/HelpSteer2) | 2,000 | Learn correctness, helpfulness, coherence, and preference judgements from individual human ratings. |
138
- | Replay of earlier action questions | 8,000 | Retain action-selection behaviour from the four environment sources below. |
139
- | Replay of earlier general decision questions | 8,000 | Retain earlier decision, tool, document, reasoning, and code behaviour. |
140
- | **Total** | **32,000** | **16,000 new questions and 16,000 replay questions.** |
141
-
142
- SCONE supplies recorded state labels; its Scene domain is excluded pending an alignment audit.
143
- The planning generators and breadth-first search implementation are independent Eider code.
144
- No published PlanBench instances or generator code were copied.
145
- Planning targets share mass among equally optimal actions.
146
- HelpSteer2 targets use individual rating and preference frequencies, preserving disagreement and ties.
147
- Inputs exclude annotator ratings and justifications.
148
 
149
- ### Earlier action and environment training
150
-
151
- These sources supplied the 24,000 new questions in the preceding 48,000-question stage; its other 24,000 questions were replay.
152
-
153
- | Source | New questions in that stage | Preparation |
154
- |---|---:|---|
155
- | [JAT BabyAI](https://huggingface.co/datasets/jat-project/jat-dataset) | 8,000 | Successful expert navigation, doors, keys, and object placement. Maps use past observations only. |
156
- | [ALFWorld through Early Experience](https://huggingface.co/datasets/osunlp/early-experience) | 6,000 | Recorded expert commands and admissible actions, with the supplied observation history. |
157
- | [Competitive Game Dataset](https://huggingface.co/datasets/yyyyyyjjjjzzz/competitive-game-dataset) — Connect Four | 4,000 | Solver-labelled legal moves, with equal target mass for tied best moves. |
158
- | [ScienceWorld gold paths](https://github.com/allenai/ScienceWorld/tree/e8216d6044e8e39be9fcb185e3b2dfb602584b52/goldpaths) | 6,000 | Select among 17 operation types using the goal, room, inventory, and past results. |
159
-
160
- ScienceWorld training concerns operation types, not complete object-specific commands.
161
- Expert imitation labels do not establish that every alternative action would fail.
162
-
163
- ### General typed decisions and controlled scenarios
164
-
165
- | Source | Selected data and use |
166
- |---|---|
167
- | [Open-Jev](https://huggingface.co/datasets/ZefanCai/Open-Jev) | `release-v2-redistributable`: control, workflow, reasoning, and game questions. Original target distributions are preserved. |
168
- | [SargeDev/jev-distill-corpus-v3](https://huggingface.co/datasets/SargeDev/jev-distill-corpus-v3) | Only `yuri_v3` rows: diverse decision questions with supplied probability targets. |
169
- | [Procedural Typed Decisions](https://huggingface.co/datasets/tasksource/procedural-typed-decisions) | Rule-based and exact-probability tasks covering retrieval, state tracking, arithmetic, routing, and planning. |
170
- | [Open-Jev-v1.1](https://huggingface.co/datasets/ZefanCai/Open-Jev-v1.1) | `community-hard-mix-v2-redistributable`: WANLI-derived inference and controlled tool, document, support, and rubric scenarios. |
171
-
172
- ### Tools, documents, reading, mathematics, and code
173
-
174
- | Source | Preparation |
175
- |---|---|
176
- | [ToolACE](https://huggingface.co/datasets/Team-ACE/ToolACE) | Judge reference tool calls and deliberately invalid variants that violate the supplied argument schema. |
177
- | [RAGTruth](https://github.com/ParticleMedia/RAGTruth) | Evidence-grounding questions from human span annotations, responses, and their supplied documents. |
178
- | [RACE](https://huggingface.co/datasets/ehovy/race) | Reading-comprehension questions with original options and labels. |
179
- | [GSM8K](https://huggingface.co/datasets/openai/gsm8k) | Numeric answer selection with generated distractors. Reference reasoning is excluded from the input. |
180
- | [Devign through CodeXGLUE](https://huggingface.co/datasets/google/code_x_glue_cc_defect_detection) | Binary C-function defect questions using the source labels. |
181
-
182
- ### Data separation and target meaning
183
-
184
- Complete source groups stay together: episodes, games, goals, conversations, documents, or prompts.
185
- Planning groups include equivalent problems under block, package, and location renaming.
186
- Public test examples never enter training, and previous evaluation reservations remain excluded.
187
- New source groups contribute at most four questions each.
188
- The latest stage rejects inputs above 1,152 tokens instead of truncating them.
189
-
190
- **No JevMan or Pac-Man states, layouts, trajectories, rewards, or labels are used.**
191
- Other game and environment training is listed explicitly above.
192
- These results do not measure full-episode game performance.
193
-
194
- Training targets have different meanings across sources: recorded answers, expert actions, optimal actions, human votes, or supplied distributions.
195
- Optimal-action mass is not a win probability, and human vote frequencies do not establish outcome probabilities.
196
-
197
- ## Training recipe and history
198
-
199
- Training starts from NVIDIA's BF16 revision `b366b87f762ea334ba3eb55912031baba1515810`.
200
- Rank-8 LoRA with alpha 16 updates 16,220,160 adapter parameters across 288 attention and MLP projections.
201
- The original weights remain frozen. Training and evaluation use two recurrent loops.
202
- The loss is soft-target conditional cross-entropy plus 0.5 times Brier error over the permitted answers.
203
-
204
- | Stage | Training questions | Mixture | Learning rate |
205
- |---|---:|---|---:|
206
- | Initial decisions | 49,152 | 24,576 Open-Jev + 24,576 Yuri v3 | 0.0001 |
207
- | Broader decisions | 65,536 | 24,576 procedural + 16,384 WANLI-derived + 8,192 controlled + 16,384 replay | 0.00002 |
208
- | Tools and documents | 32,000 | 4,000 tools + 4,000 documents + 8,000 general + 16,000 replay | 0.00001 |
209
- | Action selection | 48,000 | 24,000 environment questions + 24,000 replay | 0.00001 |
210
- | **State tracking, planning, and judging** | **32,000** | **16,000 new + 16,000 replay** | **0.00001** |
211
-
212
- Replay repeats earlier training questions to retain previous behaviour.
213
- These are questions processed per stage, not a total of unique examples.
214
- The latest stage continues the previous adapter with a fresh optimizer.
215
- It completed 8,000 updates of four questions each on one GB300, with about 45 minutes of training compute.
216
-
217
- ## Accuracy evaluation
218
-
219
- The following results use **native Eider NVFP4 inference without probability calibration**.
220
- The previous and new adapters use the same frozen Eider executable, prompt format, and two-loop configuration.
221
- The parent NVFP4 export is byte-identical to the published `actions-48k` weights.
222
-
223
- Checkpoint selection uses 1,024 validation questions: 512 new questions and 512 earlier questions.
224
- The criterion is lowest Brier error, then cross-entropy, then earliest step.
225
- The unchanged parent and steps 2,000, 4,000, and 8,000 were eligible; step 8,000 won.
226
- Validation accuracy improved from 60.06% to 76.17%, and Brier error fell from 0.5027 to 0.2779.
227
- The 512 new test questions were scored after selection.
228
-
229
- | Question set | Model | Questions | Accuracy | Brier ↓ | Cross-entropy ↓ |
230
- |---|---|---:|---:|---:|---:|
231
- | New state, planning, and judging questions | Previous `actions-48k` NVFP4 | 512 | 46.48% | 0.7261 | 2.2838 |
232
- | New state, planning, and judging questions | This `state-32k` NVFP4 | 512 | 75.59% | 0.2706 | 1.0355 |
233
- | Earlier questions, reused | Previous `actions-48k` NVFP4 | 2,048 | 79.54% | 0.2521 | 0.7409 |
234
- | Earlier questions, reused | This `state-32k` NVFP4 | 2,048 | 79.35% | 0.2642 | 0.7846 |
235
- | General questions, reused | Previous `actions-48k` NVFP4 | 89 | 64.04% | 0.4997 | 1.0697 |
236
- | General questions, reused | This `state-32k` NVFP4 | 89 | 65.17% | 0.4791 | 1.0044 |
237
-
238
- The new test breaks down as follows:
239
-
240
- | Source | Questions | Previous NVFP4 | This NVFP4 | Brier, previous → current |
241
- |---|---:|---:|---:|---:|
242
- | SCONE state tracking | 192 | 42.19% | 75.52% | 0.8904 → 0.3779 |
243
- | Block-stacking and delivery planning | 192 | 48.44% | 92.19% | 0.6956 → 0.1909 |
244
- | HelpSteer2 human judgements | 128 | 50.00% | 50.78% | 0.5253 → 0.2290 |
245
-
246
- State tracking and planning improve substantially.
247
- HelpSteer2 accuracy changes by one answer; its predicted distributions move closer to the supplied human rating distributions.
248
- Earlier-question accuracy changes by four answers out of 2,048, while Brier and cross-entropy become slightly worse.
249
- The 89-question general check improves by one answer and is too small to establish broad generalization gains.
250
-
251
- Accuracy accepts any option with maximum target probability, including ties.
252
- Brier and cross-entropy compare the full predicted and target distributions.
253
- The earlier and general sets are reused development checks, not independent final benchmarks.
254
- Converted questions do not follow the original datasets' complete benchmark protocols.
255
-
256
- **These scores apply to NVFP4.** Neither the matching BF16 merge nor the Q8_0 GGUF has received a separate full accuracy evaluation.
257
- The original unfine-tuned NVIDIA model was not rescored in this comparison.
258
- [Full results](evaluation/nvfp4-comparison.json) include every candidate, answer type, and source.
259
- [Runtime metadata](evaluation/runtime.json) records the executable and script hashes.
260
-
261
- ## Probability calibration
262
-
263
- No calibration profile has been fitted for `state-32k`.
264
- The previous profile was removed from the current release because it belongs to different weights.
265
- The 1,024-question calibration split remains separate from training, checkpoint selection, and the new test.
266
- Uncalibrated softmax values are conditional scores over the permitted answers; they are not proven real-world outcome probabilities.
267
-
268
- ## Portability and files
269
-
270
- Another engine can implement the same method using Dory, its tokenizer and prompt, two loops, and selected-label scoring.
271
- Eider-specific CUDA kernels are not part of the learned weights.
272
- Eider accelerates serving with shared state processing, independent question branches, batching, CUDA graphs, and selected output logits.
273
- A different prompt, label mapping, loop count, or quantization can change the results.
274
-
275
- The root contains eight indexed BF16 safetensors shards, merged from the original NVIDIA weights and the selected adapter.
276
- Every saved tensor was checked against its CPU merge result. These merged BF16 files have not received a separate accuracy pass.
277
-
278
- The matching standalone LoRA adapter is in `adapter/`. The complete NVFP4 package also includes a copy.
279
- The adapter uses Eider tensor names rather than PEFT format; the supplied Python module loads that format.
280
- The adapter applies to the original NVIDIA BF16 checkpoint. Do not apply it again to the merged release weights.
281
- Its SHA-256 is `60723ac470780ac7e8bfe7785c23665be2d5c5d6653cbd2fad653523214aea7d`.
282
-
283
- The NVFP4 release quantizes our fine-tuned BF16 weights; it is not NVIDIA's original NVFP4 model.
284
- Its export uses packed E2M1 weights, E4M3 block scales, an F32 tensor scale, and a ModelOpt-compatible layout.
285
- The quantizer searches all 126 positive finite E4M3 scales for minimum block reconstruction error after BF16 merging.
286
- [Export metadata](evaluation/export.json) records the recipe, source hashes, and per-projection statistics.
287
 
288
  ## Use the GGUF with llama.cpp
289
 
290
- The GGUF works with llama.cpp's native `/v1/systemone` decision endpoint. No Eider server, custom llama.cpp patch, or further training is required.
291
  **Dory architecture support is still in NVIDIA's unmerged [llama.cpp PR #30306](https://github.com/ggml-org/llama.cpp/pull/30306).**
292
  Use that branch until architecture support reaches upstream. This requirement also applies to ordinary generation.
293
 
294
  ### Download
295
 
296
- Install the Hugging Face CLI and authenticate with `hf auth login` if this repository is private.
297
  Download only the format you need:
298
 
299
  ```sh
@@ -350,7 +237,7 @@ curl http://127.0.0.1:18091/v1/systemone \
350
 
351
  The endpoint returns answer probabilities with zero generated tokens.
352
  The GGUF provides a named `systemone` prompt template and selects llama.cpp's existing `granite-switch` decision convention.
353
- That name selects letter labels, true-before-false ordering, and selected next-token logits. **The architecture and weights are Dory, not IBM Granite.**
354
  The normal chat template is also retained.
355
 
356
  | Question type | Supported input |
@@ -364,24 +251,10 @@ The tested server rejects excess score levels with HTTP 400. Template validation
364
  The template accepts text, JSON states, and plain text chat. Serialize tool-call history as state text.
365
  Image and audio inputs are unsupported.
366
 
367
- ### What was tested
368
-
369
- On 2026-10-21, the Q8_0 GGUF ran on GB10 with all 73 layers offloaded and no local llama.cpp source changes.
370
- Eight native prompt checks matched Eider's token IDs and answer labels exactly.
371
- They covered JSON, Unicode, chat, 64 choices, default yes/no descriptions, and 10 score levels.
372
- The 24-request GPU smoke check covered all three answer types and returned the expected answers with zero generated tokens.
373
-
374
- For short requests with changing state, median latency was 62 ms for one question and 191 ms for three questions.
375
- Each median used five timed requests. Server logs showed full prompt processing without prefix reuse.
376
- These small compatibility checks do not establish Q8_0 accuracy on the full evaluation sets.
377
- [GGUF provenance and test evidence](gguf/provenance.json) record the tested source revision, file hash, and checks.
378
-
379
- ## Scope and provenance
380
 
381
- This experimental fine-tune targets typed decisions, action selection, state tracking, and planning.
382
- The results do not establish better general chat, reliable decisions in every domain, or full-context quality.
383
- [BF16 provenance](provenance.json), [NVFP4 provenance](nvfp4/provenance.json), and [format hashes](formats.json) bind the files to the selected adapter and source weights.
384
 
385
- NVIDIA supplies the base model, and the linked authors supply the training sources.
386
- [Eider](https://github.com/rdaum/eider) supplies the inference implementation and experiment tooling.
387
- The base model licence is [OpenMDW-1.1](LICENSE). This is an independent derivative.
 
33
 
34
  # Dory 1.0 4B Typed Decisions
35
 
36
+ A fine-tune of [NVIDIA Dory 1.0 4B](https://huggingface.co/nvidia/NVIDIA-Nemotron-Labs-Dory1.0-4B-BF16) for decisions over application-defined answers.
37
+ Supply context, a question, and the allowed answers. The model scores those answers without generating an explanation.
 
 
38
 
39
+ Use it for workflow routing, tool-call validation, evidence checks, rubric scoring, and action selection.
40
+ Questions and answer meanings are supplied at request time, rather than fixed to a single classification task.
 
41
 
42
+ The model was trained and evaluated with [Eider](https://github.com/rdaum/eider), a Rust/CUDA inference server for NVIDIA DGX Spark.
43
+ The GGUF also works with llama.cpp's native decision endpoint, using its Dory support branch as described below.
 
44
 
45
+ ## Model and formats
46
 
47
+ | Property | Value |
48
+ |---|---|
49
+ | Base model | NVIDIA Dory 1.0 4B |
50
+ | Adaptation | Rank-8 LoRA, merged into the supplied weights |
51
+ | Recurrent computation | Two internal loops per inference |
52
+ | Outputs | Binary probability, named-choice distribution, or ordered-score distribution |
53
+ | Probability calibration | No fitted calibration profile |
54
+ | Licence | [OpenMDW-1.1](LICENSE) |
55
+
56
+ | Format | Files | Use |
57
  |---|---|---|
58
+ | BF16 safetensors | Eight root-level shards and [index](model.safetensors.index.json) | Merged weights for runtimes with Dory support. |
59
+ | NVFP4 safetensors | [`nvfp4/`](nvfp4) | Packed 4-bit weights, configuration, and tokenizer for Eider. |
60
+ | Q8_0 GGUF | [`dory-decisions-Q8_0.gguf`](dory-decisions-Q8_0.gguf), 4.23 GB | 8-bit weights for llama.cpp. |
61
+ | LoRA adapter | [`adapter/`](adapter/README.md) | Standalone adaptation for the original NVIDIA BF16 checkpoint. |
 
 
 
 
62
 
63
+ All formats contain the same fine-tuned model. NVFP4 and Q8_0 are quantized from the merged BF16 weights.
64
+ The adapter uses the supplied Python loader's tensor format, not PEFT format.
65
+ Apply it only to the original NVIDIA checkpoint; the release weights already include it.
66
 
67
+ ## How typed decisions work
 
 
68
 
69
+ | Answer type | Result | Example |
 
 
 
 
70
  |---|---|---|
71
+ | Binary (`noul`) | Probability of the supplied true condition | Does this tool call satisfy the request? |
72
+ | Choice | Distribution over named options | Which queue should receive this ticket? |
73
  | Ordered score | Distribution over rubric levels and their expected index | How well does this response satisfy the rubric? |
74
 
75
+ The prompt contains context, a question, and answer descriptions mapped to single-token labels such as `A` and `B`.
76
+ For example:
 
 
 
 
 
 
77
 
78
  ```text
79
  Question: Is the response supported by the supplied evidence?
 
83
  B: {"option":"false","description":"At least one claim lacks support."}
84
  ```
85
 
86
+ The runtime reads the next-token logits for those labels and applies softmax over the allowed answers.
87
+ It returns the resulting distribution without generating answer tokens.
88
+ The model uses its ordinary vocabulary head, with no separate classification head.
89
+ Dory's two recurrent loops repeat internal computation without producing a chain of thought.
90
 
91
+ The runtime enforces the answer type and option membership. The model supplies the judgement.
92
+ This method supports the answer types above, rather than arbitrary JSON schemas.
93
+ The exact prompt and label mapping matter; the GGUF includes the decision template.
94
 
95
+ ### Eider serving
96
 
97
+ Eider exposes `/v1/decisions` for a shared context and multiple typed questions.
98
+ It processes the context once, then evaluates independent question branches in batches.
99
+ Questions cannot attend to each other. Eider reuses cached context and reads only the vocabulary rows for answer labels.
100
+ These optimizations reduce repeated work without requiring an Eider-specific classification head in the weights.
 
 
 
 
 
 
 
 
 
 
 
101
 
102
  ## Training data
103
 
104
+ The following sources provide the decision questions and targets used for fine-tuning.
105
+ [training-data.json](training-data.json) records source versions, licences, hashes, sampling, and split rules.
106
+ Source datasets are not redistributed here.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
 
108
+ | Area | Source | Training task |
109
+ |---|---|---|
110
+ | General decisions | [Open-Jev](https://huggingface.co/datasets/ZefanCai/Open-Jev), `release-v2-redistributable` | Control, workflow, reasoning, and game questions with supplied target distributions. |
111
+ | General decisions | [Jev Distill Corpus v3](https://huggingface.co/datasets/SargeDev/jev-distill-corpus-v3), `yuri_v3` subset | Diverse typed questions with supplied probability targets. |
112
+ | General decisions | [Procedural Typed Decisions](https://huggingface.co/datasets/tasksource/procedural-typed-decisions) | Rule-based retrieval, arithmetic, routing, state tracking, and planning. |
113
+ | Inference and controls | [Open-Jev-v1.1](https://huggingface.co/datasets/ZefanCai/Open-Jev-v1.1), `community-hard-mix-v2-redistributable` | WANLI-derived inference and controlled tool, document, support, and rubric scenarios. |
114
+ | Tools | [ToolACE](https://huggingface.co/datasets/Team-ACE/ToolACE) | Assess reference tool calls and variants with invalid arguments. |
115
+ | Evidence grounding | [RAGTruth](https://github.com/ParticleMedia/RAGTruth) | Judge response support using documents and human span annotations. |
116
+ | Reading | [RACE](https://huggingface.co/datasets/ehovy/race) | Select answers to reading-comprehension questions. |
117
+ | Mathematics | [GSM8K](https://huggingface.co/datasets/openai/gsm8k) | Select numeric answers from generated alternatives, without reference reasoning in the input. |
118
+ | Code | [Devign through CodeXGLUE](https://huggingface.co/datasets/google/code_x_glue_cc_defect_detection) | Classify C-function defects. |
119
+ | Navigation | [JAT BabyAI](https://huggingface.co/datasets/jat-project/jat-dataset) | Select expert actions involving navigation, doors, keys, and object placement. |
120
+ | Household tasks | [ALFWorld through Early Experience](https://huggingface.co/datasets/osunlp/early-experience) | Select expert commands from admissible actions and observation history. |
121
+ | Board games | [Competitive Game Dataset](https://huggingface.co/datasets/yyyyyyjjjjzzz/competitive-game-dataset), Connect Four | Select solver-labelled moves, preserving ties between optimal actions. |
122
+ | Interactive tasks | [ScienceWorld gold paths](https://github.com/allenai/ScienceWorld/tree/e8216d6044e8e39be9fcb185e3b2dfb602584b52/goldpaths) | Select among 17 operation types from the goal, room, inventory, and past results. |
123
+ | State tracking | [SCONE](https://nlp.stanford.edu/projects/scone/), Alchemy and Tangrams | Infer final world states from instruction sequences. |
124
+ | Planning | Independent Eider generators motivated by [PlanBench](https://github.com/karthikv792/LLMs-Planning/tree/main/plan-bench) | Assess legality and choose optimal moves in block stacking and package delivery. |
125
+ | Human judgements | [NVIDIA HelpSteer2](https://huggingface.co/datasets/nvidia/HelpSteer2) | Learn correctness, helpfulness, coherence, and preference distributions from human ratings. |
126
+
127
+ Planning examples use independently generated problems and search-derived targets, not published PlanBench instances or generator code.
128
+ Training and evaluation keep related source groups together, such as episodes, games, documents, conversations, and equivalent planning problems.
129
+ Public test examples are excluded from training.
130
+
131
+ ### Training method
132
+
133
+ Rank-8 LoRA with alpha 16 updates 16,220,160 parameters across 288 attention and MLP projections; the base weights remain frozen during training.
134
+ Training uses two recurrent loops and soft-target conditional cross-entropy plus 0.5 times Brier error over the allowed answers.
135
+ The adapter is merged into BF16 before quantization.
136
+ NVFP4 uses packed E2M1 weights with E4M3 block scales and an F32 tensor scale in a ModelOpt-compatible layout.
137
+ [Export metadata](evaluation/export.json) records the quantization recipe.
138
+
139
+ ## Evaluation
140
+
141
+ These results use **Eider NVFP4 inference with two recurrent loops and no probability calibration**.
142
+ The 512-question test set was scored after checkpoint selection on a separate 1,024-question validation set.
143
+
144
+ | Test task | Questions | Accuracy | Brier ↓ |
145
+ |---|---:|---:|---:|
146
+ | SCONE state tracking | 192 | 75.52% | 0.3779 |
147
+ | Block-stacking and delivery planning | 192 | 92.19% | 0.1909 |
148
+ | HelpSteer2 human judgements | 128 | 50.78% | 0.2290 |
149
+ | **Combined** | **512** | **75.59%** | **0.2706** |
150
+
151
+ Accuracy counts any answer tied for the highest target probability as correct.
152
+ Brier error compares the complete predicted and target distributions.
153
+ These are adapted decision tasks, not scores under the source datasets' original benchmark protocols.
154
+
155
+ Additional reused development sets scored 79.35% on 2,048 questions and 65.17% on 89 general questions.
156
+ They are not independent final tests. [Full evaluation records](evaluation/nvfp4-comparison.json) contain the per-source results and checkpoint comparisons.
157
+ Neither BF16 nor Q8_0 has received a separate full accuracy evaluation.
158
+
159
+ The Q8_0 GGUF passed prompt and answer-label parity checks and a 24-request GPU compatibility check across all three answer types.
160
+ On GB10, short requests with changing context had median latency of 62 ms for one question and 191 ms for three questions.
161
+ Each median used five timed requests. These small checks establish API compatibility, not general accuracy or production throughput.
162
+ [GGUF test evidence](gguf/provenance.json) records the setup and results.
163
+
164
+ ## Limitations
165
+
166
+ Probabilities are normalized over the supplied answers and have no fitted calibration profile.
167
+ They are not verified confidence estimates or real-world outcome probabilities.
168
+ Targets vary by source: factual labels, expert actions, optimal actions, human votes, or supplied distributions.
169
+ A distribution over optimal actions, for example, is not a probability of winning.
170
+
171
+ The evaluation does not establish general chat quality, reliable decisions in every domain, full-context quality, or complete agent-task success.
172
+ ScienceWorld training predicts operation types, not complete object-specific commands.
173
+ Changing the prompt, label mapping, loop count, or quantization can change the results.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
 
175
  ## Use the GGUF with llama.cpp
176
 
177
+ The GGUF works with llama.cpp's native `/v1/systemone` decision endpoint. It can serve decisions directly, without an Eider server.
178
  **Dory architecture support is still in NVIDIA's unmerged [llama.cpp PR #30306](https://github.com/ggml-org/llama.cpp/pull/30306).**
179
  Use that branch until architecture support reaches upstream. This requirement also applies to ordinary generation.
180
 
181
  ### Download
182
 
183
+ Install the Hugging Face CLI to download the weights.
184
  Download only the format you need:
185
 
186
  ```sh
 
237
 
238
  The endpoint returns answer probabilities with zero generated tokens.
239
  The GGUF provides a named `systemone` prompt template and selects llama.cpp's existing `granite-switch` decision convention.
240
+ This metadata selects the answer-label convention; the model architecture remains Dory.
241
  The normal chat template is also retained.
242
 
243
  | Question type | Supported input |
 
251
  The template accepts text, JSON states, and plain text chat. Serialize tool-call history as state text.
252
  Image and audio inputs are unsupported.
253
 
254
+ ## Attribution and provenance
 
 
 
 
 
 
 
 
 
 
 
 
255
 
256
+ NVIDIA supplies the base model; the linked dataset authors supply the training sources.
257
+ [Eider](https://github.com/rdaum/eider) supplies the training tooling and evaluated inference implementation.
258
+ This is an independent derivative under [OpenMDW-1.1](LICENSE); see [NOTICE](NOTICE).
259
 
260
+ [BF16 provenance](provenance.json), [NVFP4 provenance](nvfp4/provenance.json), and [file hashes](formats.json) identify the source weights and adapter.