Overview
Laya is a family of small open decision models from Convai Innovations, published on Hugging Face on September 18, 2026 under Apache-2.0. It never generates text: you give it a state (text, an email, a ticket or JSON) and typed questions — `choice` picks an option, `score` places a value on an ordinal scale, `noul` returns the probability that a statement is true — and every answer comes back as a typed value with probabilities, all questions in a single forward pass.
The family has three checkpoints in one Hugging Face repo. `laya` (421M) is built on ModernBERT-large for English with a 512-token budget; `laya-multilingual` (322M) is built on mmBERT-base for 100+ languages with 1,024 tokens, extendable to 8,192; `laya-typed-decisions` (421M) is fine-tuned on the four workflows of the typed-decisions benchmark. The `laya` Python package ships a Router that detects the script and language of each input and sends it to the right checkpoint.

Training uses what the authors call RLCD (Reinforcement Learning for Calibrated Decisions): the reward is a strictly proper scoring rule, so the policy earns the most by reporting honest probabilities. The model card still says the checkpoints ship over-confident and recommends refitting a temperature on your own data, which moves mean ECE from 0.466 to 0.081 for `laya`.
On a Tesla T4, `laya-multilingual` answers one question in 32.8 ms and ten in 72.3 ms. The card compares Laya against third-party published figures for TypeSafe's hosted Jev 1.13.0: 0.766 against 0.727 on typed-decisions and 0.950 against 0.910 on AG News, while Jev leads on Banking77 (0.870 against 0.425). It is explicit that the base checkpoints are near chance on typed-decisions zero-shot (0.362 English, 0.352 multilingual) and that the 0.766 belongs to the checkpoint fine-tuned on that benchmark's training split.
The package includes a Jev-compatible HTTP server (`laya-serve`, `POST /v1/systemone`), an MCP server, LangChain and LangGraph integrations, an ONNX path and a Kaggle fine-tuning notebook.
| Released | 2026-09-18 |
|---|---|
| License | Apache-2.0 |
| Weights | Open weights |
| Parameters | Three checkpoints: laya 421M, laya-multilingual 322M, laya-typed-decisions 421M |
| Context | 512 tokens (laya), 1,024 tokens (laya-multilingual, up to 8,192 with max_len; laya-typed-decisions) |
| Architecture | Bidirectional encoder (ModernBERT-large, or mmBERT-base for multilingual) plus a 2-layer decision head that scores each option at its own [MASK] token; non-autoregressive |
| Modalities | Text |
Benchmarks

Laya (routed) against TypeSafe Jev 1.13.0, as published on the Laya model card. Jev figures are third-party published and were not measured by the Laya authors; ECE: lower is better.
| Benchmark | Laya (routed) | TypeSafe Jev 1.13.0 |
|---|---|---|
| typed-decisions, 2,000 decisions | 0.766 | 0.727 |
| AG News, 4 labels | 0.95 | 0.91 |
| DAIR Emotion, 6 labels | 0.595 | 0.48 |
| Banking77 (77 vs 72 labels) | 0.425 | 0.87 |
| ECE (lower is better) | 0.081 | 0.246 |
| p50 latency, 1 question | 32.8 ms | 236–276 ms |
This model's scores
- typed-decisions accuracy (laya-typed-decisions)76.6%
- AG News accuracy (routed)95%
- XNLI English accuracy (laya)86%
- MASSIVE intent, English accuracy (laya)78.3%
Scores on a 0–100 scale (25-point gridlines); higher is better. Each benchmark links to its published source.
Strengths
- One forward pass answers every question in a call: 32.8 ms for one question and 72.3 ms for ten on a T4 (laya-multilingual)
- Fine-tuned laya-typed-decisions scores 0.766 on typed-decisions, above the 0.735 teacher self-agreement ceiling
- Router picks the English or multilingual checkpoint per request; 45 of 51 tested languages score above 3x random
- Apache-2.0 weights with a Jev-compatible HTTP server, so existing TypeSafe clients work by changing the base URL
- Small enough for CPU serving (193–464 ms per request with preloaded checkpoints) and Apple GPUs
Best for
- Reach for it to route, triage or score tickets, emails and chat messages where a full LLM call per decision is too slow or costly.
- Reach for it for guardrail and moderation checks that should return a probability you can threshold.
- Reach for it as a fast base to fine-tune on labelled decisions from your own domain, which is where the model card says accuracy jumps.
- Look elsewhere for zero-shot decisions or choice questions with more than about 20 options, where the card reports near-chance and Banking77-style drops.
How to access
| Provider | Model ID |
|---|---|
| Hugging Face (weights, all three checkpoints) ↗ | convaiinnovations/laya |
| PyPI (laya package) ↗ | — |
| Hugging Face Space (demo) ↗ | — |
FAQ
What does Laya do differently from a chat model?
Laya never generates text. You send a state and typed questions — choice, score or noul (yes/no) — and it returns typed answers with probabilities for all of them in a single forward pass, so there is nothing to parse.
Which Laya checkpoint should I use?
The model card recommends the Router, which sends English text to laya (421M, ModernBERT-large) and other languages to laya-multilingual (322M, mmBERT-base, 100+ languages). laya-typed-decisions (421M) is the version fine-tuned on the typed-decisions benchmark's four workflows.
How does Laya compare with TypeSafe's Jev?
On the model card, routed Laya scores 0.766 against 0.727 on typed-decisions, 0.950 against 0.910 on AG News and 0.595 against 0.480 on DAIR Emotion, with 32.8 ms median latency against 236–276 ms. Jev leads on Banking77 (0.870 against 0.425). The Jev figures are third-party published, not measured by the Laya authors.
Can Laya be used zero-shot?
The model card says the base checkpoints are near chance on typed-decisions zero-shot (0.362 for laya, 0.352 for laya-multilingual) and describes Laya as a fast base to fine-tune, with a Kaggle notebook for the whole loop.