Feature Extraction
Transformers
Safetensors
modernbert
typed-decisions
decision-index
decision-model
cross-encoder
text-embeddings-inference
Instructions to use tasksource/tasksource-decider-nano with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use tasksource/tasksource-decider-nano with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("feature-extraction", model="tasksource/tasksource-decider-nano")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("tasksource/tasksource-decider-nano") model = AutoModel.from_pretrained("tasksource/tasksource-decider-nano", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Upload README.md with huggingface_hub
Browse files
README.md
CHANGED
|
@@ -1,160 +1,77 @@
|
|
| 1 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
tags:
|
|
|
|
| 3 |
- ColBERT
|
| 4 |
- multi-vector
|
| 5 |
- PyLate
|
| 6 |
-
- sentence-transformers
|
| 7 |
- typed-decisions
|
| 8 |
- zero-shot-classification
|
| 9 |
- decision-making
|
| 10 |
-
pipeline_tag: text-classification
|
| 11 |
-
library_name: sentence-transformers
|
| 12 |
-
license: apache-2.0
|
| 13 |
-
language:
|
| 14 |
-
- en
|
| 15 |
-
base_model: lightonai/LateOn
|
| 16 |
-
metrics:
|
| 17 |
-
- accuracy
|
| 18 |
-
- brier_score
|
| 19 |
-
- log_loss
|
| 20 |
---
|
| 21 |
|
| 22 |
-
<div align="center">
|
| 23 |
-
|
| 24 |
# โก Tasksource-JEV-Nano (`tasksource-jev-nano-v0`)
|
| 25 |
|
| 26 |
-
**SOTA High-Throughput Native Decision Model (<200M Parameters)**
|
| 27 |
*Decoupled Multi-Vector Late Interaction for Fast, Calibrated System-One Decisions*
|
| 28 |
|
| 29 |
-
[](https://github.com/sileod/decision-models)
|
| 31 |
-
[](https://github.com/sileod/decision-models)
|
| 32 |
-
[](https://github.com/sileod/decision-models)
|
| 33 |
-
[](https://opensource.org/licenses/Apache-2.0)
|
| 34 |
-
[](https://huggingface.co/answerdotai/ModernBERT-base)
|
| 35 |
-
[](https://huggingface.co/answerdotai/ModernBERT-base)
|
| 36 |
-
|
| 37 |
-
</div>
|
| 38 |
-
|
| 39 |
-
---
|
| 40 |
-
|
| 41 |
-
### What is Tasksource-JEV-Nano?
|
| 42 |
|
| 43 |
-
|
| 44 |
|
| 45 |
-
Built on [`answerdotai/ModernBERT-base`](https://huggingface.co/answerdotai/ModernBERT-base) and [`lightonai/LateOn`](https://huggingface.co/lightonai/LateOn),
|
| 46 |
-
1. **Choice**: Selecting the best candidate among variable numbers of options ($K=2$ to $K=150+$).
|
| 47 |
-
2. **NOUL**: Yes/no uncertainty decisions.
|
| 48 |
-
3. **Score**: Quantitative ranking and graded scales.
|
| 49 |
-
|
| 50 |
-
---
|
| 51 |
-
|
| 52 |
-
### Key Architectural Strengths
|
| 53 |
-
|
| 54 |
-
- **Reusable State Caching**: The situation context (state + question) is encoded **once** into token vectors. Evaluating 1, 10, or 100 candidate options reuses this cached state without re-encoding the context, delivering up to **5.45x speedup**.
|
| 55 |
-
- **Exact Candidate Permutation Equivariance**: Unlike encoder-concatenation classifiers where candidate order biases logits, late-interaction candidate scoring is mathematically independent across candidates. Permuting the option list guarantees an identically permuted output (max diff: 0.00e+00).
|
| 56 |
-
- **Sub-40ms Low-Latency Inference**: Operates in ~30โ37 ms per decision on standard GPUs, requiring only ~1.5 GB VRAM.
|
| 57 |
-
|
| 58 |
-
---
|
| 59 |
|
| 60 |
## ๐ Benchmark Evaluations
|
| 61 |
|
| 62 |
-
All evaluations below are measured on official benchmark suites under zero-shot out-of-distribution conditions:
|
| 63 |
-
|
| 64 |
-
### ๐ Sub-200M Peer Comparison
|
| 65 |
-
|
| 66 |
-
| Model | Size | Decision Index Raw | Classifier-Benchmark v2 | JevBench v1.3 | Banking77 ($K=77$) | CLINC150 ($K=151$) | Latency (p50) |
|
| 67 |
-
| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
| 68 |
-
| **Tasksource-JEV-Nano-v0** | **149M** | **30.65** ๐ | **55.78%** ๐ | **63.14** ๐ | **44.22%** ๐ | **67.04%** ๐ | **37.6 ms** |
|
| 69 |
-
| GLiClass Modern-Large | 340M | โ | 53.80% | ~55.9 | 40.20% | ~58.4% | ~85 ms |
|
| 70 |
-
| GLiNER2.5 Base | 200M | โ | 54.20% | ~60.0 | 41.50% | ~61.0% | ~62 ms |
|
| 71 |
-
| GLiClass Base | 150M | โ | 50.70% | ~51.2 | 37.30% | ~54.1% | ~45 ms |
|
| 72 |
-
| Laya Multilingual | 150M | โ | 46.10% | ~51.7 | 1.80% *(collapses)* | ~38.2% | ~50 ms |
|
| 73 |
-
| GLiClass Edge | 35M | โ | 35.20% | ~35.3 | 24.10% | ~31.0% | ~18 ms |
|
| 74 |
-
|
| 75 |
-
---
|
| 76 |
-
|
| 77 |
### Official Decision Index 0.2.1 (Full 100% Suite: 150,759 Requests)
|
| 78 |
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
- **
|
| 82 |
-
- **
|
| 83 |
-
- **Breadth Skill Index**: **8.39 / 100**
|
| 84 |
-
- **Suite Coverage**: **100.0%** (150,759 / 150,759 requests completed, 0 errors)
|
| 85 |
-
|
| 86 |
-
#### Area Breakdown (Official 0.2.1 Weights):
|
| 87 |
-
- **Retrieval & Intent Classification**: **40.37%** (Skill: **20.84%**)
|
| 88 |
-
- *CLINC150+OOS*: **67.04%** macro-F1 (151 classes, 5,500 requests)
|
| 89 |
-
- *BANKING77*: **40.79%** macro-F1 / **44.22%** accuracy (77 classes, 3,080 requests)
|
| 90 |
-
- **Arts & Human Taste**: **33.73%** (Skill: **9.32%**)
|
| 91 |
-
- *BPoMP*: **55.54%** accuracy (5,000 requests)
|
| 92 |
-
- *Humicroedit*: **55.52%** accuracy (2,628 requests)
|
| 93 |
-
- *New Yorker Caption Matching*: **34.66%** accuracy
|
| 94 |
-
- **Language Understanding**: **32.21%** (Skill: **4.34%**)
|
| 95 |
-
- *WinoGrande*: **51.85%** accuracy
|
| 96 |
-
- *ANLI*: **32.63%** macro-F1 (3,200 requests)
|
| 97 |
-
- *HellaSwag*: **30.69%** accuracy
|
| 98 |
-
- **Tools & Automation**: **26.70%** (Skill: **15.18%**)
|
| 99 |
-
- *BFCL*: **62.60%** field accuracy / **34.95%** case-exact (1,694 requests)
|
| 100 |
-
- *API-Bank*: **31.30%** accuracy (53 API tools, 508 requests)
|
| 101 |
-
- *When2Call*: **30.70%** accuracy
|
| 102 |
-
- **Knowledge & Reasoning**: **23.16%** (Skill: **2.23%**)
|
| 103 |
-
- *MMLU*: **29.72%** accuracy (all 14,033 questions across 57 subjects)
|
| 104 |
-
- *RAGTruth*: **47.8%** hallucination detection F1
|
| 105 |
|
| 106 |
-
|
| 107 |
|
| 108 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 109 |
|
| 110 |
-
##
|
| 111 |
|
| 112 |
-
```
|
| 113 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 114 |
```
|
| 115 |
|
| 116 |
-
|
| 117 |
|
| 118 |
```python
|
| 119 |
from pylate import models
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
model = models.ColBERT("tasksource/tasksource-jev-nano-v0")
|
| 124 |
-
|
| 125 |
-
# 1. Provide the decision context (State + Question)
|
| 126 |
-
state = "Customer reports unauthorized international wire transfer of $4,500."
|
| 127 |
-
question = "Select the appropriate fraud mitigation routing:"
|
| 128 |
-
context = [state + "\nQuestion: " + question]
|
| 129 |
-
|
| 130 |
-
# 2. Provide candidate decision options
|
| 131 |
-
options = [
|
| 132 |
-
"approve and monitor silently",
|
| 133 |
-
"challenge with a push notification",
|
| 134 |
-
"freeze the account and call the customer",
|
| 135 |
-
"decline and file a report",
|
| 136 |
-
]
|
| 137 |
-
|
| 138 |
-
# 3. State is encoded once; each option is scored via token MaxSim
|
| 139 |
-
ctx = model.encode(context, is_query=False, convert_to_tensor=True)[0]
|
| 140 |
-
opts = model.encode(options, is_query=True, convert_to_tensor=True)
|
| 141 |
-
scores = torch.stack([(o @ ctx.T).max(dim=1).values.sum() for o in opts])
|
| 142 |
-
|
| 143 |
-
# 4. Calibrated temperature softmax probabilities
|
| 144 |
-
temperature = 0.3236 # Calibrated model temperature
|
| 145 |
-
probs = torch.softmax(scores / temperature, dim=0)
|
| 146 |
-
|
| 147 |
-
for opt, p in zip(options, probs):
|
| 148 |
-
print(f" {opt:45s} -> {p:.4f}")
|
| 149 |
```
|
| 150 |
|
| 151 |
-
---
|
| 152 |
-
|
| 153 |
## ๐ Citation
|
| 154 |
|
| 155 |
```bibtex
|
| 156 |
-
@misc{
|
| 157 |
-
title={Tasksource-JEV-Nano
|
| 158 |
author={Sileo, Damien},
|
| 159 |
year={2026},
|
| 160 |
howpublished={\url{https://huggingface.co/tasksource/tasksource-jev-nano-v0}},
|
|
|
|
| 1 |
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
library_name: sentence-transformers
|
| 4 |
+
pipeline_tag: text-classification
|
| 5 |
+
language:
|
| 6 |
+
- en
|
| 7 |
tags:
|
| 8 |
+
- modernbert
|
| 9 |
- ColBERT
|
| 10 |
- multi-vector
|
| 11 |
- PyLate
|
|
|
|
| 12 |
- typed-decisions
|
| 13 |
- zero-shot-classification
|
| 14 |
- decision-making
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
---
|
| 16 |
|
|
|
|
|
|
|
| 17 |
# โก Tasksource-JEV-Nano (`tasksource-jev-nano-v0`)
|
| 18 |
|
| 19 |
+
**SOTA High-Throughput Native Decision Model (\<200M Parameters)**
|
| 20 |
*Decoupled Multi-Vector Late Interaction for Fast, Calibrated System-One Decisions*
|
| 21 |
|
| 22 |
+
[](https://github.com/sileod/decision-models) [](https://github.com/sileod/decision-models)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
|
| 24 |
+
Weights updated 2026-10-06 to the step-4000 single checkpoint (plain grouped multi-question exposure, 16k unique requests) โ no soup. Previous weights scored Raw 30.65 / Skill 9.58; current weights score Raw 32.03 / Skill 10.32 on the same full official suite. It uses the simple release inference path: state + single question (`S + Q_i`) with independently encoded options.
|
| 25 |
|
| 26 |
+
Built on [`answerdotai/ModernBERT-base`](https://huggingface.co/answerdotai/ModernBERT-base) and [`lightonai/LateOn`](https://huggingface.co/lightonai/LateOn) (~149M params, 8192 context). Handles choice (K=2 to 150+), NOUL, and score decisions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
|
| 28 |
## ๐ Benchmark Evaluations
|
| 29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
### Official Decision Index 0.2.1 (Full 100% Suite: 150,759 Requests)
|
| 31 |
|
| 32 |
+
- **Balanced Raw Index**: **32.03 / 100**
|
| 33 |
+
- **Balanced Skill Index (Chance-Corrected)**: **10.32 / 100**
|
| 34 |
+
- **Breadth Skill Index**: 9.01 / 100
|
| 35 |
+
- **Suite Coverage**: 100.0% (150,759 / 150,759 requests, 1 error)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
|
| 37 |
+
#### Area Breakdown (Official 0.2.1 Weights)
|
| 38 |
|
| 39 |
+
- **Retrieval & Intent Classification**: 43.02% (Skill: 23.09%)
|
| 40 |
+
- **Arts & Human Taste**: 36.90% (Skill: 13.36%)
|
| 41 |
+
- **Language Understanding**: 35.07% (Skill: 5.22%)
|
| 42 |
+
- **Tools & Automation**: 24.92% (Skill: 13.50%)
|
| 43 |
+
- **Knowledge & Reasoning**: 23.63% (Skill: 2.12%)
|
| 44 |
|
| 45 |
+
## ๐ Usage
|
| 46 |
|
| 47 |
+
```python
|
| 48 |
+
from modernjev.multivector.lateon import LateOnDecisionScorer
|
| 49 |
+
|
| 50 |
+
scorer = LateOnDecisionScorer(model_name_or_path="tasksource/tasksource-jev-nano-v0")
|
| 51 |
+
out = scorer.decide_uncached(
|
| 52 |
+
states=["Customer reports unauthorized international wire transfer of $4,500."],
|
| 53 |
+
questions=["Select the appropriate fraud mitigation routing:"],
|
| 54 |
+
options=[["approve and monitor silently", "challenge with a push notification",
|
| 55 |
+
"freeze the account and call the customer", "decline and file a report"]],
|
| 56 |
+
kinds=["choice"],
|
| 57 |
+
)
|
| 58 |
+
print(out.probabilities)
|
| 59 |
```
|
| 60 |
|
| 61 |
+
Or raw PyLate:
|
| 62 |
|
| 63 |
```python
|
| 64 |
from pylate import models
|
| 65 |
+
model = models.ColBERT(model_name_or_path="tasksource/tasksource-jev-nano-v0")
|
| 66 |
+
ctx = model.encode(["<state>\nQuestion: <question>"], is_query=False, convert_to_tensor=True)[0]
|
| 67 |
+
opts = model.encode(["<option 1>", "<option 2>"], is_query=True, convert_to_tensor=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
```
|
| 69 |
|
|
|
|
|
|
|
| 70 |
## ๐ Citation
|
| 71 |
|
| 72 |
```bibtex
|
| 73 |
+
@misc{sileo2026jevnano,
|
| 74 |
+
title={Tasksource-JEV-Nano: Decoupled Multi-Vector Late Interaction for Typed Decisions},
|
| 75 |
author={Sileo, Damien},
|
| 76 |
year={2026},
|
| 77 |
howpublished={\url{https://huggingface.co/tasksource/tasksource-jev-nano-v0}},
|