blink-mimo-9b

Send a text or JSON state and typed questions (choice, noul, score). Each question gets probabilities over its offered options from one forward pass, with no generated text. Long or large multi-question requests may use several batches.

blink-mimo-9b one-pass readout diagram: a state and typed choice, noul and score questions are rendered as evidence, criterion and lettered options; questions are batched and each batch is one forward pass, giving next-token logits at the answer position, and an FP32 softmax over the offered letters gives one probability per option. No text is generated.

Space demo · Source code · Docs · API · blink-4b · blink-27b

At a glance

Attribute Detail
Base model XiaomiMiMo/MiMo-V2.6-Distill-Qwen-9B
Weights size 18.8 GB bf16 (8.95B text parameters, 9.41B total)
Revision v1.2 (weights identical to v1.0)
License Non-commercial research (LICENSE.md); code Apache-2.0

Results

Decision Index 0.2 (local run)

Decision Index numbers are local runs of the official kit (commit 19ad28e, 2026-09-25), not leaderboard submissions. The 0.2 run is descriptive: known training exposure stays in the scores, with no leaderboard-style penalty, so it isn't ranked. The fine-tune didn't use MMLU-Pro or GPQA as direct data sources; screening found 176 SuperGPQA training rows matching added-request text.

Balanced skill Balanced raw Breadth skill Without MMLU-Pro
43.36 57.24 42.38 42.84
Extra tables and method
Area Number of benchmarks Skill Raw
Knowledge & Reasoning 10 33.2 48.2
Language Understanding 10 54.1 67.2
Retrieval & Classification 7 40.5 55.4
Tools & Automation 6 57.0 65.2
Arts & Human Taste 7 32.0 50.2

The seven benchmarks added in 0.2:

Benchmark Metric Requests Answered Raw Skill
PhishNChips phishing decisions accuracy 2,000 2,000 66.5 33.1
MMLU-Pro accuracy 12,032 12,032 61.4 56.5
BBH fixed-option tasks accuracy 5,507 5,507 67.8 53.4
RAGTruth response-level hallucination F1 on hallucinated class 2,700 2,700 63.4 37.8
HoVer claim verification accuracy 4,000 4,000 65.6 31.3
When2Call MCQ accuracy 3,652 3,652 64.5 52.7
New Yorker caption matching accuracy 528 528 62.5 53.1
  • All 151,034 scoreable requests scored across 44 benchmarks (40 count toward index across 5 areas).
  • Requests shared with 0.1 reuse 0.1 predictions; the 30,419 added requests ran with the same frozen evaluation setup as 0.1, the evaluated adapter loaded on the MiMo base, which the published graft matched on JevBench's 231 public items (see Evaluation notes), at temperature 1.0.
  • "Without MMLU-Pro" drops MMLU-Pro, averages the other nine Knowledge benchmarks, and keeps five equal areas. It is a sensitivity check, not a score free of training effects.
  • Point estimates without significance, calibration, or latency claims. Do not compare with 0.1 numbers.

Training-row text matches in added requests:

Training stage Rows in the stage Rows matching added-request text From MMLU-Pro From SuperGPQA Other
MiMo 123,195 180 0 176 4

Screened for exact normalized strings of at least 30 characters shared by training rows and added requests (strings in 20 or more requests treated as templates). Counts are training rows, not unique test questions.

Decision Index 0.1 (archived edition)

Decision Index numbers are local runs of the official kit, not leaderboard submissions. Comparison rows use the 2026-09-22 leaderboard snapshot.

Training overlap: Public train splits included ContractNLI, iSarcasmEval and VAST (the whole Language area), plus Amazon ESCI and Humicroedit. With Language set to Jev's score, this model's index would be 54.96 vs Jev's 59.51. That's arithmetic, not an ablation or a like-for-like comparison with models trained only on synthetic data.

