139
stars
16
commits
4
repos using this model
2
linked in READMEs
Sep 8, 2026
updated

North Micro Vision Instruct is a 2.4B-parameter open-weight vision-language model with native-resolution image support, released under the Apache 2.0 license. It is designed as a compact foundation for prototyping, task-specific fine-tuning, and specialized multimodal applications.
Developed by Cohere.
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 |
The language backbone supports a 128K-token context window, but the validated operating range for multimodal prompts is up to 8K tokens. Longer multimodal contexts may rely on extrapolation and have not been benchmarked.
Install PyTorch for your platform first. North Micro Vision requires Transformers 5.16.0, together with 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:
uv pip install accelerate pillow
uv pip install "git+https://github.com/huggingface/transformers.git"
Once Transformers 5.16.0 is available on PyPI, install the released package with:
uv pip install accelerate pillow "transformers==5.16.0"
Flash Attention 2 is optional. On supported CUDA systems, install it with:
uv pip install flash-attn --no-build-isolation
If you do not use uv, replace uv pip with pip in the commands above.
The following example loads an image from a URL and asks the model to describe it. Prompts can interleave text with one or more images; for text-only prompts, omit the image entries.
import torch
from transformers import AutoModelForImageTextToText, AutoProcessor
model_id = "CohereLabs/North-Micro-Vision-Instruct"
processor = AutoProcessor.from_pretrained(
model_id,
)
model = AutoModelForImageTextToText.from_pretrained(
model_id,
dtype="auto",
device_map="auto",
)
# To enable Flash Attention 2, load the model with the following settings:
# model = AutoModelForImageTextToText.from_pretrained(
# model_id,
# dtype=torch.bfloat16,
# attn_implementation="flash_attention_2",
# device_map="auto",
# )
image_url = "https://cdn-uploads.huggingface.co/production/uploads/66d732effe6684fc16b12c28/Io_5OCmftsmH-n158ZtPs.png"
messages = [
{
"role": "user",
"content": [
{"type": "image", "url": image_url},
{"type": "text", "text": "What do you see?"},
],
}
]
inputs = processor.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt",
return_dict=True,
).to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=128,
do_sample=True,
temperature=0.7,
top_p=0.8,
top_k=20,
)
generated_ids = [
output_ids[len(input_ids) :]
for input_ids, output_ids in zip(inputs.input_ids, outputs)
]
response = processor.batch_decode(
generated_ids,
skip_special_tokens=True,
clean_up_tokenization_spaces=False,
)[0]
print(response)
The example uses the recommended Transformers sampling settings. For deterministic output, set do_sample=False and omit temperature, top_p, and top_k.
North Micro Vision combines a custom-trained 400M-parameter native-resolution vision encoder with an in-house 2B-parameter language model North Micro LLM. The language model follows our Command A+ architecture, interleaving three sliding-window attention layers that use rotary positional embeddings with one global attention layer without positional embeddings. The vision encoder combines 2D RoPE with learned 1D positional embeddings to preserve spatial structure across native-resolution inputs.
The projector maps visual features into the language model's embedding space. Following DeepStack, patch embeddings from multiple vision-encoder layers are injected into corresponding early LLM layers, giving the language model access to visual representations at different levels of abstraction.
High-level North Micro Vision architecture, consisting of a native-resolution vision encoder, a projector, and a language model.
Bounding boxes are returned as [x1, y1, x2, y2] on a normalized 0–1000 scale. Map them back to the original image by scaling each axis:
x1_px = x1 / 1000 * image_width
y1_px = y1 / 1000 * image_height
x2_px = x2 / 1000 * image_width
y2_px = y2 / 1000 * image_height
Public vLLM support is coming soon. Until it is available, use Transformers as shown above. The recommended vLLM settings will be:
temperature = 0.7
top_p = 0.8
top_k = 20
min_p = 0.0
presence_penalty = 1.5
repetition_penalty = 1.0
North Micro Vision Instruct is intended for research and development use cases such as:
system role.In partnership with NVIDIA, we're also shipping an AutoModel recipe for North Micro Vision, so developers can fine-tune and deploy it on NVIDIA GPUs right out of the box.
The complete comparison is provided below. We ran vision-language and text-only evaluations with VLMEvalKit, capping generation at 1,024 tokens; see the technical blog post for the full methodology.
| 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 |
† Averaged over RefCOCO_val, RefCOCO_testA, RefCOCO_testB, RefCOCO+_val, RefCOCO+_testA, RefCOCO+_testB, RefCOCOg_val, RefCOCOg_test.
‡ SmolVLM2.2B's GQA output was scored as 0.000 under VLMEvalKit's answer-extraction rules.
@misc{cohere_north_micro_vision_instruct,
title = {{North Micro Vision}: A 2.4B Native-Resolution Vision-Language Model},
url = {https://huggingface.co/blog/CohereLabs/meet-north-micro-vision-instruct},
author = {{Team Cohere}},
month = {August},
year = {2026}
}
For errors or questions about this model card, contact Cohere Labs.
14 commits
2 commits
139
stars
16
commits
4
repos using this model
2
linked in READMEs
Sep 8, 2026
updated

North Micro Vision Instruct is a 2.4B-parameter open-weight vision-language model with native-resolution image support, released under the Apache 2.0 license. It is designed as a compact foundation for prototyping, task-specific fine-tuning, and specialized multimodal applications.
Developed by Cohere.
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 |
The language backbone supports a 128K-token context window, but the validated operating range for multimodal prompts is up to 8K tokens. Longer multimodal contexts may rely on extrapolation and have not been benchmarked.
Install PyTorch for your platform first. North Micro Vision requires Transformers 5.16.0, together with 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:
uv pip install accelerate pillow
uv pip install "git+https://github.com/huggingface/transformers.git"
Once Transformers 5.16.0 is available on PyPI, install the released package with:
uv pip install accelerate pillow "transformers==5.16.0"
Flash Attention 2 is optional. On supported CUDA systems, install it with:
uv pip install flash-attn --no-build-isolation
If you do not use uv, replace uv pip with pip in the commands above.
The following example loads an image from a URL and asks the model to describe it. Prompts can interleave text with one or more images; for text-only prompts, omit the image entries.
import torch
from transformers import AutoModelForImageTextToText, AutoProcessor
model_id = "CohereLabs/North-Micro-Vision-Instruct"
processor = AutoProcessor.from_pretrained(
model_id,
)
model = AutoModelForImageTextToText.from_pretrained(
model_id,
dtype="auto",
device_map="auto",
)
# To enable Flash Attention 2, load the model with the following settings:
# model = AutoModelForImageTextToText.from_pretrained(
# model_id,
# dtype=torch.bfloat16,
# attn_implementation="flash_attention_2",
# device_map="auto",
# )
image_url = "https://cdn-uploads.huggingface.co/production/uploads/66d732effe6684fc16b12c28/Io_5OCmftsmH-n158ZtPs.png"
messages = [
{
"role": "user",
"content": [
{"type": "image", "url": image_url},
{"type": "text", "text": "What do you see?"},
],
}
]
inputs = processor.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt",
return_dict=True,
).to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=128,
do_sample=True,
temperature=0.7,
top_p=0.8,
top_k=20,
)
generated_ids = [
output_ids[len(input_ids) :]
for input_ids, output_ids in zip(inputs.input_ids, outputs)
]
response = processor.batch_decode(
generated_ids,
skip_special_tokens=True,
clean_up_tokenization_spaces=False,
)[0]
print(response)
The example uses the recommended Transformers sampling settings. For deterministic output, set do_sample=False and omit temperature, top_p, and top_k.
North Micro Vision combines a custom-trained 400M-parameter native-resolution vision encoder with an in-house 2B-parameter language model North Micro LLM. The language model follows our Command A+ architecture, interleaving three sliding-window attention layers that use rotary positional embeddings with one global attention layer without positional embeddings. The vision encoder combines 2D RoPE with learned 1D positional embeddings to preserve spatial structure across native-resolution inputs.
The projector maps visual features into the language model's embedding space. Following DeepStack, patch embeddings from multiple vision-encoder layers are injected into corresponding early LLM layers, giving the language model access to visual representations at different levels of abstraction.
High-level North Micro Vision architecture, consisting of a native-resolution vision encoder, a projector, and a language model.
Bounding boxes are returned as [x1, y1, x2, y2] on a normalized 0–1000 scale. Map them back to the original image by scaling each axis:
x1_px = x1 / 1000 * image_width
y1_px = y1 / 1000 * image_height
x2_px = x2 / 1000 * image_width
y2_px = y2 / 1000 * image_height
Public vLLM support is coming soon. Until it is available, use Transformers as shown above. The recommended vLLM settings will be:
temperature = 0.7
top_p = 0.8
top_k = 20
min_p = 0.0
presence_penalty = 1.5
repetition_penalty = 1.0
North Micro Vision Instruct is intended for research and development use cases such as:
system role.In partnership with NVIDIA, we're also shipping an AutoModel recipe for North Micro Vision, so developers can fine-tune and deploy it on NVIDIA GPUs right out of the box.
The complete comparison is provided below. We ran vision-language and text-only evaluations with VLMEvalKit, capping generation at 1,024 tokens; see the technical blog post for the full methodology.
| 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 |
† Averaged over RefCOCO_val, RefCOCO_testA, RefCOCO_testB, RefCOCO+_val, RefCOCO+_testA, RefCOCO+_testB, RefCOCOg_val, RefCOCOg_test.
‡ SmolVLM2.2B's GQA output was scored as 0.000 under VLMEvalKit's answer-extraction rules.
@misc{cohere_north_micro_vision_instruct,
title = {{North Micro Vision}: A 2.4B Native-Resolution Vision-Language Model},
url = {https://huggingface.co/blog/CohereLabs/meet-north-micro-vision-instruct},
author = {{Team Cohere}},
month = {August},
year = {2026}
}
For errors or questions about this model card, contact Cohere Labs.
14 commits
2 commits