Instructions to use Maincode/matilda-decision-v1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Maincode/matilda-decision-v1 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("zero-shot-classification", model="Maincode/matilda-decision-v1", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModel processor = AutoProcessor.from_pretrained("Maincode/matilda-decision-v1", trust_remote_code=True) model = AutoModel.from_pretrained("Maincode/matilda-decision-v1", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
Matilda Decision v1
Matilda Decision is a 27B multimodal decision model from Maincode. You give it an input (text or JSON, optionally with images) and the questions you need answered: pick one of several options, say yes or no, or rate on a scale. It answers them all in one call and returns a probability for every answer, without generating text.
| Parameters | 26.1B, including the vision encoder |
| Inputs | Text or JSON, plus images (several per request, up to 1.6 MP each) |
| Decision types | Choice (up to 255 options) · Yes / No · Score |
| License | Apache-2.0 |
Evaluation
These are results on the public sets only, for now.
Text: Jev Decision Index 0.3, public suite
All 140,178 public requests answered, none unsupported.
| Model | Public index ↑ | Knowledge & Reasoning | Language | Retrieval & Classification | Tools & Automation | Arts & Taste |
|---|---|---|---|---|---|---|
| Matilda Decision v1 (27B) | 65.38 | 51.1 | 71.3 | 67.6 | 84.6 | 47.4 |
| Torchcast Decision 27B | 65.10 | 46.7 | 72.0 | 67.5 | 84.6 | 54.4 |
| Perplexity Decider v1.1 (27B) | 62.25 | 52.0 | 67.5 | 61.3 | 78.9 | 47.0 |
| Jev | 57.96 | 53.9 | 59.2 | 55.4 | 75.1 | 39.1 |
Matilda Decision: our run with the official 0.3 kit. Others: Decision Index 0.3 board, public results (area scores computed from the board's per-benchmark results with the kit's own scoring).
Quickstart
pip install "transformers==5.17.0" torch torchvision pillow safetensors
pip install flash-linear-attention # optional: fast GPU kernels for the linear-attention layers
import json
from transformers import AutoModel
model = AutoModel.from_pretrained("Maincode/matilda-decision-v1", trust_remote_code=True)
# Text
result = model.system_one(
state="The order arrived damaged yesterday. The customer has a receipt and asks for a replacement today.",
questions={
"route": {
"type": "choice",
"instructions": "Which team should handle this request?",
"criteria": {
"returns": "Refunds, replacements and damaged deliveries",
"billing": "Payments, invoices and charges",
"technical": "Product setup and faults",
},
},
"receipt": {"type": "noul", "instructions": "Does the customer have a receipt?"},
"urgency": {
"type": "score",
"instructions": "How urgent is this request?",
"criteria": ["Routine", "Soon", "Today"],
},
},
)
print(json.dumps(result["answers"], indent=2))
# Text and images
result = model.system_one(
state="The customer says the blender arrived cracked and attached the receipt.",
images=["receipt.png"], # local paths, http(s) URLs, PIL images or base64 data URLs
questions={
"on_receipt": {"type": "noul", "instructions": "Does the receipt list the blender?"},
"payment": {
"type": "choice",
"instructions": "How was the order paid?",
"criteria": {"card": None, "cash": None, "gift card": None},
},
},
)
print(json.dumps(result["answers"], indent=2))
from_pretrained takes device (default cuda:0 when a GPU is visible) and max_image_pixels (see
Images).
Requests and answers
system_one(state=..., questions={id: question, ...}, images=[...]) returns
{"model", "answers": {id: answer}, "usage"}. Every question sees the same state and images.
type |
criteria |
answer |
|---|---|---|
choice |
{option: description or None}, 1–255 options |
choice, probabilities per option, confidence |
noul |
optional {"true": ..., "false": ...} descriptions |
noul: the probability of yes / true |
score |
level descriptions, lowest first | score (expected level), probabilities, legend, confidence |
instructions is the question text. state can be a string or any JSON value. It is read as data, not as
instructions. Inputs are never truncated: a request over 131,072 tokens raises an error.
Images
- Size: each image is resized, keeping its aspect ratio, to at most 1,638,400 pixels (1.6 MP, about
1280 × 1280) and at least 65,536. All the results above were measured at this setting, which is the default
in the runtime and in
processor_config.json. - Tokens: one input token per 32 × 32 pixel patch, so about 1,600 for a 1.6 MP image and about 260 for 512 × 512.
- Order: images go before the text, in the order given.
- Lower cap: for speed or memory, use
AutoModel.from_pretrained(..., max_image_pixels=...). Expect lower accuracy on fine detail such as charts, documents and small text. Caps above 1.6 MP are not validated.
Architecture
Qwen3.8-27B vision-language backbone with a 255-option decision readout. Each question takes one forward pass, and its answer is read from the final prompt position.
Training: post-trained from Qwen3.8-27B in several stages: supervised fine-tuning on decisions across text and images, then reinforcement learning.
The model was trained with bidirectional attention: its full-attention layers see the whole prompt at once,
rather than only the tokens before each position. It must be served the same way. trust_remote_code=True
loads the bundled runtime (matilda_decision_runtime.py), which sets this up. Loading the weights as a plain causal backbone, or serving them in a causal engine, gives different and worse answers.
License
Apache-2.0 (LICENSE). Built on Qwen/Qwen3.8-27B (Apache-2.0).
- Downloads last month
- 17
Model tree for Maincode/matilda-decision-v1
Base model
Qwen/Qwen3.8-27B