Model Size class Decision Index 0.1 Skill Breadth
blink-mimo-9b 9B 56.53 42.17 40.37
Jev 1.13.0 closed 59.51 46.26 44.79
Jevfire 27B 55.74 40.86 39.45
JoshuaSP diffusiongemma (open-jev) 26B-A4B 55.56 40.84 39.19
Decider 35B-A3B 35B-A3B 54.34 39.37 37.99
Kev 9B 9B 50.48 32.96 30.54
Kev 4B 4B 47.43 28.86 25.67
Area blink-mimo-9b Jev 1.13.0
Knowledge & Reasoning 55.1 68.8
Language Understanding 70.1 62.3
Retrieval & Classification 34.8 37.0
Tools & Automation 70.5 73.6
Arts & Human Judgment 52.1 56.2
Per benchmark (19 panel benchmarks, 0.1)
Area Benchmark This model Jev 1.13.0
Knowledge MMLU 0.802 0.917
Knowledge GPQA Diamond 0.408 0.783
Knowledge GSM8K 0.658 0.799
Knowledge CRUXEval 0.547 0.730
Knowledge CLadder 0.661 0.726
Knowledge ChessBench 0.229 0.172
Language ContractNLI 0.817 0.717
Language iSarcasmEval 0.506 0.505
Language VAST 0.780 0.646
Retrieval BRIGHT 0.177 0.187
Retrieval Amazon ESCI 0.520 0.552
Tools BFCL 0.893 0.958
Tools ToolRet 0.422 0.450
Tools RouterBench 0.799 0.799
Arts BPoMP 0.841 0.906
Arts Humicroedit 0.638 0.619
Arts POP909-CL 0.076 0.181
Arts cfcolor 0.597 0.647
Arts Habermas Machine 0.455 0.459

JevBench: public items only

The JevBench numbers are public-item development proxies, not official scores, and claim no rank or parity.

Model Easy Standard Hard Hard ECE Official score
blink-mimo-9b 48/48 70/72 77/111 (0.694) 0.136 not submitted

Hard ECE is 0.136 vs blink-4b's 0.067. Weakest public hard cases are date/number reasoning, trade-offs, and long policies.

Next-click probe

Sampling on 500 Multimodal-Mind2Web test steps with 5 offered elements (20% chance baseline); not an official evaluation.

Input blink-mimo-9b MiMo base blink-4b
Page text 53.8% 49.0% 55.4%
Screenshot 48.4% 43.0% —

blink.py and serve.py use its text side only. Screenshot results above come from the separate probe harness, not blink.py.

Use

# pip install "torch==2.13.0" "transformers==5.17.0" "flash-linear-attention==0.5.2" "accelerate>=1.1.0" safetensors huggingface_hub
import os, sys
from huggingface_hub import hf_hub_download

os.environ["BLINK_MODEL"] = "thegovind/blink-mimo-9b"
os.environ["BLINK_REVISION"] = "v1.2"
sys.path.insert(0, os.path.dirname(hf_hub_download("thegovind/blink-mimo-9b", "blink.py", revision="v1.2")))
import blink

out = blink.decide(
    "Order #4411 arrived with a cracked screen. I want my money back, not another one.",
    {
        "intent": {
            "type": "choice",
            "instructions": "What does the customer want?",
            "criteria": {"refund": "Money back", "replacement": "A new unit", "info": "Information only"},
        },
        "urgent": {"type": "noul", "instructions": "Does this need a reply today?"},
        "anger": {"type": "score", "instructions": "How upset is the customer?", "criteria": ["calm", "annoyed", "angry"]},
    },
)
print(out["answers"]["intent"]["probabilities"])

Run it as a server

serve.py provides TypeSafe server-side SDK compatibility at POST /v1/systemone and lists the served model at GET /v1/models. Set TYPESAFE_BASE_URL to connect TypeSafe Python or JavaScript SDKs; JevBench's typesafe adapter and Decision Index's http engine work unchanged. GET /healthz reports startup checks. v1.2 updates code only; weights are identical to v1.0.

See the API reference for full details.

pip install "torch==2.13.0" "transformers==5.17.0" "flash-linear-attention==0.5.2" "accelerate>=1.1.0" safetensors huggingface_hub
hf download thegovind/blink-mimo-9b --revision v1.2 --local-dir blink-mimo-9b
python blink-mimo-9b/serve.py --model ./blink-mimo-9b --port 8000
# TypeSafe SDKs: export TYPESAFE_BASE_URL=http://127.0.0.1:8000 TYPESAFE_API_KEY=any

Or run with Docker:

