MiniCPM-V 4.6 Thinking
is the long chain-of-thought reasoning variant of
MiniCPM-V 4.6
. It generates an explicit reasoning trace before producing the final answer, substantially boosting performance on complex multimodal reasoning, math, and OCR-heavy tasks, while keeping the same edge-friendly architecture (SigLIP2-400M vision encoder + Qwen3.5-0.8B LLM) and the mixed 4x/16x visual token compression of MiniCPM-V 4.6.
Evaluation
Overall Performance (Thinking)
Click to view MiniCPM-V 4.6 (Instruct) performance.
Click to view MiniCPM-V 4.6 inference efficiency results.
High-Concurrency Throughput
Single Request TTFT (ms)
Examples
Overall
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.
Note on CUDA compatibility:
torchcodec
(used for video decoding) may have compatibility issues with certain CUDA versions. For example,
torch>=2.11
bundles CUDA 13.1 by default, while environments with CUDA 12.x may encounter errors such as
RuntimeError: Could not load libtorchcodec
. Two workarounds:
Replace
torchcodec
with
PyAV
— 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):
from transformers import AutoModelForImageTextToText, AutoProcessor
model_id = "openbmb/MiniCPM-V-4.6-Thinking-BNB"
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": "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 scene changes."},
],
}
]
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_num_frames=128,
stack_frames=1,
max_slice_nums=1,
use_image_id=False,
).to(model.device)
generated_ids = model.generate(**inputs, downsample_mode=downsample_mode, max_new_tokens=2048)
generated_ids_trimmed = [
out_ids[len(in_ids):] for in_ids, out_ids inzip(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])
Advanced Parameters
You can customize image/video processing by passing additional parameters to
apply_chat_template
:
Parameter
Default
Applies to
Description
downsample_mode
"16x"
Image & Video
Visual token downsampling.
"16x"
merges tokens for efficiency;
"4x"
keeps 4× more tokens for finer detail. Must also be passed to
generate()
.
max_slice_nums
9
Image & Video
Maximum number of slices when splitting a high-resolution image. Higher values preserve more detail for large images. Recommended:
36
for image,
1
for video.
max_num_frames
128
Video only
Maximum number of main frames sampled from the video.
stack_frames
1
Video only
Total sample points per second.
1
= main frame only (no stacking).
N
(N>1) = 1 main frame + N−1 sub-frames per second; the sub-frames are composited into a grid image and interleaved with main frames. Recommended:
3
or
5
.
use_image_id
True
Image & Video
Whether to prepend
<image_id>N</image_id>
tags before each image/frame placeholder. Recommended:
True
for image,
False
for video.
Note:
downsample_mode
must be passed to
both
apply_chat_template
(for correct placeholder count) and
generate
(for the vision encoder). All other parameters only need to be passed to
apply_chat_template
.
Serving with
transformers serve
Hugging Face Transformers includes a lightweight OpenAI-compatible server for quick testing and moderate-load deployment.
In some cases, the model might output escaped newline characters
\n
as string literals instead of actual newlines. To render the text correctly, especially in UI layers, you can use the following utility function. This function carefully replaces literal
\n
with real newlines while protecting scenarios where
\n
has specific semantic meaning.
Utility Function:
import re
_PATTERN = re.compile(
r'(```[\s\S]*?```'# fenced code blocksr'|`[^`]+`'# inline coder'|\$\$[\s\S]*?\$\$'# display mathr'|\$[^$]+\$'# inline mathr'|\\\([\s\S]*?\\\)'# \(...\)r'|\\\[[\s\S]*?\\\]'# \[...\]r')'r'|(?<!\\)(?:\\r\\n|\\[nr])'
)
defnormalize_response_text(text: str) -> str:
""" Lightweight post-processing: Converts literal '\\n' to actual newlines, while protecting code blocks, inline code, and LaTeX commands. """ifnotisinstance(text, str) or"\\"notin text:
return text
return _PATTERN.sub(lambda m: m.group(1) or'\n', text)
Deploy MiniCPM-V 4.6 on iOS, Android, and HarmonyOS Platforms
We have adapted MiniCPM-V 4.6 for deployment on
iOS, Android, and HarmonyOS
platforms, with
all edge adaptation code fully open-sourced
. Developers can reproduce the on-device experience in just a few steps. Visit our
edge deployment repository
for platform-specific build guides, or go to the
download page
to try pre-built apps directly.
Use MiniCPM-V 4.6 in Other Inference and Training Frameworks
MiniCPM-V 4.6 supports multiple inference and training frameworks. Below are quick-start commands for each. For full details, see our
Cookbook
.
Note:
--enable-auto-tool-choice
and
--tool-call-parser qwen3_coder
enable tool/function calling support. If you don't need tool use, you can omit these flags and simply run
vllm serve openbmb/MiniCPM-V-4.6-Thinking-BNB
.
swift sft --model_type minicpm-v-4_6 --dataset <your-dataset>
License
Model License
The MiniCPM-o/V model weights and code are open-sourced under the
Apache-2.0
license.
Statement
As MLLMs, MiniCPM-o/V models generate content by learning a large number of multimodal corpora, but they cannot comprehend, express personal opinions, or make value judgements. Anything generated by MiniCPM-o/V models does not represent the views and positions of the model developers
We will not be liable for any problems arising from the use of MiniCPM-o/V models, including but not limited to data security issues, risk of public opinion, or any risks and problems arising from the misdirection, misuse, dissemination, or misuse of the model.
Technical Reports and Key Techniques Papers
👏 Welcome to explore key techniques of MiniCPM-o/V and other multimodal projects of our team:
If you find our model/code/paper helpful, please consider citing our papers 📝 and staring us ⭐️!
@misc{cui2026minicpmo45realtimefullduplex,
title={MiniCPM-o 4.5: Towards Real-Time Full-Duplex Omni-Modal Interaction},
author={Junbo Cui and Bokai Xu and Chongyi Wang and Tianyu Yu and Weiyue Sun and Yingjing Xu and Tianran Wang and Zhihui He and Wenshuo Ma and Tianchi Cai and others},
year={2026},
url={https://arxiv.org/abs/2604.27393},
}
@proceedings{yu2025minicpmv45cookingefficient,
title={MiniCPM-V 4.5: Cooking Efficient MLLMs via Architecture, Data, and Training Recipe},
author={Tianyu Yu and Zefan Wang and Chongyi Wang and Fuwei Huang and Wenshuo Ma and Zhihui He and Tianchi Cai and Weize Chen and Yuxiang Huang and Yuanqian Zhao and others},
year={2025},
url={https://arxiv.org/abs/2509.18154},
}
@article{yao2024minicpm,
title={MiniCPM-V: A GPT-4V Level MLLM on Your Phone},
author={Yao, Yuan and Yu, Tianyu and Zhang, Ao and Wang, Chongyi and Cui, Junbo and Zhu, Hongji and Cai, Tianchi and Li, Haoyu and Zhao, Weilin and He, Zhihui and others},
journal={arXiv preprint arXiv:2408.01800},
year={2024}
}
Runs of openbmb MiniCPM-V-4.6-Thinking-BNB on huggingface.co
726
Total runs
0
24-hour runs
233
3-day runs
600
7-day runs
726
30-day runs
More Information About MiniCPM-V-4.6-Thinking-BNB huggingface.co Model
More MiniCPM-V-4.6-Thinking-BNB license Visit here:
MiniCPM-V-4.6-Thinking-BNB huggingface.co is an AI model on huggingface.co that provides MiniCPM-V-4.6-Thinking-BNB's model effect (), which can be used instantly with this openbmb MiniCPM-V-4.6-Thinking-BNB model. huggingface.co supports a free trial of the MiniCPM-V-4.6-Thinking-BNB model, and also provides paid use of the MiniCPM-V-4.6-Thinking-BNB. Support call MiniCPM-V-4.6-Thinking-BNB model through api, including Node.js, Python, http.
MiniCPM-V-4.6-Thinking-BNB huggingface.co is an online trial and call api platform, which integrates MiniCPM-V-4.6-Thinking-BNB's modeling effects, including api services, and provides a free online trial of MiniCPM-V-4.6-Thinking-BNB, you can try MiniCPM-V-4.6-Thinking-BNB online for free by clicking the link below.
openbmb MiniCPM-V-4.6-Thinking-BNB online free url in huggingface.co:
MiniCPM-V-4.6-Thinking-BNB is an open source model from GitHub that offers a free installation service, and any user can find MiniCPM-V-4.6-Thinking-BNB on GitHub to install. At the same time, huggingface.co provides the effect of MiniCPM-V-4.6-Thinking-BNB install, users can directly use MiniCPM-V-4.6-Thinking-BNB installed effect in huggingface.co for debugging and trial. It also supports api for free installation.
MiniCPM-V-4.6-Thinking-BNB install url in huggingface.co: