Krino Adapter: ModernBERT-base

Lightweight decision heads trained on a frozen ModernBERT-base backbone. Outputs typed, calibrated decisions (noul / choice / score) instead of text.

302K trainable params on a 149M frozen backbone. 48.8% aggregate accuracy across 19 benchmarks.

Quick start

from krino import KrinoModel

model = KrinoModel.from_pretrained("oaklight/krino-modernbert-base-heads")

answer = model.predict(
    state="Customer: I ordered a laptop last week and it still hasn't arrived.",
    question={
        "type": "choice",
        "instructions": "Which intent does this message express?",
        "criteria": {
            "track_order": "Wants to know where an order is",
            "cancel_order": "Wants to cancel an order",
            "report_damage": "Received a damaged item",
        }
    }
)
print(answer)

Results

Type Accuracy
Choice 42.9%
Noul 58.9%
Score 44.3%
Aggregate 48.8%

Per-benchmark

Benchmark Type Accuracy
agnews choice 87.0%
mednli noul 65.6%
mnli noul 64.4%
typed_decisions choice 58.2%
sst2 noul 57.4%
multirc noul 56.6%
contractnli noul 55.8%
codesearchnet choice 54.3%
yelp score 52.2%
tabfact noul 51.6%
sst5 score 45.8%
fever choice 40.6%
banking77 choice 34.4%
swag choice 34.2%
race choice 32.6%
arc choice 31.8%
stsb score 31.2%
hellaswag choice 30.4%

Architecture

State -> ModernBERT-base (frozen, ModernBERT encoder) -> hidden states
                                               |
  NoulHead (linear -> sigmoid)                -> P(yes)
  ChoiceHead (cross-attention -> softmax)      -> P(option_k)
  ScoreHead (cross-attention -> expected value) -> score
  • Backbone: answerdotai/ModernBERT-base (149M params)
  • Heads: 302K trainable params (rank 64 AttentionHead)
  • Training: Multi-task on 19 NLU benchmarks, type-balanced sampling, 20 epochs

License

MIT

Downloads last month
25
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support