Sync model card metadata
Browse files- MODEL_CARD.md +228 -228
MODEL_CARD.md
CHANGED
|
@@ -1,228 +1,228 @@
|
|
| 1 |
-
---
|
| 2 |
-
license: apache-2.0
|
| 3 |
-
language:
|
| 4 |
-
- en
|
| 5 |
-
library_name:
|
| 6 |
-
pipeline_tag: text-classification
|
| 7 |
-
base_model:
|
| 8 |
-
- Qwen/Qwen3-1.7B
|
| 9 |
-
- Hanno-Labs/bosun-v3.1-1.7b
|
| 10 |
-
datasets:
|
| 11 |
-
- LocalLLaMA/typed-decisions
|
| 12 |
-
- SargeDev/jev-distill-corpus-v3
|
| 13 |
-
tags:
|
| 14 |
-
- decision-model
|
| 15 |
-
- system-one
|
| 16 |
-
- calibrated-decisions
|
| 17 |
-
- typed-decisions
|
| 18 |
-
- choice
|
| 19 |
-
- noul
|
| 20 |
-
- score
|
| 21 |
-
- qwen3
|
| 22 |
-
- bosun
|
| 23 |
-
- safetensors
|
| 24 |
-
- pytorch
|
| 25 |
-
model-index:
|
| 26 |
-
- name: Pluto-2.1-1.7B
|
| 27 |
-
results:
|
| 28 |
-
- task:
|
| 29 |
-
type: text-classification
|
| 30 |
-
name: Typed Decisions
|
| 31 |
-
dataset:
|
| 32 |
-
name: LocalLLaMA/typed-decisions
|
| 33 |
-
type: LocalLLaMA/typed-decisions
|
| 34 |
-
metrics:
|
| 35 |
-
- type: accuracy
|
| 36 |
-
name: Accuracy
|
| 37 |
-
value: 0.6695
|
| 38 |
-
- type: brier
|
| 39 |
-
name: Brier
|
| 40 |
-
value: 0.1261
|
| 41 |
-
- type: kl
|
| 42 |
-
name: KL
|
| 43 |
-
value: 0.2139
|
| 44 |
-
- task:
|
| 45 |
-
type: text-classification
|
| 46 |
-
name: DecisionBench matched subset
|
| 47 |
-
dataset:
|
| 48 |
-
name: Hanno-Labs/decision-bench
|
| 49 |
-
type: Hanno-Labs/decision-bench
|
| 50 |
-
metrics:
|
| 51 |
-
- type: accuracy
|
| 52 |
-
name: Accuracy
|
| 53 |
-
value: 0.7208
|
| 54 |
-
- type: brier
|
| 55 |
-
name: Brier
|
| 56 |
-
value: 0.3730
|
| 57 |
-
- type: nll
|
| 58 |
-
name: NLL
|
| 59 |
-
value: 0.7439
|
| 60 |
-
---
|
| 61 |
-
|
| 62 |
-
# Pluto-2.1
|
| 63 |
-
|
| 64 |
-
### A 1.7B decision model that beats d1-2B on both measured decision benchmarks.
|
| 65 |
-
|
| 66 |
-
Pluto-2.1 reads a state and typed questions, then returns a calibrated probability
|
| 67 |
-
distribution for every candidate. It does not generate an answer, so there is
|
| 68 |
-
nothing to parse, nothing to retry, and nothing to hallucinate.
|
| 69 |
-
|
| 70 |
-
Built solo on one **RTX 5060 Ti 16GB**.
|
| 71 |
-
|
| 72 |
-
**Headline:** **0.6695** on Typed Decisions and **0.7208** on the matched
|
| 73 |
-
DecisionBench comparison, versus **0.6325** and **0.6339** for d1-2B. One
|
| 74 |
-
standalone 1.7B checkpoint, **2–255 candidates**, **choice / noul / score**,
|
| 75 |
-
**Apache-2.0**.
|
| 76 |
-
|
| 77 |
-
---
|
| 78 |
-
|
| 79 |
-
## The receipts
|
| 80 |
-
|
| 81 |
-
Same rows and same scorer for both models. Higher is better.
|
| 82 |
-
|
| 83 |
-
| Model | Params | Typed Decisions | DecisionBench matched | Brier | KL |
|
| 84 |
-
|---|---:|---:|---:|---:|---:|
|
| 85 |
-
| **Pluto-2.1** | **1.738B** | **0.6695** | **0.7208** | **0.1261** | **0.2139** |
|
| 86 |
-
| d1-2B | 1.918B | 0.6325 | 0.6339 | 0.1440 | 0.2958 |
|
| 87 |
-
|
| 88 |
-
**What this means**
|
| 89 |
-
|
| 90 |
-
- **+3.7 points** on the full 2,000-decision Typed Decisions test.
|
| 91 |
-
- **+8.7 points** on the matched DecisionBench comparison.
|
| 92 |
-
- **9.4% fewer parameters** than d1-2B.
|
| 93 |
-
- **Sharper distributions**: lower Brier and KL on Typed Decisions, and lower
|
| 94 |
-
NLL and Brier on DecisionBench.
|
| 95 |
-
- **One forward pass.** No autoregressive decoding and no token bill.
|
| 96 |
-
|
| 97 |
-

