Text Generation
Safetensors
GGUF
English
dory
decision-making
lora
eider
bf16
nvfp4
llama-cpp
conversational
decision-model
Instructions to use rdaum/decisive-dory with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use rdaum/decisive-dory with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf rdaum/decisive-dory:Q8_0 # Run inference directly in the terminal: llama cli -hf rdaum/decisive-dory:Q8_0
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf rdaum/decisive-dory:Q8_0 # Run inference directly in the terminal: llama cli -hf rdaum/decisive-dory:Q8_0
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf rdaum/decisive-dory:Q8_0 # Run inference directly in the terminal: ./llama-cli -hf rdaum/decisive-dory:Q8_0
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf rdaum/decisive-dory:Q8_0 # Run inference directly in the terminal: ./build/bin/llama-cli -hf rdaum/decisive-dory:Q8_0
Use Docker
docker model run hf.co/rdaum/decisive-dory:Q8_0
- Llama new
- LM Studio
- Jan
- vLLM
How to use rdaum/decisive-dory with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "rdaum/decisive-dory" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "rdaum/decisive-dory", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/rdaum/decisive-dory:Q8_0
- Ollama
How to use rdaum/decisive-dory with Ollama:
ollama run hf.co/rdaum/decisive-dory:Q8_0
- Unsloth Desktop
- Pi
How to use rdaum/decisive-dory with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf rdaum/decisive-dory:Q8_0
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "rdaum/decisive-dory:Q8_0" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use rdaum/decisive-dory with Docker Model Runner:
docker model run hf.co/rdaum/decisive-dory:Q8_0
- Lemonade
How to use rdaum/decisive-dory with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull rdaum/decisive-dory:Q8_0
Run and chat with the model
lemonade run user.decisive-dory-Q8_0
List all available models
lemonade list
- Hermes Agent
How to use rdaum/decisive-dory with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf rdaum/decisive-dory:Q8_0
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default rdaum/decisive-dory:Q8_0
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use rdaum/decisive-dory with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf rdaum/decisive-dory:Q8_0
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "rdaum/decisive-dory:Q8_0" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
Describe the model for users: sources, usage, results, and limitations
Browse files
README.md
CHANGED
|
@@ -33,58 +33,47 @@ datasets:
|
|
| 33 |
|
| 34 |
# Dory 1.0 4B Typed Decisions
|
| 35 |
|
| 36 |
-
|
| 37 |
-
|
| 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 |
-
|
| 42 |
-
|
| 43 |
-
The model scores those answers and returns a binary probability, a named choice, or an ordered score.
|
| 44 |
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
The learned behaviour can also run in another engine that implements Dory and the same decision format.
|
| 48 |
|
| 49 |
-
##
|
| 50 |
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
|---|---|---|
|
| 55 |
-
| BF16 safetensors |
|
| 56 |
-
| NVFP4 safetensors | [`nvfp4/`](nvfp4) |
|
| 57 |
-
| Q8_0 GGUF | [`dory-decisions-Q8_0.gguf`](dory-decisions-Q8_0.gguf), 4.23 GB |
|
| 58 |
-
|
|
| 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 |
-
|
|
|
|
|
|
|
| 65 |
|
| 66 |
-
|
| 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 |
-
|
| 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`
|
| 77 |
-
| Choice | Distribution over named options
|
| 78 |
| Ordered score | Distribution over rubric levels and their expected index | How well does this response satisfy the rubric? |
|
| 79 |
|
| 80 |
-
|
| 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
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
|
| 102 |
-
The
|
| 103 |
-
|
| 104 |
-
|
| 105 |
|
| 106 |
-
##
|
| 107 |
|
| 108 |
-
Eider exposes
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 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
|
| 127 |
-
|
| 128 |
-
|
| 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 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
|
| 154 |
-
|---
|
| 155 |
-
|
|
| 156 |
-
|
|
| 157 |
-
|
|
| 158 |
-
|
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
|
| 166 |
-
|
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
###
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
**
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
|
| 211 |
-
|
| 212 |
-
|
| 213 |
-
|
| 214 |
-
|
| 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.
|
| 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
|
| 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 |
-
|
| 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 |
-
##
|
| 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 |
-
|
| 382 |
-
|
| 383 |
-
|
| 384 |
|
| 385 |
-
|
| 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.
|
|
|
|
|
|