openbmb/MiniCPM-V-4.7-35B-A3B
摘要
OpenBMB发布了MiniCPM-V 4.7的35B-A3B版本,这是MiniCPM-V系列的首个MoE模型,借助Lookahead Expert Scheduling等技术成为首个能在设备端流畅运行且不损失性能的开源MoE多模态模型,同时在性能与效率上达到新的帕累托前沿。
查看缓存全文
缓存时间: 2026/10/12 19:03
openbmb/MiniCPM-V-4.7-35B-A3B · Hugging Face
来源:https://huggingface.co/openbmb/MiniCPM-V-4.7-35B-A3B
端侧表现 · 评测结果 · 示例 · 使用方式 · 模型权重
MiniCPM-V 4.7 是 MiniCPM-V 系列的最新模型,提供 35B-A3B 变体,其中 35B-A3B 是 MiniCPM-V 系列中首个 MoE 模型。它在该系列已有的单图、多图和视频理解能力基础上,结合了更强的基础能力、高效的视觉编码以及端侧推理。MiniCPM-V 4.7 的主要特性包括:
-
📱 首个实现无损、流畅端侧推理的开源 MoE 模型。 随 MiniCPM-V 4.7 一同发布的 Lookahead Expert Scheduling (LES)(https://github.com/tc-mb/llama.cpp-omni/blob/master/docs/les/lookahead-expert-scheduling.md)技术,结合细粒度逐层量化和 DSpark 投机采样集成,使 MiniCPM-V 4.7 35B-A3B 成为首个在端侧流畅运行且不牺牲性能的开源 MoE 模型,在 iPhone 17 Pro Max 上达到 13+ tokens/s 的解码速度。
-
🔥 性能与效率的新 Pareto 前沿。 随着模型能力不断提升,推理效率已成为衡量模型价值的重要指标。在资源受限的设备上,要在有限的资源预算内提供尽可能强的能力,就需要更高的能力密度。MiniCPM-V 4.7 的 35B-A3B 变体推动了多模态大语言模型(MLLM)的性能-效率 Pareto 前沿。在 Instruct 模式下,35B-A3B 以更少的推理时间达到了比 Qwen3.6 35B-A3B 更高的综合得分。
-
🚀 高效架构。 基于 LLaVA-UHD v4 的 ViT 内部早期压缩技术,MiniCPM-V 4.7 在视觉编码器内部提前压缩视觉 token,减少后续编码层的计算量。它还支持混合 4x/16x 视觉 token 压缩,允许开发者在不同任务间平衡视觉细节与推理开销。
-
💻 广泛的平台和芯片支持。 MiniCPM-V 4.7 支持 iOS、Android 和 HarmonyOS,并提供开源的端侧部署支持。它还为 Rockchip、厚膜、Intel、AMD 和 Arm 的芯片平台提供 day-0 支持,扩展了移动端和本地计算设备的部署选项。
-
🛠️ 开发者友好。 MiniCPM-V 4.7 支持 推理框架,包括 SGLang、vLLM、llama.cpp 和 Ollama,以及 微调框架,包括 SWIFT 和 LLaMA-Factory。它提供 GGUF、BNB、AWQ 和 GPTQ 量化变体,并新增了 FP8 量化支持。我们还发布了 Self-Replay Fine-Tuning,这是一种帮助开发者以低成本扩展模型能力同时减少对已有能力遗忘的微调方法,使进一步定制更加容易。
快速上手
模型权重 · 推理 · 微调 · 在线演示 · 本地部署 · API · Cookbook
端侧能力与效率
流畅的端侧 MoE 推理,不牺牲性能
MoE 模型的总参数量可能远大于单个 token 激活的参数量,但其端侧存储需求并不仅限于活跃参数。不同的 token 可能在不同层选择不同的专家,而设备内存往往无法容纳所有专家权重。在没有延迟约束的情况下,权重可以保留在 SSD 或其他存储介质上,按需加载,计算完成后释放。这使得大模型推理成为可能,但反复的加载停顿可能导致解码速度过慢,无法满足实时交互的需求。
另一种方法是限制可用专家的范围。例如,为整个 prompt 固定一个专家子集可以减少加载频率,但会将后续的 token 级别路由限制在该子集内,可能排除模型本应选择的专家,从而降低其能力。因此,核心目标是在不牺牲性能的前提下实现流畅推理:在有限的内存和带宽条件下保持模型能力的同时提供足够的吞吐量。
MiniCPM-V 4.7 35B-A3B 通过三种互补技术来应对这一挑战:
-
Lookahead Expert Scheduling (LES)(https://github.com/tc-mb/llama.cpp-omni/blob/master/docs/les/lookahead-expert-scheduling.md)使用跨层路由预测来预加载下一层可能需要的专家。在实际路由器选择的专家中,优先使用成功预取的专家,并将其计算与加载剩余所需专家的操作重叠执行。预测仅用于指导预取和调度;计算仍然遵循模型原始的 token 级别路由,预测遗漏的所需专家仍会照常加载和评估。
-
细粒度逐层量化在保持模型能力的同时减少专家权重的存储占用和内存流量,使专家加载更好地适应端侧内存和带宽约束。
-
DSpark 投机采样集成将投机采样纳入端侧推理流程,与专家调度和量化协同工作,提升解码效率。
这三种技术共同使 MiniCPM-V 4.7 35B-A3B 成为首个在端侧流畅运行且不牺牲性能的开源 MoE 模型,在 iPhone 17 Pro Max 上达到 13+ tokens/s 的速度。
端侧 MoE 推理:优化前后对比
端侧 MoE 推理速度对比,左侧为优化后,右侧为优化前(https://raw.githubusercontent.com/OpenBMB/MiniCPM-o/main/assets/minicpmv4.7/moe_speed_comparison_en.gif)
评测结果
显著推进性能-效率 Pareto 前沿
MiniCPM-V 4.7 的 35B-A3B 变体推动了性能-效率 Pareto 前沿。在 Instruct 模式下,35B-A3B 以更少的推理时间达到了比 Qwen3.6 35B-A3B 更高的综合得分。
MiniCPM-V 4.7 35B-A3B 性能与推理时间的关系(https://raw.githubusercontent.com/OpenBMB/MiniCPM-o/main/assets/minicpmv4.7/performance_efficiency_frontier.png)
综合性能(35B-A3B,Instruct)
视觉-语言
MiniCPM-V 4.7 35B-A3B 在 Instruct 模式下的视觉-语言性能对比(https://raw.githubusercontent.com/OpenBMB/MiniCPM-o/main/assets/minicpmv4.7/overall_performance_35ba3b_instruct.png)
语言
MiniCPM-V 4.7 35B-A3B 在 Instruct 模式下的语言性能对比(https://raw.githubusercontent.com/OpenBMB/MiniCPM-o/main/assets/minicpmv4.7/overall_performance_35ba3b_language.png)
示例
MiniCPM-V 4.7 可以在手机和平板电脑上运行。以下片段是在设备上直接录制的未经编辑的屏幕录像。
使用方式
使用 Transformers 进行推理
点击展开 Transformers 推理示例。
安装
pip install "transformers[torch]>=5.18.0" torchvision torchcodec
关于 CUDA 兼容性的说明:
torchcodec(用于视频解码)可能与某些 CUDA 版本存在兼容性问题。例如,torch>=2.11默认捆绑 CUDA 13.1,而使用 CUDA 12.x 的环境可能会遇到诸如RuntimeError: Could not load libtorchcodec的错误。两种解决方法:
- 用
PyAV替代torchcodec——支持图像和视频推理,且不受 CUDA 版本限制:pip install "transformers[torch]>=5.18.0" torchvision av
- 安装 torch 时固定 CUDA 版本以匹配您的环境(例如 CUDA 12.8):
pip install "transformers>=5.18.0" torchvision torchcodec --index-url https://download.pytorch.org/whl/cu128
加载模型
import torch
from transformers import AutoModelForImageTextToText, AutoProcessor
model_id = "openbmb/MiniCPM-V-4.7-35B-A3B"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(
model_id,
torch_dtype="auto",
device_map="auto"
)
# 建议使用 Flash Attention 2 以获得更快的推理速度和更低的 GPU 显存占用,
# 尤其在多图和视频场景中。
# 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" # 使用 `downsample_mode="4x"` 可保留更多细节
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,
enable_thinking=False,
).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 scene changes."},
],
}
]
downsample_mode = "16x" # 使用 `downsample_mode="4x"` 可保留更多细节
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,
enable_thinking=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 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])
高级参数
您可以通过向 apply_chat_template 传递额外参数来自定义图像/视频处理:
| 参数 | 默认值 | 适用范围 | 描述 |
|---|---|---|---|
downsample_mode | "16x" | 图像和视频 | 视觉 token 下采样。"16x" 合并 token 以提高效率;"4x" 保留四倍的 token 以获得更多细节。必须同时传递给 generate()。 |
max_slice_nums | 9 | 图像和视频 | 切分高分辨率图像时的最大切片数。较高的值可为大图像保留更多细节。推荐:图像使用 36,视频使用 1。 |
max_num_frames | 128 | 仅视频 | 从视频中采样的主帧最大数量。 |
stack_frames | 1 | 仅视频 | 每秒的总采样点数。1 = 仅主帧(不堆叠)。N(N>1)= 每秒 1 个主帧 + N-1 个子帧;子帧会被合成为网格图像,与主帧交替排列。推荐:3 或 5。 |
use_image_id | True | 图像和视频 | 是否在每个图像/帧占位符前添加 N 个标签。推荐:图像使用 True,视频使用 False。 |
注意:
downsample_mode必须同时传递给apply_chat_template(用于正确的占位符计数)和generate(用于视觉编码器)。所有其他参数只需传递给apply_chat_template。
使用 transformers serve 提供服务
Hugging Face Transformers 包含一个轻量级的 OpenAI 兼容服务器,适用于快速测试和中等负载部署。
pip install "transformers[serving]>=5.18.0"
启动服务器:
transformers serve openbmb/MiniCPM-V-4.7-35B-A3B --port 8000 --host 0.0.0.0
发送请求:
curl -s http://localhost:8000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "openbmb/MiniCPM-V-4.7-35B-A3B",
"messages": [{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://huggingface.co/datasets/openbmb/DemoCase/resolve/main/refract.png"}},
{"type": "text", "text": "What causes this phenomenon?"}
]
}]
}'
工具调用示例:
curl -s http://localhost:8000/v1/chat/completions -H 'Content-Type: application/json' -d '{
"model": "openbmb/MiniCPM-V-4.7-35B-A3B",
"messages": [{"role": "user", "content": [
{"type": "text", "text": "the weather of Beijing"}
]}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a given location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"}
},
"required": ["location"]
}
}
}]
}'
投机解码(DSpark)
点击展开投机解码内容。
投机解码(DSpark):我们还发布了 MiniCPM-V-4.7-35B-A3B-DSpark,这是一个为 MiniCPM-V-4.7-35B-A3B 训练的 DSpark 草稿模型。
使用 OpenVINO™ 推理
OpenVINO™ 是一个用于在 Intel CPU/GPU/NPU 平台上优化和部署 AI 推理的开源工具包。
OpenVINO 为 Intel 平台上的 MiniCPM-V-4.7 提供 day-0 支持和高性能推理。请参阅 OpenVINO™ Toolkit 开始使用。
您可以使用此 notebook(链接待定)安装并运行示例。
端侧部署
MiniCPM-V 4.7 支持部署……
相似文章
openbmb/MiniCPM-V-4.7-1B
MiniCPM-V 4.7 1B 是 MiniCPM-V 系列的最新模型,主打性能与效率的新帕累托前沿,采用早期视觉 token 压缩架构,支持 iOS/Android/HarmonyOS 及多家芯片平台的端侧部署,并提供 FP8 量化与 Self-Replay 微调方法。
openbmb/MiniCPM-V-4.7-35B-A3B-gguf
MiniCPM-V 4.7 35B-A3B 是 MiniCPM-V 系列中的首个 MoE 模型,现已以 GGUF 量化格式面向 llama.cpp 发布,在 iPhone 17 Pro Max 上仅需 3GB 内存即可实现 13+ tokens/s 的无损端侧多模态推理,并在性能-效率上超越 Qwen3.6 35B-A3B。
@FeitengLi: OpenBMB 开源 MiniCPM-V 4.6 了,1.3B 参数(SigLIP2-400M + Qwen3.5-0.8B),262k 上下文,视觉编码 FLOPs 比上一代少 50%+。 同任务 token 成本比 Qwen3.5-0…
OpenBMB releases MiniCPM-V 4.6, a 1.3B-parameter multimodal LLM with 262k context and significantly reduced visual encoding FLOPs, achieving strong benchmark performance and broad inference framework support.
openbmb/MiniCPM5-2B-GGUF
发布 MiniCPM5-2B-GGUF,这是一个针对设备端部署优化的20亿参数AI模型,使用开源训练数据集在同类产品中达到了最先进的性能水平。
一个能在 iPhone 上运行的 350 亿参数视觉模型?OpenBMB 刚刚发布了 MiniCPM-V 4.7
OpenBMB 开源发布了 MiniCPM-V 4.7 35B-A3B 视觉语言模型,可在 iPhone/iPad 上以每秒 13–17 个词元的速度运行,并引入 LES(前瞻专家调度)技术加速 MoE(混合专家)推理,同时更新了在 34 项多模态基准测试中的表现。