|
| 98 |
-
|
| 99 |
-

|
| 100 |
-
|
| 101 |
-

|
| 102 |
-
|
| 103 |
-

|
| 104 |
-
|
| 105 |
-
### Comparison hygiene
|
| 106 |
-
|
| 107 |
-
Pluto-2.1 is a standalone merged checkpoint. The full 2,000-decision Typed
|
| 108 |
-
Decisions test and a 1,565-row DecisionBench matched subset are reported. The
|
| 109 |
-
DecisionBench subset is the same ≤16-candidate, ≤2,048-token accessibility slice
|
| 110 |
-
used for the d1-2B comparison; it is not the full 23,900-row suite. The full
|
| 111 |
-
suite is not claimed here.
|
| 112 |
-
|
| 113 |
-
---
|
| 114 |
-
|
| 115 |
-
## Architecture
|
| 116 |
-
|
| 117 |
-

|
| 118 |
-
|
| 119 |
-
- Qwen3-1.7B backbone with 256 stable decision-token slots.
|
| 120 |
-
- The fine-tuned adapter is merged into the base; this repository is self-contained.
|
| 121 |
-
- One forward pass scores every presented candidate.
|
| 122 |
-
- Up to 255 runtime choices per question.
|
| 123 |
-
- No d1 weights, no d1-generated training targets, no ensemble, and no runtime
|
| 124 |
-
dependency on another model service.
|
| 125 |
-
|
| 126 |
-
**Lineage:** Qwen3-1.7B → Hanno-Labs Bosun 3.1 1.7B → Pluto-2.1 2,000-step
|
| 127 |
-
fine-tune → merged standalone checkpoint. This is disclosed because it is true;
|
| 128 |
-
the release is not presented as trained from random initialization.
|
| 129 |
-
|
| 130 |
-
---
|
| 131 |
-
|
| 132 |
-
## Quickstart
|
| 133 |
-
|
| 134 |
-
```bash
|
| 135 |
-
git clone https://huggingface.co/omida-ai/pluto-2.1
|
| 136 |
-
pip install -e "pluto-2.1/code"
|
| 137 |
-
```
|
| 138 |
-
|
| 139 |
-
```python
|
| 140 |
-
from pluto21 import Pluto21
|
| 141 |
-
|
| 142 |
-
model = Pluto21("pluto-2.1")
|
| 143 |
-
out = model.predict(
|
| 144 |
-
state={"transaction": "Duplicate charge confirmed by the bank."},
|
| 145 |
-
instructions="Was the duplicate charge confirmed?",
|
| 146 |
-
candidates=[
|
| 147 |
-
{"id": "yes", "label": "Yes"},
|
| 148 |
-
{"id": "no", "label": "No"},
|
| 149 |
-
],
|
| 150 |
-
decision_type="noul",
|
| 151 |
-
row_id="demo-1",
|
| 152 |
-
)
|
| 153 |
-
print(out["probabilities"])
|
| 154 |
-
```
|
| 155 |
-
|
| 156 |
-
```python
|
| 157 |
-
out = model.predict(
|
| 158 |
-
state={"ticket": "Customer was charged twice and the parcel is late."},
|
| 159 |
-
instructions="Which team should handle this?",
|
| 160 |
-
candidates=[
|
| 161 |
-
{"id": "billing", "label": "Billing", "description": "Charges and refunds"},
|
| 162 |
-
{"id": "shipping", "label": "Shipping", "description": "Delivery and parcels"},
|
| 163 |
-
{"id": "technical", "label": "Technical", "description": "App or site faults"},
|
| 164 |
-
],
|
| 165 |
-
decision_type="choice",
|
| 166 |
-
row_id="demo-2",
|
| 167 |
-
)
|
| 168 |
-
print(out["probabilities"])
|
| 169 |
-
```
|
| 170 |
-
|
| 171 |
-
The runtime returns candidate-aligned probabilities. It never generates text.
|
| 172 |
-
|
| 173 |
-
---
|
| 174 |
-
|
| 175 |
-
## Model details
|
| 176 |
-
|
| 177 |
-
| | |
|
| 178 |
-
|---|---|
|
| 179 |
-
| Parameters | **1,737,985,024** (1.738B) |
|
| 180 |
-
| Backbone | Qwen3-1.7B, 28 layers, 40,960-token context |
|
| 181 |
-
| Decision interface | 256 stable decision-token slots |
|
| 182 |
-
| Candidates | 2–255 per question |
|
| 183 |
-
| Outputs | `choice`, `noul`, `score` distributions |
|
| 184 |
-
| Weights | BF16, 3.44GB |
|
| 185 |
-
| License | Apache-2.0 |
|
| 186 |
-
| Initialization | Bosun 3.1 1.7B (Apache-2.0) |
|
| 187 |
-
| Base | Qwen3-1.7B |
|
| 188 |
-
| Runtime | `pluto21`, PyTorch + Transformers |
|
| 189 |
-
|
| 190 |
-
## Training
|
| 191 |
-
|
| 192 |
-
- 2,000 LoRA steps on Pluto’s Typed Decisions and JEV decision data.
|
| 193 |
-
- Selected checkpoint: 2,000 steps, the only tested checkpoint that beats d1-2B
|
| 194 |
-
on both measured benchmarks.
|
| 195 |
-
- Trained and merged on one 16GB consumer GPU.
|
| 196 |
-
- The adapter is merged into the base; no PEFT dependency at inference.
|
| 197 |
-
- The Typed Decisions test split was never used for training or checkpoint
|
| 198 |
-
selection.
|
| 199 |
-
|
| 200 |
-
## Scope
|
| 201 |
-
|
| 202 |
-
Pluto-2.1 is a decision model, not a chat or reasoning model. The DecisionBench
|
| 203 |
-
comparison is the matched accessibility subset; the full 23,900-row suite is not
|
| 204 |
-
claimed. As with any benchmark, validate on your own data before high-stakes use.
|
| 205 |
-
|
| 206 |
-
## License and attribution
|
| 207 |
-
|
| 208 |
-
Pluto-2.1 weights and runtime are released under **Apache-2.0**. Upstream
|
| 209 |
-
components remain under their original licenses:
|
| 210 |
-
|
| 211 |
-
- Qwen3-1.7B, Apache-2.0
|
| 212 |
-
- Hanno-Labs Bosun 3.1 1.7B, Apache-2.0
|
| 213 |
-
|
| 214 |
-
See `LICENSE`, `NOTICE`, and `serving.json`. No d1 weights or outputs are
|
| 215 |
-
included, and d1 is not required at inference.
|
| 216 |
-
|
| 217 |
-
## Citation
|
| 218 |
-
|
| 219 |
-
```bibtex
|
| 220 |
-
@misc{omida2026pluto21,
|
| 221 |
-
title = {Pluto-2.1: A 1.7B Standalone Decision Model},
|
| 222 |
-
author = {Omida AI},
|
| 223 |
-
year = {2026},
|
| 224 |
-
url = {https://huggingface.co/omida-ai/pluto-2.1}
|
| 225 |
-
}
|
| 226 |
-
```
|
| 227 |
-
|
| 228 |
-
Built by **Omida AI** on one 16GB consumer GPU.
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
language:
|
| 4 |
+
- en
|
| 5 |
+
library_name: pytorch
|
| 6 |
+
pipeline_tag: text-classification
|
| 7 |
+
base_model:
|
| 8 |
+
- Qwen/Qwen3-1.7B
|
| 9 |
+
- Hanno-Labs/bosun-v3.1-1.7b
|
| 10 |
+
datasets:
|
| 11 |
+
- LocalLLaMA/typed-decisions
|
| 12 |
+
- SargeDev/jev-distill-corpus-v3
|
| 13 |
+
tags:
|
| 14 |
+
- decision-model
|
| 15 |
+
- system-one
|
| 16 |
+
- calibrated-decisions
|
| 17 |
+
- typed-decisions
|
| 18 |
+
- choice
|
| 19 |
+
- noul
|
| 20 |
+
- score
|
| 21 |
+
- qwen3
|
| 22 |
+
- bosun
|
| 23 |
+
- safetensors
|
| 24 |
+
- pytorch
|
| 25 |
+
model-index:
|
| 26 |
+
- name: Pluto-2.1-1.7B
|
| 27 |
+
results:
|
| 28 |
+
- task:
|
| 29 |
+
type: text-classification
|
| 30 |
+
name: Typed Decisions
|
| 31 |
+
dataset:
|
| 32 |
+
name: LocalLLaMA/typed-decisions
|
| 33 |
+
type: LocalLLaMA/typed-decisions
|
| 34 |
+
metrics:
|
| 35 |
+
- type: accuracy
|
| 36 |
+
name: Accuracy
|
| 37 |
+
value: 0.6695
|
| 38 |
+
- type: brier
|
| 39 |
+
name: Brier
|
| 40 |
+
value: 0.1261
|
| 41 |
+
- type: kl
|
| 42 |
+
name: KL
|
| 43 |
+
value: 0.2139
|
| 44 |
+
- task:
|
| 45 |
+
type: text-classification
|
| 46 |
+
name: DecisionBench matched subset
|
| 47 |
+
dataset:
|
| 48 |
+
name: Hanno-Labs/decision-bench
|
| 49 |
+
type: Hanno-Labs/decision-bench
|
| 50 |
+
metrics:
|
| 51 |
+
- type: accuracy
|
| 52 |
+
name: Accuracy
|
| 53 |
+
value: 0.7208
|
| 54 |
+
- type: brier
|
| 55 |
+
name: Brier
|
| 56 |
+
value: 0.3730
|
| 57 |
+
- type: nll
|
| 58 |
+
name: NLL
|
| 59 |
+
value: 0.7439
|
| 60 |
+
---
|
| 61 |
+
|
| 62 |
+
# Pluto-2.1
|
| 63 |
+
|
| 64 |
+
### A 1.7B decision model that beats d1-2B on both measured decision benchmarks.
|
| 65 |
+
|
| 66 |
+
Pluto-2.1 reads a state and typed questions, then returns a calibrated probability
|
| 67 |
+
distribution for every candidate. It does not generate an answer, so there is
|
| 68 |
+
nothing to parse, nothing to retry, and nothing to hallucinate.
|
| 69 |
+
|
| 70 |
+
Built solo on one **RTX 5060 Ti 16GB**.
|
| 71 |
+
|
| 72 |
+
**Headline:** **0.6695** on Typed Decisions and **0.7208** on the matched
|
| 73 |
+
DecisionBench comparison, versus **0.6325** and **0.6339** for d1-2B. One
|
| 74 |
+
standalone 1.7B checkpoint, **2–255 candidates**, **choice / noul / score**,
|
| 75 |
+
**Apache-2.0**.
|
| 76 |
+
|
| 77 |
+
---
|
| 78 |
+
|
| 79 |
+
## The receipts
|
| 80 |
+
|
| 81 |
+
Same rows and same scorer for both models. Higher is better.
|
| 82 |
+
|
| 83 |
+
| Model | Params | Typed Decisions | DecisionBench matched | Brier | KL |
|
| 84 |
+
|---|---:|---:|---:|---:|---:|
|
| 85 |
+
| **Pluto-2.1** | **1.738B** | **0.6695** | **0.7208** | **0.1261** | **0.2139** |
|
| 86 |
+
| d1-2B | 1.918B | 0.6325 | 0.6339 | 0.1440 | 0.2958 |
|
| 87 |
+
|
| 88 |
+
**What this means**
|
| 89 |
+
|
| 90 |
+
- **+3.7 points** on the full 2,000-decision Typed Decisions test.
|
| 91 |
+
- **+8.7 points** on the matched DecisionBench comparison.
|
| 92 |
+
- **9.4% fewer parameters** than d1-2B.
|
| 93 |
+
- **Sharper distributions**: lower Brier and KL on Typed Decisions, and lower
|
| 94 |
+
NLL and Brier on DecisionBench.
|
| 95 |
+
- **One forward pass.** No autoregressive decoding and no token bill.
|
| 96 |
+
|
| 97 |
+

