Views
No views yet

Technical deep dive: Read the North Micro Vision technical blog post for architecture, training, and evaluation details.
| Property | Value |
|---|---|
| Model ID | CohereLabs/North-Micro-Vision-Instruct |
| Total parameters | 2.4B |
| Language model | 2B parameters |
| Vision encoder | 400M parameters; custom-trained starting from SigLIP 2 SO400M |
| Inputs | Interleaved text and images |
| Output | Text |
| Languages | English, German, French, Spanish, Italian, Portuguese, Hindi, Japanese, Korean, Chinese, Arabic, and more |
| Tokenizer vocabulary size | 262,144 |
| LM Backbone context window | 128K tokens |
| Multimodal training context | 8K tokens |
| Checkpoint precision | bfloat16 |
| License | Apache 2.0 |
accelerate for automatic device placement and Pillow for image loading. Until Transformers 5.16.0 is released, install the runtime dependencies and Transformers from source:1uv pip install accelerate pillow
2uv pip install "git+https://github.com/huggingface/transformers.git"uv pip install accelerate pillow "transformers==5.16.0"uv pip install flash-attn --no-build-isolationuv, replace uv pip with pip in the commands above.1import torch
2from transformers import AutoModelForImageTextToText, AutoProcessor
3
4model_id = "CohereLabs/North-Micro-Vision-Instruct"
5
6processor = AutoProcessor.from_pretrained(
7 model_id,
8)
9model = AutoModelForImageTextToText.from_pretrained(
10 model_id,
11 dtype="auto",
12 device_map="auto",
13)
14
15# To enable Flash Attention 2, load the model with the following settings:
16# model = AutoModelForImageTextToText.from_pretrained(
17# model_id,
18# dtype=torch.bfloat16,
19# attn_implementation="flash_attention_2",
20# device_map="auto",
21# )
22
23image_url = "https://cdn-uploads.huggingface.co/production/uploads/66d732effe6684fc16b12c28/Io_5OCmftsmH-n158ZtPs.png"
24messages = [
25 {
26 "role": "user",
27 "content": [
28 {"type": "image", "url": image_url},
29 {"type": "text", "text": "What do you see?"},
30 ],
31 }
32]
33
34inputs = processor.apply_chat_template(
35 messages,
36 tokenize=True,
37 add_generation_prompt=True,
38 return_tensors="pt",
39 return_dict=True,
40).to(model.device)
41
42outputs = model.generate(
43 **inputs,
44 max_new_tokens=128,
45 do_sample=True,
46 temperature=0.7,
47 top_p=0.8,
48 top_k=20,
49)
50
51generated_ids = [
52 output_ids[len(input_ids) :]
53 for input_ids, output_ids in zip(inputs.input_ids, outputs)
54]
55response = processor.batch_decode(
56 generated_ids,
57 skip_special_tokens=True,
58 clean_up_tokenization_spaces=False,
59)[0]
60print(response)do_sample=False and omit temperature, top_p, and top_k.
[x1, y1, x2, y2] on a normalized 0–1000 scale. Map them back to the original image by scaling each axis:1x1_px = x1 / 1000 * image_width
2y1_px = y1 / 1000 * image_height
3x2_px = x2 / 1000 * image_width
4y2_px = y2 / 1000 * image_height1temperature = 0.7
2top_p = 0.8
3top_k = 20
4min_p = 0.0
5presence_penalty = 1.5
6repetition_penalty = 1.0system role.| North-Micro-Vision-Instruct | Ministral-3-3B-Instruct | LFM2.5-VL-1.6B | Phi-3.5-vision-instruct | Gemma-4-E2B-it | Qwen3-VL-2B-Instruct | Qwen3.5-2B-Instruct | SmolVLM2.2B | |
|---|---|---|---|---|---|---|---|---|
| Size | 2.4B | 3.8B | 1.6B | 4.2B | 5.1B | 2.2B | 2.1B | 2.2B |
| License | Apache 2.0 | Apache 2.0 | LFM v1.0 | MIT | Apache 2.0 | Apache 2.0 | Apache 2.0 | Apache 2.0 |
| General VQA | ||||||||
| MMBenchDEV_EN_V11 | 0.687 | 0.692 | 0.696 | 0.731 | 0.693 | 0.744 | 0.760 | 0.674 |
| MMStar | 0.518 | 0.531 | 0.508 | 0.495 | 0.529 | 0.506 | 0.614 | 0.460 |
| RealWorldQA | 0.622 | 0.583 | 0.642 | 0.580 | 0.507 | 0.646 | 0.693 | 0.567 |
| GQATestDev_Balanced | 0.574 | 0.544 | 0.395 | 0.650 | 0.387 | 0.572 | 0.539 | 0.000‡ |
| Multilingual | ||||||||
| MTLMMBench_DEV | 0.636 | 0.674 | 0.623 | 0.619 | 0.648 | 0.664 | 0.669 | 0.454 |
| MMMB | 0.728 | 0.734 | 0.717 | 0.686 | 0.743 | 0.723 | 0.745 | 0.577 |
| Multi-image | ||||||||
| BLINK | 0.527 | 0.471 | 0.484 | 0.561 | 0.468 | 0.514 | 0.563 | 0.420 |
| Chart / Document / OCR | ||||||||
| ChartQATest | 0.808 | 0.791 | 0.739 | 0.821 | 0.422 | 0.693 | 0.775 | 0.682 |
| DocVQAVAL | 0.921 | 0.896 | 0.877 | 0.860 | 0.732 | 0.825 | 0.926 | 0.799 |
| InfoVQAVAL | 0.652 | 0.589 | 0.627 | 0.561 | 0.380 | 0.622 | 0.731 | 0.383 |
| OCRBenchv2_en | 0.367 | 0.414 | 0.415 | 0.339 | 0.435 | 0.417 | 0.481 | 0.304 |
| OCRBench | 0.792 | 0.735 | 0.802 | 0.642 | 0.719 | 0.751 | 0.861 | 0.727 |
| AI2D_TEST | 0.775 | 0.741 | 0.728 | 0.790 | 0.712 | 0.713 | 0.752 | 0.697 |
| CharXivDQ | 0.600 | 0.766 | 0.516 | 0.637 | 0.751 | 0.595 | 0.761 | 0.482 |
| STEM | ||||||||
| MMMUDEV_VAL | 0.329 | 0.508 | 0.380 | 0.432 | 0.477 | 0.379 | 0.474 | 0.399 |
| Grounding / Counting | ||||||||
| RefCOCOavg† | 0.732 | 0.317 | 0.581 | 0.451 | 0.084 | 0.304 | 0.785 | 0.018 |
| CountBench | 0.725 | 0.737 | 0.910 | 0.645 | 0.534 | 0.848 | 0.805 | 0.764 |
| Robustness / Hallucination | ||||||||
| HallusionBench | 0.615 | 0.652 | 0.601 | 0.585 | 0.598 | 0.673 | 0.655 | 0.600 |
| Text | ||||||||
| MMLUtest | 0.504 | 0.660 | 0.464 | 0.355 | 0.692 | 0.630 | 0.543 | 0.084 |
| MMLU-Protest | 0.307 | 0.475 | 0.199 | 0.286 | 0.441 | 0.428 | 0.298 | 0.099 |
| Multi-If | 0.373 | 0.470 | 0.443 | 0.304 | 0.687 | 0.523 | 0.464 | 0.236 |
| IFEval | 0.749 | 0.725 | 0.776 | 0.543 | 0.869 | 0.734 | 0.679 | 0.501 |
1@misc{cohere_north_micro_vision_instruct,
2 title = {{North Micro Vision}: A 2.4B Native-Resolution Vision-Language Model},
3 url = {https://huggingface.co/blog/CohereLabs/meet-north-micro-vision-instruct},
4 author = {{Team Cohere}},
5 month = {August},
6 year = {2026}
7}