cd blink-mimo-9b
docker build -t blink-mimo-9b . && docker run --rm --gpus all -p 127.0.0.1:8000:8000 blink-mimo-9b
Server options, batching, and limits
  • API key: Optional. Set --api-key or BLINK_API_KEY to require Authorization: Bearer <key> on API routes. Missing or invalid keys return 401; /healthz stays open.
  • Limits and errors: 255 options per choice, 2–10 score levels, 131,072 input tokens per question (longest evaluated prompt: 37,906 tokens), 512 questions per request. Error bodies set error and detail. Requests exceeding limits return 422 with the reason; inputs are not truncated.
  • Model listing: GET /v1/models lists the served model with a blank release_date.
  • Batching: Set --batch-window-ms 5 to enable cross-request batching (default 0 runs requests one at a time), up to --max-batch-requests (default 16). --max-queued-requests holds up to 64 waiting requests; excess requests receive HTTP 529 with Retry-After (returned 503 in v1.1).
  • FP32 reference coverage caveat: On the Decision Index sample, a set of long workflow documents, and the public TypeSafe cases covered by the FP32 reference, batched answers passed the same numerical-parity checks against an FP32 reference as one-at-a-time answers, covering argmax agreement and probability differences. The FP32 reference could not run the 5 longest TypeSafe documents, so parity covered 170 of 354 TypeSafe questions; batched and one-at-a-time runs chose the same option on the other 184. A few near-tied answers can still flip.
  • Batching command:
    hf download thegovind/blink-mimo-9b serve.py blink.py --revision v1.2 --local-dir blink-mimo-9b
    python blink-mimo-9b/serve.py --model ./blink-mimo-9b --port 8000 --batch-window-ms 5
    
  • Weights: 18.8 GB in bf16 (8.95B text parameters, 9.41B total).
Details: Architecture, training, evaluation, and limits

Network architecture

blink-mimo-9b network diagram: 32 decoder layers repeating 3 Gated DeltaNet layers then one full-attention layer (24 and 8 in total, hidden 4096), with full attention at 0-based layers 3, 7, … 31 as in the tensor names; LoRA rank 16 on every attention, Gated DeltaNet and MLP projection (43.3M parameters, merged after training); token embeddings, norms and lm_head frozen, with lm_head untied, a separate matrix; the 27-block vision tower kept byte-for-byte; and the answer read from the offered option-letter rows of lm_head.

  • Backbone: MiMo-V2.6-Distill-Qwen-9B (upstream revision 2367e86), a Qwen3.5-9B fine-tune. 32 decoder layers (24 Gated DeltaNet, 8 full-attention), hidden dimension 4096, untied embeddings.
  • Vision: 27 encoder blocks, hidden 1152 projected to 4096; all 333 vision tensors unchanged.
  • Tuned: 43.3M LoRA parameters; all 248 targeted tensors changed, all 179 other language-model tensors bit-identical to MiMo.
  • LoRA targets (rank 16, alpha 32, every language-model layer): full-attention q_proj, k_proj, v_proj, o_proj; Gated DeltaNet in_proj_qkv, in_proj_z, in_proj_a, in_proj_b, out_proj; and every MLP's gate_proj, up_proj, down_proj. Token embeddings, all norms and lm_head stayed frozen. The trained adapters were merged into the text weights.
  • Readout: Single forward pass without text generation. Next-token logits from offered option rows of lm_head (single tokens A–Z, then two-letter labels), computed in FP32 and softmaxed over offered letters. Temperature 1.0 (not fitted). These are option-conditional model probabilities, not certified chances of being right.

How it was trained

blink-mimo-9b post-training diagram: one run (123,195 rows) broken down by data category feed supervised fine-tuning with cross-entropy over the offered option letters; a single pre-registered epoch is merged and grafted back into the full vision-language checkpoint, vision tower unchanged, as release v1.0. Decision Index 0.1 full suite 56.53.

One pre-registered run and one epoch (123,195 rows, lr 5e-5, 615 steps). Supervised fine-tuning with cross-entropy on target distributions (exact probabilities, agreed teacher targets, or one-hot labels). Options and letter assignments reshuffled each epoch; score levels preserve order. No RL or preference optimization.

The DI-S gate required DI-S >= 55 before reading the full suite. DI-S scored 55.3 (Knowledge 55.6, Language 66.4, Retrieval 33.0, Tools 70.7, Arts 50.8), clearing the gate. Outside DI-S, the model scored 56.60 across the 129,422 requests not used for selection.

Step DI-S Full 0.1 Outside DI-S Note
MiMo base, zero-shot 47.09 — — Baseline before decision training.
blink-mimo-9b (123,195 question rows; lr 5e-5; 615 steps) 55.3 56.53 56.60 Cleared DI-S gate; shipped.

