File size: 9,257 Bytes
1d2b62a 4649798 1d2b62a 4649798 1d2b62a 4649798 1d2b62a 4649798 1d2b62a 4649798 1d2b62a 4649798 1d2b62a 86214d1 1d2b62a 4649798 1d2b62a 4649798 c99027d 1d2b62a aa0e5a9 1d2b62a 4649798 1d2b62a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 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 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 | ---
license: apache-2.0
language:
- en
library_name: pytorch
pipeline_tag: text-classification
base_model:
- Qwen/Qwen3-1.7B
- Hanno-Labs/bosun-v3.1-1.7b
datasets:
- LocalLLaMA/typed-decisions
- SargeDev/jev-distill-corpus-v3
tags:
- decision-model
- system-one
- calibrated-decisions
- typed-decisions
- choice
- noul
- score
- qwen3
- bosun
- safetensors
- pytorch
model-index:
- name: Pluto-2.1-1.7B
results:
- task:
type: text-classification
name: Typed Decisions
dataset:
name: LocalLLaMA/typed-decisions
type: LocalLLaMA/typed-decisions
metrics:
- type: accuracy
name: Accuracy
value: 0.6695
- type: brier
name: Brier
value: 0.1261
- type: kl
name: KL
value: 0.2139
- task:
type: text-classification
name: DecisionBench matched subset
dataset:
name: Hanno-Labs/decision-bench
type: Hanno-Labs/decision-bench
metrics:
- type: accuracy
name: Accuracy
value: 0.7208
- type: brier
name: Brier
value: 0.3730
- type: nll
name: NLL
value: 0.7439
---
# Pluto-2.1
### A 1.7B decision model that clears both d1 checkpoints and owns the balance.
Pluto-2.1 reads a state and typed questions, then returns a calibrated probability
distribution for every candidate. It does not generate an answer, so there is
nothing to parse, nothing to retry, and nothing to hallucinate.
Built solo on one **RTX 5060 Ti 16GB**.
**Headline:** **0.6695** on Typed Decisions and **0.7208** on the matched
DecisionBench comparison. It clears both d1-2B and d1-3B on both suites and posts
the **highest mean accuracy** in the comparison at **0.6952** — from a 1.738B
standalone checkpoint with **2–255 candidates**, **choice / noul / score**, and
**Apache-2.0** weights.
---
## The receipts
Same rows and same scorer for every locally measured model. Mean is the mean of
Typed Decisions and DecisionBench matched accuracy.
| Model | Params | Typed Decisions | DecisionBench matched | Mean |
|---|---:|---:|---:|---:|
| **Pluto-2.1** | **1.738B** | **0.6695** | **0.7208** | **0.6952** |
| Pluto-2 400M | 0.397B | **0.7835** | 0.5789 | 0.6812 |
| Bosun 3.1 1.7B (initializer) | 1.738B | 0.4980 | **0.8288** | 0.6634 |
| d1-3B | 3.123B | 0.6495 | 0.6486 | 0.6490 |
| d1-2B | 1.918B | 0.6325 | 0.6339 | 0.6332 |
**What this means**
- **+3.7 points** over d1-2B and **+2.0 points** over d1-3B on Typed Decisions.
- **+8.7 points** over d1-2B and **+7.2 points** over d1-3B on DecisionBench.
- **Highest mean accuracy** across the two suites.
- **1.738B**: 9.4% smaller than d1-2B and 44% smaller than d1-3B.
- **Sharper distributions** than both d1 checkpoints: lower Typed Brier and KL,
lower DecisionBench NLL and Brier.
- **One forward pass.** No autoregressive decoding and no token bill.
- **Bosun leads broad-only; Pluto-2 leads Typed-only; Pluto-2.1 owns the balance.**
### Typed Decisions — full 2,000-decision board
| Model | Params | Mode | Primary accuracy | ECE | Brier | KL | Coverage |
|---|---:|---|---:|---:|---:|---:|---:|
| Pluto-2 Typed | 395.8M | fitted | **80.30%** | 7.48% | 6.72% | 0.119 | 100% |
| OpenDecider-nano | 394.8M | fitted | 79.30% | 16.09% | **4.28%** | **0.079** | 100% |
| Pluto-2 | 397.4M | fitted | 78.35% | 11.80% | 5.32% | 0.097 | 100% |
| Laya-typed | 421.3M | fitted | 76.80% | 21.52% | 6.15% | 0.117 | 100% |
| Pluto-1 | 332.8M | fitted | 75.15% | 14.00% | 6.49% | 0.118 | 100% |
| Jev 1.13 | ~27B | published | 72.70% | 14.40% | 14.80% | 1.442 | — |
| **Pluto-2.1** | **1.738B** | fine-tuned | **66.95%** | **5.56%** | 12.61% | 0.214 | 100% |
| d1-3B | 3.123B | zero-shot | 64.95% | 3.43% | 14.16% | 0.285 | 100% |
| d1-2B | 1.918B | zero-shot | 63.25% | 3.90% | 14.40% | 0.296 | 100% |
| Bosun 3.1 1.7B | 1.738B | zero-shot | 49.80% | 18.48% | 30.15% | 0.590 | 100% |
### DecisionBench — 1,565-row matched board
| Model | Params | Primary accuracy | ECE | NLL | Brier | Coverage |
|---|---:|---:|---:|---:|---:|---:|
| Bosun 3.1 1.7B | 1.738B | **82.88%** | 6.10% | **0.468** | **22.88%** | 100% |
| **Pluto-2.1** | **1.738B** | **72.08%** | **5.86%** | **0.744** | **37.30%** | **100%** |
| d1-3B | 3.123B | 64.86% | 11.74% | 1.034 | 49.37% | 100% |
| d1-2B | 1.918B | 63.39% | 4.48% | 0.933 | 45.10% | 100% |
| Pluto-2 400M | 397.4M | 57.89% | 3.04% | 1.087 | 54.77% | 100% |
Coverage is `2,000/2,000` on Typed Decisions and `1,565/1,565` of the
DecisionBench matched subset, which is 6.55% of the full 23,900-row suite.
Jev's published card does not report coverage, so it is marked `-`. The matched
subset is the shared accessibility slice, not the full suite.
**Two tracks.** Pluto-2.1 is the balanced generalist. The 400M Pluto-2 Typed checkpoint is the raw Typed specialist and beats every fitted specialist above.





