A generated title card for Intern-Decision-4B, subtitled 'a structured decision model that answers without writing a token', carrying three chips reading 'no announcement', 'three checkpoints in 40 seconds' and 'no independent evals', with a footer reading 'Figures per the InternLM model card; nothing here is independently reproduced.' The OrcaRouter logo is composited in the bottom-right corner.
Guides & Insights

Intern-Decision-4B: InternLM Shipped a Decision Model That Answers Without Writing a Token

Author

Magnus Corvin

Date Published

Latest models · 20View all models →
Benchmarks: Artificial Analysis · updated daily
Back to all posts

Three model repositories appeared on InternLM's Hugging Face page inside forty seconds on 26 September 2026: Intern-Decision-0.8B at 05:35:57 UTC, Intern-Decision-2B at 05:36:19, and internlm/Intern-Decision-4B at 05:36:37. The 4B is the interesting one. It is a fine-tune of Qwen3.5-4B that accepts a shared state, a schema of named questions, and optional images, and returns a calibrated answer distribution for every question in a single forward pass. It never generates text. Its own release notes say so outright: "This API performs structured candidate scoring. It does not call generate() or sample free-form text." Forty seconds of uploads and not one line of announcement anywhere — no blog post, no tweet, no changelog, no launch page. What exists is a model card, an inference.py, and four safetensors shards.

A screenshot of the internlm organisation page on Hugging Face, showing the organisation's Recent Activity feed with the Intern-Decision-2B repository listed as published about an hour before the capture, above the organisation's model list and its 18 collections.

What shipped, and what did not

The family is the first thing to get right, because the 4B's card quietly carries it. Its benchmark table publishes rows for Intern-Decision-0.8B and Intern-Decision-2B alongside its own, and all three checkpoints landed on the hub within the same minute. The 2B repository is never linked from the 4B's card — you have to find it through the organisation's upload feed.

What did not ship is nearly everything a release normally brings:

• No announcement — zero web coverage, no vendor statement in any language we could find.

• No demo — the card links a Space at huggingface.co/spaces/internlm/intern-decision; that endpoint answers HTTP 401, meaning it is not public, not that it is broken.

• No collection — the advertised model collection at huggingface.co/collections/internlm/intern-decision also returns 401.

• No code repository — the card's GitHub link, github.com/internlm/Intern-Decision, is a 404, and the InternLM organisation's repository list contains no such project.

• No adoption — as of writing, the 4B shows one like and zero downloads.

That is the whole knowable surface. Treat every number below as the vendor's own, because nobody else has run this thing yet.

A screenshot of the internlm/Intern-Decision-4B model card on Hugging Face, showing the model title, the Demo, Model Weights and GitHub links, the description naming Qwen3.5-4B as the base model, and the five-step 'How inference works' list describing single-token symbol mapping, the assistant JSON skeleton, one causal forward pass, a softmax over candidate-symbol logits, and probability calibration.

The inference contract is the product

Most of the card is spent on a five-step procedure, which tells you where the engineering went. Questions and options keep their order. Each question's options are mapped onto single-token symbols — A through Z, then a through z, then 0 through 9. That is 62 symbols, and it is exactly why the card caps a question at 62 options. The prompt is rendered from the original system prompt, state, decision schema and a complete assistant JSON skeleton with one <decision> placeholder per field, keeping the checkpoint's chat template and an empty thinking block. Then one causal forward pass. Logits are read at the position immediately before each placeholder, a softmax runs over only that field's allowed candidate-symbol logits, calibration is applied, and symbols map back to your option values.

The consequence is a fixed shape: no decoding loop, no sampling, no parser, no hallucination surface, and a hard ceiling of one decision per question per pass. Three question types are supported — choice with an ordered criteria map, score with a list or numeric-keyed map, and noul, a binary no/yes.

The spec sheet detail that matters most

The card is explicit that inputs are "rejected without truncation" above DecisionEngine(max_length=8192). Read that beside the config and something odd surfaces: the underlying text tower declares max_position_embeddings of 262,144. The backbone can address a quarter of a million tokens; the released wrapper refuses anything past 8,192. This is not a long-context model with a conservative default — it is a decision-scoring model whose own harness caps the evidence you may hand it. If your routing question depends on more than roughly eight thousand tokens of state, this checkpoint as shipped will not answer it, and it will refuse rather than cut your input down.

Up to eight images are allowed, and the card notes image tokens count against that same 8,192 limit.

A generated timeline card titled 'Three checkpoints, forty seconds', listing Intern-Decision-0.8B at 05:35:57 UTC, Intern-Decision-2B at 05:36:19 UTC and Intern-Decision-4B at 05:36:37 UTC on 26 September 2026, with a footer reading 'Upload timestamps from the InternLM organisation feed on Hugging Face. No announcement accompanied any of the three.' The OrcaRouter logo is composited in the bottom-right corner.

