A generated title card for Intern-Decision-2B reading 'Shipped quietly, not announced' with the badges 'the GitHub link went live today' and '2,213,241,664 parameters', with the OrcaRouter logo composited in the corner.
Engineering & Research

Intern-Decision-2B Shipped Quietly to Hugging Face. The GitHub Link on Its Card Has Just Stopped 404ing

Author

Rowan Sterling

Date Published

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

Earlier today the model card for internlm/Intern-Decision-2B pointed at three places for more information, and two of them were dead: the demo Space answered HTTP 401, and github.com/internlm/Intern-Decision returned 404 to anyone who clicked it. As of 08:58 UTC the repository behind that second link exists — public, three commits deep, carrying training code, two inference backends, an evaluation bundle with 10,751 test rows, a 96-case calibration benchmark and the reproduction guide. That is the only thing that has changed about this model since it appeared on Hugging Face at 05:36 UTC on September 26, 2026, and it is enough to move Intern-Decision-2B from "a checkpoint with an inaccessible README" to "a checkpoint you can actually inspect, reproduce against, and argue with."

The weights themselves are unchanged and unambiguous. Intern-Decision-2B is a 2,213,241,664-parameter multimodal structured decision model fine-tuned from Qwen/Qwen3.5-2B — the Alibaba base from February 28, 2026 — released under Apache-2.0 with the upstream Qwen licence preserved beside it as LICENSE-QWEN. It is the middle of three sizes InternLM pushed in forty seconds: Intern-Decision-0.8B at 05:35:57, this one at 05:36:19, and Intern-Decision-4B at 05:36:37. There is still no announcement of any kind behind any of them.

What makes the middle size worth its own piece is that it is where the family stops behaving predictably. On InternLM's own numbers it is the fastest of the three and the worst-calibrated of the three, and both facts are worth understanding before you download four and a half gigabytes of anything.

What is confirmed, and what is only the vendor talking

Two categories, and they need keeping apart.

Confirmed, because it is a file listing or an HTTP response: the parameter count (2,592 F32 plus 2,213,239,072 BF16 weights); the shard map (a 3.76 GB language shard, a 612.5 MB vision tower, a 50.3 MB projector, about 4.43 GB of tensors and roughly 4.46 GB of repository); the licence pair; the base model; the architecture underneath (a Qwen3_5ForConditionalGeneration with 24 layers, hidden size 2,048, 8 query heads against 2 key-value heads, head dimension 256, a repeating pattern of three linear-attention layers to one full-attention layer, one retained multi-token-prediction layer, and a 262,144-position embedding ceiling); the repository's existence; and the fact that the model collection at huggingface.co/collections/internlm/intern-decision now resolves and lists all three checkpoints.

Vendor-reported and unreproduced: every accuracy number, every latency figure, and the calibration temperature. There is no paper, no arXiv entry, no launch post, no changelog, and no independent evaluation — a search for the string "Intern-Decision" returns nothing that is about this model. The demo Space still answers 401, which means it is not public, not that it is broken. The 2B checkpoint has one like and zero downloads. Nobody outside InternLM has run it.

A screenshot of the Hugging Face model card for internlm/Intern-Decision-2B, showing the internlm organisation, the tags image-text-to-text, Transformers, Safetensors, qwen3_5, decision-making and multimodal, the Demo, Model Weights and GitHub links, and the card text stating the model is 'a multimodal structured decision model fine-tuned from Qwen3.5-2B' that 'accepts a shared state, a schema of named questions, and optional images, and returns an answer distribution for every question in one model forward pass', followed by the five-step 'How inference works' list.

The inference contract, in the order it happens

The most informative file in the repository is not the card. It is src/inference/engine.py and the bundled inference.py on the Hub, because between them they document a contract rather than a prompt.

• You supply state — the material being judged — a questions schema, and optionally up to eight images. One to sixteen questions, up to 62 options each.

• Each question's options are mapped onto single-token symbols: A–Z, then a–z, then 0–9. The 62-option ceiling is not a design preference, it is exactly the number of single-token symbols the contract can address.

• The system prompt, the state, the schema and a complete assistant JSON skeleton are rendered with one <decision> placeholder per field. The checkpoint's chat template and empty thinking block are preserved as-is.

• One causal forward pass runs. Logits are read at the position immediately before each placeholder — not after, not at a generated token.

• A softmax is taken over only that field's legal candidate symbols, the checkpoint's calibration is applied, and the symbols map back to your original option values.

The card is blunt about what this is: "This API performs structured candidate scoring. It does not call generate() or sample free-form text." A DecisionEngine(max_length=8192) refuses oversize input rather than truncating it, so a request that does not fit fails loudly instead of quietly losing its last paragraph. The backend list is honest too — backend="hf" is the default and the only implemented one in the Hugging Face repository, which is worth knowing because the GitHub release ships an XTuner backend as well and the two are not numerically identical. InternLM's own evaluation guide says so: "Kernel and BF16 differences can change probabilities and occasionally labels."

The anomaly in the middle

Put the three checkpoints side by side on InternLM's own table and the shape is odd enough to be the story.

• Average across seven suites — Intern-Decision-0.8B 79.38, Intern-Decision-2B 84.68, Intern-Decision-4B 90.02. Ordered, as you would expect from growing the weights.

• Latency on one RTX 4090 — 33.98 ms mean for the 0.8B, 33.28 ms for the 2B, 44.16 ms for the 4B. The middle size is the fastest of the three, by a margin small enough to be noise on a single GPU but consistent across mean, median (33.15 ms) and P95 (33.55 ms).