### Comparison hygiene
The Typed Decisions result is the full 2,000-decision test split. The
DecisionBench result is the 1,565-row matched subset used for every model in the
table: ≤16 candidates and ≤2,048-token prompts, not the full 23,900-row suite.
Bosun, Pluto-2, d1-2B, and d1-3B were all run locally on the same rows and
scored with the same code. Raw summaries are in benchmarks/. The full DecisionBench suite is not claimed.
---
## Architecture

- Qwen3-1.7B backbone with 256 stable decision-token slots.
- The fine-tuned adapter is merged into the base; this repository is self-contained.
- One forward pass scores every presented candidate.
- Up to 255 runtime choices per question.
- No d1 weights, no d1-generated training targets, no ensemble, and no runtime
dependency on another model service.
**Lineage:** Qwen3-1.7B → Hanno-Labs Bosun 3.1 1.7B → Pluto-2.1 2,000-step
fine-tune → merged standalone checkpoint. Pluto-2.1 is self-contained at
inference: no adapter files are needed and no base model is downloaded at runtime.
---
## Quickstart
```bash
git clone https://huggingface.co/omida-ai/pluto-2.1
pip install -e "pluto-2.1/code"
```
```python
from pluto21 import Pluto21
model = Pluto21("pluto-2.1")
out = model.predict(
state={"transaction": "Duplicate charge confirmed by the bank."},
instructions="Was the duplicate charge confirmed?",
candidates=[
{"id": "yes", "label": "Yes"},
{"id": "no", "label": "No"},
],
decision_type="noul",
row_id="demo-1",
)
print(out["probabilities"])
```
```python
out = model.predict(
state={"ticket": "Customer was charged twice and the parcel is late."},
instructions="Which team should handle this?",
candidates=[
{"id": "billing", "label": "Billing", "description": "Charges and refunds"},
{"id": "shipping", "label": "Shipping", "description": "Delivery and parcels"},
{"id": "technical", "label": "Technical", "description": "App or site faults"},
],
decision_type="choice",
row_id="demo-2",
)
print(out["probabilities"])
```
The runtime returns candidate-aligned probabilities. It never generates text.
---
## Model details
| | |
|---|---|
| Parameters | **1,737,985,024** (1.738B) |
| Backbone | Qwen3-1.7B, 28 layers, 40,960-token context |
| Decision interface | 256 stable decision-token slots |
| Candidates | 2–255 per question |
| Outputs | `choice`, `noul`, `score` distributions |
| Weights | BF16, 3.44GB |
| License | Apache-2.0 |
| Initialization | Bosun 3.1 1.7B (Apache-2.0) |
| Base | Qwen3-1.7B |
| Runtime | `pluto21`, PyTorch + Transformers |
## Training
- 2,000 LoRA steps on Pluto’s Typed Decisions and JEV decision data.
- Selected checkpoint: 2,000 steps, the only tested checkpoint that clears both
d1-2B and d1-3B on both measured benchmarks.
- Trained and merged on one 16GB consumer GPU.
- The adapter is merged into the base; no PEFT dependency at inference.
- The Typed Decisions test split was never used for training or checkpoint
selection.
## Scope
Pluto-2.1 is a decision model, not a chat or reasoning model. The DecisionBench
comparison is the matched accessibility subset; the full 23,900-row suite is not
claimed. As with any benchmark, validate on your own data before high-stakes use.
## License and attribution
Pluto-2.1 weights and runtime are released under **Apache-2.0**. Upstream
components remain under their original licenses:
- Qwen3-1.7B, Apache-2.0
- Hanno-Labs Bosun 3.1 1.7B, Apache-2.0
See `LICENSE`, `NOTICE`, and `serving.json`. No d1 weights or outputs are
included, and d1 is not required at inference.
## Citation
```bibtex
@misc{omida2026pluto21,
title = {Pluto-2.1: A 1.7B Standalone Decision Model},
author = {Omida AI},
year = {2026},
url = {https://huggingface.co/omida-ai/pluto-2.1}
}
```
Built by **Omida AI** on one 16GB consumer GPU.
|