Model reference · open weights
MiniCPM-V-4.6 is an open-weight language model from openbmb. MiniCPM-V-4.6-GPTQ (GPTQ) weighs 1.9 GB; the smallest configuration that runs it is RTX 3060 12 GB.
Summary of the openbmb/MiniCPM-V-4.6 model card, 2026-10-01. The estimate below is for another build of the family.
What it is
| Released by | openbmb |
|---|---|
| Released | 2026-04-13 |
| Parameters | 1.3B |
| VRAM | 1.9 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory | |
|---|---|---|---|---|
| 8K each | 32K each | |||
| RTX 3060 12 GB | 55 | 17 | all 256K | 11.6 GB |
| RTX 4060 Ti 16 GB | 82 | 26 | all 256K | 15.4 GB |
| RTX 3090 24 GB | 139 | 44 | all 256K | 23.4 GB |
| RTX 4090 24 GB | 139 | 44 | all 256K | 23.4 GB |
| RTX 5090 32 GB | 194 | 61 | all 256K | 31.0 GB |
| L40S 48 GB | 286 | 90 | all 256K | 44.0 GB |
| A100 80 GB | 531 | 168 | all 256K | 78.2 GB |
| H100 80 GB | 495 | 156 | all 256K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 607 | 192 | all 256K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 704 | 222 | all 256K | 107 GB |
| H200 141 GB | 923 | 292 | all 256K | 138 GB |
| B200 180 GB | 1000+ | 378 | all 256K | 176 GB |
| Requests at once | 8K tokens each | 32K tokens each |
|---|---|---|
| 1 | 4.0 GB | 4.3 GB |
| 5 | 4.6 GB | 6.1 GB |
| 8 | 5.0 GB | 7.4 GB |
| 16 | 6.1 GB | 11.0 GB |
| 32 | 8.4 GB | 18.0 GB |
| 64 | 12.8 GB | 32.2 GB |
One card, with vLLM's small-card settings.
Builds
| Build | Params | Precision | Weights | Smallest setup |
|---|---|---|---|---|
| MiniCPM-V-4.6 ↗ | 1.3B | BF16 | 2.6 GB | RTX 3060 12 GB |
| MiniCPM-V-4.6-AWQ ↗ | 1.3B | AWQ | 1.9 GB | RTX 3060 12 GB |
| MiniCPM-V-4.6-GPTQ (above) ↗ | 1.3B | GPTQ | 1.9 GB | RTX 3060 12 GB |
| MiniCPM-V-4.6-gguf ↗ 11 builds: Q4_0 501 MB … F16 1.5 GB |
— | GGUF | 529 MB | RTX 3060 12 GB |
From the model card
A Pocket-Sized MLLM for Ultra-Efficient Image and Video Understanding on Your Phone
GitHub | MiniCPM Wiki(Chinese) | CookBook | Demo | Feishu (Lark)
MiniCPM-V 4.6 is our most edge-deployment-friendly model to date. The model is built based on SigLIP2-400M and the Qwen3.5-0.8B LLM. It inherits the strong single-image, multi-image, and video understanding capabilities of MiniCPM-V family, while significantly improving computation efficiency. It also introduces mixed 4x/16x visual token compression. Notable features of MiniCPM-V 4.6 include:
🔥 Leading Foundation Capability. MiniCPM-V 4.6 scores 13 on the Artificial Analysis Intelligence Index benchmark, outperforming Qwen3.5-0.8B's score of 10 with 19x fewer token cost, and Qwen3.5-0.8B-Thinking's score of 11 with 43x fewer token cost. It also surpasses the larger Ministral 3 3B (score of 11).
💪 Strong Multimodal Capability. MiniCPM-V 4.6 outperforms Qwen3.5-0.8B on most vision-language understanding tasks, and reaches Qwen3.5 2B-level capability on many benchmarks including OpenCompass, RefCOCO, HallusionBench, MUIRBench, and OCRBench.
🚀 Ultra-Efficient Architecture. Based on the latest technique in LLaVA-UHD v4, MiniCPM-V 4.6 reduces the visual encoding computation FLOPs by more than 50%. It enables MiniCPM-V 4.6 to achieve better efficiency to even smaller models, achieving ~1.5x token throughput compared to Qwen3.5-0.8B. It also supports mixed 4x/16x visual token compression rate, allowing flexible switching between accuracy and speed.
📱 Broad Mobile Platform Coverage. MiniCPM-V 4.6 can be deployed across all three mainstream mobile platforms — iOS, Android, and HarmonyOS. With every edge adaptation code open-sourced, developers can reproduce the on-device experience in just a few steps.
🛠️ Developer Friendly. MiniCPM-V 4.6 is adapted to inference frameworks such as vLLM, SGLang, llama.cpp, Ollama, and supports fine-tuning ecosystems such as SWIFT and LLaMA-Factory. Developers can quickly customize models for new domains and tasks on consumer-grade GPUs. We provide multiple quantized variants across GGUF, BNB, AWQ, and GPTQ formats.
Overall Performance (Instruct)
High-Concurrency Throughput
Single Request TTFT (ms)
MiniCPM-V 4.6 can be deployed across three mainstream end-side platforms — iOS, Android and HarmonyOS. The clips below are raw screen recordings on phone devices without edition.
pip install "transformers[torch]>=5.7.0" torchvision torchcodec
Note on CUDA compatibility:
torchcodec(used for video decoding) may have compatibility issues with certain CUDA versions. For example,torch>=2.11bundles CUDA 13.1 by default, while environments with CUDA 12.x may encounter errors such asRuntimeError: Could not load libtorchcodec. Two workarounds:
- Replace
torchcodecwithPyAV— supports both image and video inference without CUDA version constraints:pip install "transformers[torch]>=5.7.0" torchvision av- Pin the CUDA version when installing torch to match your environment (e.g. CUDA 12.8):
pip install "transformers>=5.7.0" torchvision torchcodec --index-url https://download.pytorch.org/whl/cu128
from transformers import AutoModelForImageTextToText, AutoProcessor
model_id = "openbmb/MiniCPM-V-4.6"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(
model_id, torch_dtype="auto", device_map="auto"
)
# Flash Attention 2 is recommended for better acceleration and memory saving,
# especially in multi-image and video scenarios.
# model = AutoModelForImageTextToText.from_pretrained(
# model_id,
# torch_dtype=torch.bfloat16,
# attn_implementation="flash_attention_2",
# device_map="auto",
# )
messages = [
{
"role": "user",
"content": [
{"type": "image", "url": "https://huggingface.co/datasets/openbmb/DemoCase/resolve/main/refract.png"},
{"type": "text", "text": "What causes this phenomenon?"},
],
}
]
downsample_mode = "16x" # Using `downsample_mode="4x"` for Finer Detail
inputs = processor.apply_chat_template(
messages, tokenize=True, add_generation_prompt=True,
return_dict=True, return_tensors="pt",
downsample_mode=downsample_mode,
max_slice_nums=36,
).to(model.device)
generated_ids = model.generate(**inputs, downsample_mode=downsample_mode, max_new_tokens=512)
generated_ids_trimmed = [
out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_text[0])
messages = [
{
"role": "user",
"content": [
{"type": "video", "url": "https://huggingface.co/datasets/openbmb/DemoCase/resolve/main/football.mp4"},
{"type": "text", "text": "Describe this video in detail. Follow the timeline and focus on on-screen text, interface changes, main actions, and sceneQuoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.