|
| 98 |
+
|
| 99 |
+

|
| 100 |
+
|
| 101 |
+

|
| 102 |
+
|
| 103 |
+

|
| 104 |
+
|
| 105 |
+
### Comparison hygiene
|
| 106 |
+
|
| 107 |
+
Pluto-2.1 is a standalone merged checkpoint. The full 2,000-decision Typed
|
| 108 |
+
Decisions test and a 1,565-row DecisionBench matched subset are reported. The
|
| 109 |
+
DecisionBench subset is the same ≤16-candidate, ≤2,048-token accessibility slice
|
| 110 |
+
used for the d1-2B comparison; it is not the full 23,900-row suite. The full
|
| 111 |
+
suite is not claimed here.
|
| 112 |
+
|
| 113 |
+
---
|
| 114 |
+
|
| 115 |
+
## Architecture
|
| 116 |
+
|
| 117 |
+

|
| 118 |
+
|
| 119 |
+
- Qwen3-1.7B backbone with 256 stable decision-token slots.
|
| 120 |
+
- The fine-tuned adapter is merged into the base; this repository is self-contained.
|
| 121 |
+
- One forward pass scores every presented candidate.
|
| 122 |
+
- Up to 255 runtime choices per question.
|
| 123 |
+
- No d1 weights, no d1-generated training targets, no ensemble, and no runtime
|
| 124 |
+
dependency on another model service.
|
| 125 |
+
|
| 126 |
+
**Lineage:** Qwen3-1.7B → Hanno-Labs Bosun 3.1 1.7B → Pluto-2.1 2,000-step
|
| 127 |
+
fine-tune → merged standalone checkpoint. This is disclosed because it is true;
|
| 128 |
+
the release is not presented as trained from random initialization.
|
| 129 |
+
|
| 130 |
+
---
|
| 131 |
+
|
| 132 |
+
## Quickstart
|
| 133 |
+
|
| 134 |
+
```bash
|
| 135 |
+
git clone https://huggingface.co/omida-ai/pluto-2.1
|
| 136 |
+
pip install -e "pluto-2.1/code"
|
| 137 |
+
```
|
| 138 |
+
|
| 139 |
+
```python
|
| 140 |
+
from pluto21 import Pluto21
|
| 141 |
+
|
| 142 |
+
model = Pluto21("pluto-2.1")
|
| 143 |
+
out = model.predict(
|
| 144 |
+
state={"transaction": "Duplicate charge confirmed by the bank."},
|
| 145 |
+
instructions="Was the duplicate charge confirmed?",
|
| 146 |
+
candidates=[
|
| 147 |
+
{"id": "yes", "label": "Yes"},
|
| 148 |
+
{"id": "no", "label": "No"},
|
| 149 |
+
],
|
| 150 |
+
decision_type="noul",
|
| 151 |
+
row_id="demo-1",
|
| 152 |
+
)
|
| 153 |
+
print(out["probabilities"])
|
| 154 |
+
```
|
| 155 |
+
|
| 156 |
+
```python
|
| 157 |
+
out = model.predict(
|
| 158 |
+
state={"ticket": "Customer was charged twice and the parcel is late."},
|
| 159 |
+
instructions="Which team should handle this?",
|
| 160 |
+
candidates=[
|
| 161 |
+
{"id": "billing", "label": "Billing", "description": "Charges and refunds"},
|
| 162 |
+
{"id": "shipping", "label": "Shipping", "description": "Delivery and parcels"},
|
| 163 |
+
{"id": "technical", "label": "Technical", "description": "App or site faults"},
|
| 164 |
+
],
|
| 165 |
+
decision_type="choice",
|
| 166 |
+
row_id="demo-2",
|
| 167 |
+
)
|
| 168 |
+
print(out["probabilities"])
|
| 169 |
+
```
|
| 170 |
+
|
| 171 |
+
The runtime returns candidate-aligned probabilities. It never generates text.
|
| 172 |
+
|
| 173 |
+
---
|
| 174 |
+
|
| 175 |
+
## Model details
|
| 176 |
+
|
| 177 |
+
| | |
|
| 178 |
+
|---|---|
|
| 179 |
+
| Parameters | **1,737,985,024** (1.738B) |
|
| 180 |
+
| Backbone | Qwen3-1.7B, 28 layers, 40,960-token context |
|
| 181 |
+
| Decision interface | 256 stable decision-token slots |
|
| 182 |
+
| Candidates | 2–255 per question |
|
| 183 |
+
| Outputs | `choice`, `noul`, `score` distributions |
|
| 184 |
+
| Weights | BF16, 3.44GB |
|
| 185 |
+
| License | Apache-2.0 |
|
| 186 |
+
| Initialization | Bosun 3.1 1.7B (Apache-2.0) |
|
| 187 |
+
| Base | Qwen3-1.7B |
|
| 188 |
+
| Runtime | `pluto21`, PyTorch + Transformers |
|
| 189 |
+
|
| 190 |
+
## Training
|
| 191 |
+
|
| 192 |
+
- 2,000 LoRA steps on Pluto’s Typed Decisions and JEV decision data.
|
| 193 |
+
- Selected checkpoint: 2,000 steps, the only tested checkpoint that beats d1-2B
|
| 194 |
+
on both measured benchmarks.
|
| 195 |
+
- Trained and merged on one 16GB consumer GPU.
|
| 196 |
+
- The adapter is merged into the base; no PEFT dependency at inference.
|
| 197 |
+
- The Typed Decisions test split was never used for training or checkpoint
|
| 198 |
+
selection.
|
| 199 |
+
|
| 200 |
+
## Scope
|
| 201 |
+
|
| 202 |
+
Pluto-2.1 is a decision model, not a chat or reasoning model. The DecisionBench
|
| 203 |
+
comparison is the matched accessibility subset; the full 23,900-row suite is not
|
| 204 |
+
claimed. As with any benchmark, validate on your own data before high-stakes use.
|
| 205 |
+
|
| 206 |
+
## License and attribution
|
| 207 |
+
|
| 208 |
+
Pluto-2.1 weights and runtime are released under **Apache-2.0**. Upstream
|
| 209 |
+
components remain under their original licenses:
|
| 210 |
+
|
| 211 |
+
- Qwen3-1.7B, Apache-2.0
|
| 212 |
+
- Hanno-Labs Bosun 3.1 1.7B, Apache-2.0
|
| 213 |
+
|
| 214 |
+
See `LICENSE`, `NOTICE`, and `serving.json`. No d1 weights or outputs are
|
| 215 |
+
included, and d1 is not required at inference.
|
| 216 |
+
|
| 217 |
+
## Citation
|
| 218 |
+
|
| 219 |
+
```bibtex
|
| 220 |
+
@misc{omida2026pluto21,
|
| 221 |
+
title = {Pluto-2.1: A 1.7B Standalone Decision Model},
|
| 222 |
+
author = {Omida AI},
|
| 223 |
+
year = {2026},
|
| 224 |
+
url = {https://huggingface.co/omida-ai/pluto-2.1}
|
| 225 |
+
}
|
| 226 |
+
```
|
| 227 |
+
|
| 228 |
+
Built by **Omida AI** on one 16GB consumer GPU.
|