decide / README.md
jmwri's picture
Upload model
14d67ec verified
|
Raw History Blame Contribute Delete
7.03 kB
metadata
license: apache-2.0
language: en
base_model: answerdotai/ModernBERT-base
library_name: decide
pipeline_tag: zero-shot-classification
tags:
  - modernbert
  - decision-model
  - zero-shot-classification
  - calibrated

decide-0.2.0

A small, fast, non-autoregressive decision model. Given some state, an instruction and a set of candidate options, it scores every option in a single forward pass and returns calibrated probabilities. It answers three kinds of question with the same weights:

  • choice: a distribution over K mutually exclusive options
  • noul: the probability that a condition holds (a yes/no question)
  • score: an expected level on an ordered scale

It is fine-tuned from ModernBERT-base (149M parameters). The packed input is <instructions> <state> [SEP] [MASK] option0 [MASK] option1 ...; a small MLP head scores the encoder state at each [MASK]. Each option attends only to the shared prefix and to itself and its position ids restart after the prefix, so an option's score depends on (premise, that option) alone: permuting the options permutes the scores and changes nothing else (measured max logit change under permutation: 8.9e-06).

The model, tokenizer, training loop, evaluation and this card were all produced with the pure-Go toolchain in jmwri/decide; no Python or PyTorch was used to train it.

Usage

import "github.com/jmwri/decide"

decide.SetDefault(decide.NewLocal("/path/to/this/model")) // or: decide pull --repo jmwri/decide
ans, _ := decide.Decide(ctx, "Replication lag exceeded 45 seconds.", decide.Options{
    {Key: "infrastructure", Description: "Database, hardware, network or server failures"},
    {Key: "billing", Description: "Invoices, payments, refunds"},
}, "Classify the root cause domain.")

Evaluation

Accuracy is top-option accuracy. ECE is the expected calibration error (15 bins) of the top-option confidence, after the per-kind temperature scaling shipped in decide.json.

Held-out validation splits of the training tasks

task n accuracy NLL ECE
all 8127 80.2% 0.505 0.007
kind: choice 4745 78.7% 0.569 0.011
kind: noul 2703 89.5% 0.259 0.009
kind: score 679 53.5% 1.041 0.034
amazon_polarity 300 94.0% 0.178 0.035
arc 200 49.0% 1.272 0.124
arc_easy 200 66.0% 0.857 0.079
banking77 300 96.7% 0.094 0.032
bitext_support 300 100.0% 0.011 0.011
boolq 300 83.3% 0.412 0.043
civil_comments 156 76.9% (MAE 0.48 levels) 0.543 0.086
clinc150 300 98.3% 0.058 0.019
cola 200 79.0% 0.419 0.086
commonsense_qa 300 65.0% 0.880 0.042
dbpedia14 300 70.0% 1.027 0.163
go_emotions 256 84.4% 0.463 0.079
hellaswag 300 68.7% 0.818 0.065
massive_intent 300 97.0% 0.113 0.037
massive_scenario 300 96.3% 0.141 0.040
mnli 300 87.3% 0.359 0.061
mrpc 200 90.5% 0.234 0.048
newsgroups 296 85.5% 0.440 0.058
openbookqa 250 59.6% 0.957 0.056
qasc 250 49.6% 1.370 0.053
qnli 200 90.5% 0.228 0.059
qqp 200 87.0% 0.331 0.057
rte 200 82.0% 0.391 0.038
sms_spam 300 100.0% 0.009 0.009
snli 295 87.5% 0.346 0.073
sst2 300 95.0% 0.177 0.048
sst5 300 54.7% (MAE 0.55 levels) 1.034 0.069
stsb 300 51.3% (MAE 0.60 levels) 1.093 0.049
toxic_conversations 124 91.9% 0.258 0.054
wanli 300 74.7% 0.583 0.042
winogrande 300 66.0% 0.715 0.110

Tasks in this second table were never trained on (zero-shot to the model):

Held-out tasks

task n accuracy NLL ECE
all 4500 47.6% 1.268 0.133
kind: choice 2500 42.8% 1.415 0.128
kind: noul 1000 58.9% 1.011 0.266
kind: score 1000 48.2% 1.159 0.072
amazon_stars 1000 48.2% (MAE 0.71 levels) 1.159 0.072
emotion 1000 55.1% 1.244 0.084
enron_spam 1000 58.9% 1.011 0.266
mmlu 1500 34.5% 1.529 0.166

Training data

Fine-tuned on 301661 examples built from the public datasets below (options are re-sampled and verbalised in several styles; classification tasks are also posed as yes/no verification questions). Licenses are as declared on the Hugging Face hub; review them before redistributing or commercialising the weights, since several datasets carry share-alike or unspecified terms.

dataset train examples license (as declared)
amazon_polarity 8000 apache-2.0
amazon_stars (held out, evaluation only) 0 unspecified (mteb/amazon_reviews_multi)
arc 1119 cc-by-sa-4.0
arc_easy 2251 cc-by-sa-4.0
banking77 9993 cc-by-4.0
bitext_support 8990 cdla-sharing-1.0
boolq 9000 cc-by-sa-3.0
civil_comments 9391 cc0-1.0
clinc150 15000 cc-by-3.0
cola 6000 other (GLUE)
commonsense_qa 9000 mit
dbpedia14 8000 cc-by-sa-3.0
emotion (held out, evaluation only) 0 other (dair-ai)
enron_spam (held out, evaluation only) 0 unspecified (SetFit/enron_spam)
go_emotions 7520 apache-2.0
hellaswag 22000 mit
massive_intent 11499 apache-2.0
massive_scenario 11500 apache-2.0
mmlu (held out, evaluation only) 0 mit
mnli 30000 cc-by-3.0/cc-by-sa-3.0/mit/other
mrpc 3668 other (GLUE)
newsgroups 10707 unspecified (SetFit/20_newsgroups)
openbookqa 4957 unknown
qasc 8000 cc-by-4.0
qnli 8000 other (GLUE)
qqp 8000 other (GLUE)
rte 2490 other (GLUE)
sms_spam 4433 unknown (UCI)
snli 15976 cc-by-sa-4.0
sst2 8000 other (GLUE)
sst5 8500 unspecified (SetFit/sst5)
stsb 5748 other (GLUE)
toxic_conversations 6138 cc-by-4.0
wanli 16000 cc-by-4.0
winogrande 22000 cc-by-4.0

Limitations

  • English only. Inputs are limited to 8192 tokens; option sets are best kept under ~10 (use a two-stage taxonomy beyond that).
  • Trained on public classification, inference and multiple-choice datasets, so it is strongest on those styles of question. Explicit, descriptive option texts work better than bare labels. Domain-specific jargon or rubrics with no descriptive criteria fall back to general language priors.
  • Probabilities are calibrated on held-out data from the training tasks; on very different distributions they will be over-confident. Use a confidence gate and route uncertain cases to review.
  • Not for decisions that affect people's rights, safety or livelihood without human oversight.

License

Weights: Apache-2.0 (ModernBERT-base is Apache-2.0), subject to the training-data terms above.