Instructions to use thegovind/blink-mimo-9b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use thegovind/blink-mimo-9b with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="thegovind/blink-mimo-9b") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("thegovind/blink-mimo-9b") model = AutoModelForMultimodalLM.from_pretrained("thegovind/blink-mimo-9b", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use thegovind/blink-mimo-9b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "thegovind/blink-mimo-9b" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "thegovind/blink-mimo-9b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/thegovind/blink-mimo-9b
- SGLang
How to use thegovind/blink-mimo-9b with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "thegovind/blink-mimo-9b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "thegovind/blink-mimo-9b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "thegovind/blink-mimo-9b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "thegovind/blink-mimo-9b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use thegovind/blink-mimo-9b with Docker Model Runner:
docker model run hf.co/thegovind/blink-mimo-9b
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.
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-keyorBLINK_API_KEYto requireAuthorization: Bearer <key>on API routes. Missing or invalid keys return 401;/healthzstays 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
erroranddetail. Requests exceeding limits return 422 with the reason; inputs are not truncated. - Model listing:
GET /v1/modelslists the served model with a blankrelease_date. - Batching: Set
--batch-window-ms 5to enable cross-request batching (default 0 runs requests one at a time), up to--max-batch-requests(default 16).--max-queued-requestsholds up to 64 waiting requests; excess requests receive HTTP 529 withRetry-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
- 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 DeltaNetin_proj_qkv,in_proj_z,in_proj_a,in_proj_b,out_proj; and every MLP'sgate_proj,up_proj,down_proj. Token embeddings, all norms andlm_headstayed 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
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.pyand 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.pymatched 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
Model tree for thegovind/blink-mimo-9b
Base model
Qwen/Qwen3.5-9B-Base