Training mix (123,195 rows): 61,394 public-source, 23,894 program-generated reasoning, 12,000 decision worlds, 7,860 teacher-written rows (Qwen3.8-27B), 7,000 judge-style, 6,000 chess move choices, and 5,047 exact-probability worlds.

Data sources and licenses

Source Licence
MMLU auxiliary train, CommonsenseQA, GSM8K MIT
AQuA-RAT, Amazon ESCI Apache-2.0
searchless_chess data CC BY 4.0 (Lichess-derived portions CC0); code Apache-2.0
MedMCQA Apache-2.0 (dataset card)
SuperGPQA ODC-BY
WANLI, ContractNLI, BANKING77 CC BY 4.0
ARC CC BY-SA 4.0
BoolQ, Dolly-15k CC BY-SA 3.0
ANLI CC BY-NC 4.0
SciQ CC BY-NC 3.0
iSarcasmEval MIT (upstream repository licence)
VAST, Humicroedit, OpenBookQA None stated by source
Code-generated worlds and teacher-written documents (Qwen3.8-27B) See LICENSE.md

Source repository licenses do not settle rights in underlying texts.

Evaluation notes

  • Scorer parity: blink.py and the lab scorer agree within 1e-7 on this checkpoint (p99 |Δp| 1.4e-8). Published weights match the evaluated adapter on 231 public JevBench items (0 argmax changes, max |Δp| 0.0). Median per-request latency on 1,000 suite requests was 68.3 ms via HTTP vs 66.9 ms in-process. serve.py matched evaluation answers on public items (easy 48/48, standard 70/72, hard 77/111; 0 argmax changes; max |Δp| about 0.03).
  • Selection: Prompt format came from earlier DI-S reads. The DI-S sample served as a pre-registered gate. The remaining 129,422 suite requests outside DI-S were not used for selection and scored 56.60.
  • Training overlap: Public train splits in the 0.1 index: ContractNLI, iSarcasmEval, VAST, Amazon ESCI, Humicroedit, ChessBench (training positions; none of the 5,000 test positions), GSM8K train split. ANLI and BANKING77 train splits were also used (in 0.1 suite but outside index; in 0.2 panel). Public-source data included training and development partitions.
  • Mixture audit: Every question row was screened against the 132,422 requests in 0.1 and 231 public JevBench items for exact matches (>=30 normalized characters) and shared 13-word passages (ignoring strings appearing in 20 or more requests as templates). No public JevBench items or chess positions matched.
  • Overlap findings: 16 BANKING77/VAST training rows share a 13-word passage with 31 suite requests (23 VAST, 8 BANKING77). Two VAST training posts are near-duplicates of a test post, but these rows had no exact normalised-text match under the audit. Dropping these requests leaves the index at 56.53 (VAST 0.7805 -> 0.7803); BANKING77 is outside the 0.1 index.
  • Audit limits: The 13-word check did not search long-document bodies or option text. Semantic or pretraining overlap cannot be ruled out. Private JevBench items were unavailable to check.
  • Generated data: Program-computed labels were used for CRUXEval-style and CLadder-style questions; no benchmark items were used. Suite GSM8K distractors were not reused. Teacher documents (Qwen3.8-27B) were kept only when a blind re-solve by the teacher agreed.
  • MMLU-Pro and GPQA: Neither benchmark was used in training; SuperGPQA is a separate source.

Limits

  • English-centric: Training included Arabic iSarcasmEval rows (Arabic task A scored 0.321, task C pairs 0.79 on 0.1). Multilingual performance is not established.
  • No text generation: Does not chat or explain answers.
  • Prompt sensitivity: Text in the state can influence the answer.
  • Reasoning gaps: Weakest public hard cases are date/number reasoning, trade-offs, and long policies.

License

Code (blink.py, serve.py, Dockerfile): Apache-2.0. Weights: non-commercial research only; see LICENSE.md. The MiMo model card declares MIT without a separate upstream licence file or copyright line (LICENSE-MiMo.md); its Qwen/Qwen3.5-9B base is Apache-2.0 (LICENSE-Qwen).

Downloads last month
67
Safetensors
Model size
9B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for thegovind/blink-mimo-9b

Finetuned
Qwen/Qwen3.5-9B
Finetuned
(16)
this model
Quantizations
1 model

Space using thegovind/blink-mimo-9b 1