Inside the weights

Four shards, 4.54 billion BF16 parameters, and a config that explains the size name: there is a text tower, a vision tower of roughly two dozen layers with a 16-pixel patch size, and a projector between them. The text side is 32 layers at hidden size 2,560, with 16 attention heads against 4 key/value heads, a 248,320-token vocabulary and tied embeddings. The layer types alternate on a fixed interval — three linear-attention layers, then one full-attention layer, repeated. Only the full-attention layers carry global attention, and the rotary embedding is partial at a factor of 0.25. Loading it wants Python 3.12 or newer, PyTorch 2.9.1 and Transformers 5.14.1, and the file list still carries the tokenizer, merges and vocabulary files rather than leaning on a hub-side tokenizer.

The numbers, and who produced them

Everything in this section was measured by InternLM and published on the model card. None of it has been reproduced by a third party, and there is no Artificial Analysis entry, no arena rating and no leaderboard row for this model anywhere.

Across seven evaluation sets the 4B averages 90.02, with a Brier score of 0.347 and an expected calibration error of 0.065. The same table lists Intern-Decision-0.8B at 79.38 and Intern-Decision-2B at 84.68, so the family curves upward with size — 4.7 points from 0.8B to 2B, then 5.3 more to 4B. The table also carries five rows the vendor did not train: Jev at 88.74, JevK5 at 85.16, SemIf at 84.23, Kev at 79.56, and Laya at 57.77. Those were run by InternLM on InternLM's harness against InternLM's checkpoint. They are not those projects' own numbers, and reading them as such is the easiest mistake available here.

Latency is measured on a single RTX 4090 over the local Hugging Face path, and the card flags the values as workload- and hardware-dependent. The 4B runs 44.16 ms mean, 44.03 ms median and 44.60 ms at P95 — a spread of well under a millisecond between median and tail, which is what a fixed-shape forward pass looks like. The two smaller checkpoints are both around 33 ms, with the 2B sitting marginally ahead of the 0.8B on the mean and median, which is worth noticing rather than smoothing over: these two are close enough to be within measurement noise of each other.

Calibration, and the honest caveats in it

The checkpoint ships a default temperature of 1.99241824, fitted separately for this model by negative-log-likelihood minimisation on 1,728 designated calibration cases with 1,693 held out for validation. The card states the test-suite labels were not used to pick it. The implementation is candidate-probability calibration, not a sampling temperature: it moves confidence, the binary probability and the expected score while leaving the argmax decision untouched.

A separate 96-case diagnostic then reports the effect. On InternLM's own before-and-after columns, the 4B's overall Brier and ECE move from 0.628 / 0.213 to 0.550 / 0.089, against 0.595 / 0.130 for Jev. Two honest readings of that table: the calibration clearly works, and the "before" column is not what any user would ever see, since the shipped default is the fitted temperature. Also worth flagging — two of the six diagnostic categories are worse for the 4B than for Jev, and the worst of them, daily evidence and observation bias, improves to 0.575 / 0.210 while still trailing Jev's 0.603 / 0.114. On that slice the calibration narrows the gap without closing it.

Where a router fits, and where it does not yet

The practical obstacle to using this model is not accuracy, it is packaging. The release ships a Python class you import after downloading four shards, not an HTTP endpoint you can call. That is precisely the gap a routing layer exists to close — one key across 200-plus models, provider list price passed through with 0% markup, and automatic failover when a provider wobbles — but we should be blunt that OrcaRouter does not currently carry Intern-Decision-4B or any model of its kind. Our catalogue does not list it, and nothing here should be read as an availability claim. What we can offer is the cheaper decision: if you want to try a 4.5-billion-parameter decision scorer in front of a production path, you can build it into a router with a fallback to a general model so a bad calibration day costs you a retry rather than an outage.

What would change the picture

Three things, in order of importance. Someone outside InternLM needs to reproduce the 90.02 average and the 0.065 expected calibration error — calibration claims that have never met a foreign test set are the least transferable numbers in machine learning. The card's own footprint needs to appear: the Space, the collection, the GitHub repository. And the vendor needs to say whether this is a product or a paper artefact, because a research-only license and an Apache-2.0 license are not the same commitment, and the 4B chose Apache-2.0 with the Qwen license preserved alongside it. Until then the correct framing is the one the upload itself suggests: this is a real checkpoint with a real inference contract and a completely unverified scorecard, published without anyone being told.

For now the honest summary is narrow and useful. If your problem is "pick one of five routing labels and tell me how sure you are", a 4.5B model that emits 62 logits and no prose is a defensible shape to evaluate. If your problem involves a long document, more than eight images, or any need to explain the answer in words, this checkpoint as shipped is the wrong tool, and no amount of vendor benchmark polish changes that.