• Brier score, lower better — 0.530, 0.437, 0.347. Monotone with size, as a proper scoring rule usually is.

• Expected calibration error, lower better — 0.066 for the 0.8B, 0.100 for this 2B, 0.065 for the 4B. The middle size is the worst, and it is worse than the model half its size.

That last line is the interesting one, and the fitted temperatures corroborate rather than explain it. Each checkpoint carries its own NLL-fitted temperature: 2.747760550703 for the 0.8B, 2.100509348278 for the 2B, 1.992418 for the 4B. Every one was fitted on 1,728 designated calibration cases with 1,693 held out, by minimising negative log-likelihood over an inverse-temperature search in [0.01, 100], with the test-suite labels deliberately kept out of the fit. The 2B's temperature sits between its two siblings', which is what you would expect if the anomaly were a fitting artefact. It is not: the fitted value is monotone with size while the post-calibration error is not. On InternLM's own measurement, the 2.2-billion-parameter checkpoint is the least trustworthy of the three when it tells you how confident it is.

Two caveats before that becomes a conclusion. ECE with ten equal-width bins and max-probability confidence is a noisy statistic on the small suite this table uses — Jevbench-Hard, 111 items, so the whole ECE column rests on a hundred-odd questions and a binning choice. And internlm/Intern-Decision-2B is the one card of the three that does not carry the extra calibration section the 4B card has, so there is less documentation here, not more. Read the 0.100 as a reason to fit your own temperature rather than as a verdict on the weights.

A rendered comparison card titled 'Three checkpoints, forty seconds' listing the Intern-Decision 0.8B, 2B and 4B columns against seven rows: upload timestamps 05:35:57 / 05:36:19 / 05:36:37 UTC; parameters 852,985,920 / 2,213,241,664 / 4,539,265,536; seven-suite average 79.38 / 84.68 / 90.02; Brier 0.530 / 0.437 / 0.347; ECE 0.066 / 0.100 / 0.065; fitted temperature 2.747761 / 2.100509 / 1.992418; and RTX 4090 mean latency 33.98 ms / 33.28 ms / 44.16 ms, with a footer noting every figure is vendor-reported and unreproduced.

What the repository adds, and what it still withholds

The GitHub release is more complete than the model card, which is itself informative — a lab that intended a paper artefact does not usually ship a deterministic calibration generator and a hash-verifying evaluation bundle alongside the training launcher.

What is now public: the training code and the masked-next-token objective (ground-truth answer symbols appear only in labels, never in the input; each field's answer is predicted by the logit immediately before its marker, and all fields share one forward pass); the seven accuracy suites with SHA-256-verified hashes and row counts; the scoring code; the temperature-fitting and replay scripts, where replay is asserted to change zero decisions; the 96-case distribution calibration benchmark with its generator and offline scorer; and a browser demo served on loopback with POST /v1/decisions (aliased /v1/jev).

What is explicitly excluded, in the repository's own words: "Training data, private calibration/validation records, images, preparation pipelines, and model weights are not included." The repository carries no licence file at all, so the code's terms are not stated even though the weights are Apache-2.0. And the calibration split composition — which 1,728 cases, from where — remains undisclosed, which is the one omission that limits how far the ECE numbers can be checked.

The sizes we actually route, and the one we do not

Intern-Decision-2B is not on OrcaRouter. Our model page for it returns a 404, there is no hosted endpoint anywhere for it that we could find, and nothing here should be read as an availability claim. The only way to call it today is to download the checkpoint and run inference.py next to the weights.

That matters for the decision this article is really about, because a scorer nobody serves is a scorer you have to operate. If the closed-set decision you are trying to make is close in shape to what this family does — a state, typed questions, calibrated probabilities — the hosted comparison is TypeSafe's Jev 1.13, which is the model InternLM benchmarked against on purpose and which is on OrcaRouter at $0.042 per million input tokens with a 65K context and a P50 time-to-first-token of 178 ms.

A screenshot of the OrcaRouter model page for typesafe/jev-1.13, dated 2026-09-24, showing the TypeSafe breadcrumb, the model name Jev 1.13, text input, and the description that Jev is a structured decision and evaluation model taking a state and named questions (noul / choice / score) and returning a structured answer for each, served non-streaming via POST /v1/systemone with up to about 64K input tokens.

Running a 2.2-billion-parameter checkpoint locally and calling a hosted classifier are not the same purchase, but they are the same problem, and having both on one key with provider list price passed through at 0% markup is the reason to keep the comparison open rather than betting the architecture on one of them.

What would change this picture

Three things, in order.

Someone outside InternLM needs to reproduce the 84.68 average and the 0.100 ECE, and the repository is now the thing that makes that possible — which is the actual news here. The exam is public and hash-verified; only the answer sheet is missing, and the answer sheet is the checkpoint anyone can now download.

The vendor needs to say what this is for. A model with a working training stack, a published evaluation bundle and no announcement, no licence on its code and no hosted endpoint reads as a research release that has not been decided into a product yet. The Apache-2.0 weights argue one way; the missing code licence and the 401 Space argue the other.

And the middle size needs a reason to exist. If the 2B's speed advantage over the 0.8B is real but marginal, and its calibration is the weakest of the three at every measure InternLM published, then the honest recommendation for most readers is to pay the 2.6× in disk space for the 4B or accept the smaller model's weaker accuracy. The case for the 2B is that it happens to be the fastest fast one — and that is a thinner case than the family's marketing-shaped framing suggests.