alt.freeweights.minicpm / MiniCPM-V-4.7-35B-A3B-FP8
From: openbmb <huggingface.co/openbmb>Newsgroups: alt.freeweights.minicpmSubject:

MiniCPM-V-4.7-35B-A3B-FP8

Date: 2026-11-15Commit: 4b7b053Signed: 2DC28CC7B26A283B ✓

Image text to text model with 35.2B parameters. Safetensors weights, 38.0 GB in all. Published by openbmb under Apache-2.0.

35.2B params38.0GBMiniCPM-V-4.7-35B-A3B-FP8safetensorspermissive
FactsParams35.2BSize38.0 GBFormatssafetensorsTaskimage text to textLicenseApache-2.0From sourcepermissive
$ fw get openbmb/MiniCPM-V-4.7-35B-A3B-FP8
# manifest sha256 84c2f7a5126a… · 38.0 GB · 13 files
$ fw verify ./MiniCPM-V-4.7-35B-A3B-FP8 openbmb/MiniCPM-V-4.7-35B-A3B-FP8
From sourceHosted (signed)openbmb/MiniCPM-V-4.7-35B-A3B-FP8Last check: 2026-11-15 04:37 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Quantized of MiniCPM-V-4.7-35B-A3B.

Works with

Overview

Size
38.0 GB
Weights
38.0 GB (safetensors)
Parameters
35.2B
Formats
safetensors
Task
image text to text
License
Apache-2.0 (permissive)
Files
13, each with a sha256
Publisher
openbmb
Added
2026-11-15
Section
alt.freeweights.minicpm
Lineage

Original release from the publisher.

Base model: openbmb/MiniCPM-V-4.7-35B-A3B

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 04:37 UTCpassed

Model card

From the publisher at commit 4b7b053. Shown as plain text with links; images open at the publisher.

This repository hosts the FP8 (compressed-tensors, llm-compressor) quantized version of MiniCPM-V 4.7 35B-A3B. For the original BF16 weights and the full model card, please refer to openbmb/MiniCPM-V-4.7-35B-A3B.

MiniCPM-V 4.7#

GitHub · On-device results · Evaluation · Examples · Usage · Model weights · DSpark

MiniCPM-V 4.7 is the latest model in the MiniCPM-V series, available in a 35B-A3B variant, with 35B-A3B being the first MoE model in the MiniCPM-V series. It builds on the family's single-image, multi-image, and video understanding capabilities, combining stronger foundation capabilities with efficient visual encoding and on-device inference. Notable features of MiniCPM-V 4.7 include:

  • 📱 The First Open-Source MoE Model with Lossless, Smooth On-Device Inference. With our Lookahead Expert Scheduling (LES) technique introduced alongside MiniCPM-V 4.7, combined with fine-grained layer-wise quantization and DSpark speculative sampling integration, MiniCPM-V 4.7 35B-A3B becomes the first open-source MoE model to run smoothly on-device without compromising performance, achieving a decoding speed of 13+ tokens/s with just 3 GB of memory on iPhone 17 Pro Max.
  • 🔥 A New Pareto Frontier in Performance and Efficiency. As model capabilities continue to advance, inference efficiency has become an important measure of a model's value. On resource-constrained devices, delivering the strongest possible capabilities within a limited resource budget calls for higher capability density. The 35B-A3B variant of MiniCPM-V 4.7 advances the performance–efficiency Pareto frontier for MLLMs. In Instruct mode, 35B-A3B achieves a higher overall score in less inference time than Qwen3.6 35B-A3B.
  • 🚀 Efficient Architecture. Based on the intra-ViT early compression technique from LLaVA-UHD v4, MiniCPM-V 4.7 compresses visual tokens early within the vision encoder, reducing computation in subsequent encoder layers. It also supports mixed 4x/16x visual token compression, allowing developers to balance visual detail and inference cost across tasks.
  • 💻 Broad Platform and Chip Support. MiniCPM-V 4.7 supports iOS, Android, and HarmonyOS, together with open-source on-device deployment support. It also provides day-0 support for chip platforms from Rockchip, Houmo, Intel, AMD, and Arm, extending deployment options across mobile and local computing devices.
  • 🛠️ Developer Friendly. MiniCPM-V 4.7 supports inference frameworks including SGLang, vLLM, llama.cpp, and Ollama, along with fine-tuning frameworks including SWIFT and LLaMA-Factory. It provides GGUF, BNB, AWQ, and GPTQ quantized variants and adds FP8 quantization support. We also release Self-Replay Fine-Tuning (SRFT), a fine-tuning approach that helps developers extend model capabilities at low cost while reducing forgetting of existing capabilities, making further customization easier.

Get started#

Model weights &nbsp;·&nbsp; Inference &nbsp;·&nbsp; Fine-tuning &nbsp;·&nbsp; Live demo &nbsp;·&nbsp; Local deployment &nbsp;·&nbsp; API &nbsp;·&nbsp; Cookbook

On-Device Capability and Efficiency#
Smooth On-Device MoE Inference without compromising performance#

An MoE model can have far more total parameters than it activates for a single token, but its on-device storage requirements are not limited to those active parameters. Different tokens can select different experts at different layers, while device memory often cannot hold all expert weights. Without a latency constraint, weights can remain on SSD or other storage, be loaded as needed, and be released after computation. This makes large-model inference possible, but repeated loading stalls can make decoding too slow for real-time interaction.

Another approach is to restrict the pool of available experts. For example, fixing an expert subset for an entire prompt can reduce loading frequency, but limits subsequent token-level routing to that subset, potentially excluding experts the model would otherwise select and reducing its capabilities. The central goal is therefore smooth inference without compromising performance: preserving model capability while delivering sufficient throughput under limited memory and bandwidth.

MiniCPM-V 4.7 35B-A3B addresses this challenge through three complementary techniques:

  • Lookahead Expert Scheduling (LES) uses cross-layer routing prediction to preload experts likely to be needed by the next layer. Among the experts selected by the actual router, it prioritizes those successfully prefetched and overlaps their computation with loading the remaining required experts. Predictions guide only prefetching and scheduling; computation still follows the model's original token-level routing, and required experts missed by the prediction are loaded and evaluated as usual.
  • Fine-grained layer-wise quantization reduces the storage footprint and memory traffic of expert weights while preserving model capability, making expert loading better suited to on-device memory and bandwidth constraints.
  • DSpark speculative sampling integration incorporates speculative sampling into the on-device inference process, working with expert scheduling and quantization to improve decoding efficiency.

Together, these techniques make MiniCPM-V 4.7 35B-A3B the first open-source MoE model to run smoothly on-device without compromising performance, achieving 13+ tokens/s on iPhone 17 Pro Max.

On-Device MoE Inference: Before and After Optimization

On-device MoE inference speed comparison, with optimization on the left and without optimization on the right

Evaluation#

Significantly Advancing the Performance–Efficiency Pareto Frontier

The 35B-A3B variant of MiniCPM-V 4.7 advances the performance–efficiency Pareto frontier. In Instruct mode, 35B-A3B reaches a higher overall score in less inference time than Qwen3.6 35B-A3B.

Performance versus inference time for MiniCPM-V 4.7 35B-A3B

Overall Performance (35B-A3B, Instruct)

Vision-Language

Vision-Language performance comparison for MiniCPM-V 4.7 35B-A3B in Instruct mode

Language

Language performance comparison for MiniCPM-V 4.7 35B-A3B in Instruct mode

Examples#

MiniCPM-V 4.7 can run on phones and tablets. The clips below are unedited screen recordings captured directly on the devices.

| 35B-A3B iPhone 17 Pro Max | 35B-A3B iPad M4

| Image: image | Image: image

Usages#
Inference with Transformers#

Click to expand the Transformers inference examples.

Installation#
pip install "transformers[torch]>=5.18.0" torchvision torchcodec

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:

  1. Replace torchcodec with PyAV — supports both image and video inference without CUDA version constraints:
   pip install "transformers[torch]>=5.18.0" torchvision av
  1. Pin the CUDA version when installing torch to match your environment (e.g. CUDA 12.8):
   pip install "transformers>=5.18.0" torchvision torchcodec --index-url https://download.pytorch.org/whl/cu128
Load the Model#
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 is recommended for faster inference and lower GPU memory usage,
# 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",
# )
Image Inference#
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,
    enable_thinking=False,
).to(model.device)

generated_ids = model.generate(
    **inputs,
    downsample_mode=downsample_mode,
    max_new_tokens=512,
    # recommended instruct-mode sampling parameters
    do_sample=True,
    temperature=0.7,
    top_p=0.95,
    top_k=100,
    min_p=0.0,
    presence_penalty=0,
    repetition_penalty=1.03,
)
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])
Video Inference#
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,
    enable_thinking=False,
).to(model.device)

generated_ids = model.generate(
    **inputs,
    downsample_mode=downsample_mode,
    max_new_tokens=2048,
    # recommended instruct-mode sampling parameters
    do_sample=True,
    temperature=0.7,
    top_p=0.95,
    top_k=100,
    min_p=0.0,
    presence_penalty=0,
    repetition_penalty=1.03,
)
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])
Advanced Parameters#

You can customize image/video processing by passing additional parameters to apply_chat_template:

ParameterDefaultApplies toDescription
downsample_mode"16x"Image & VideoVisual token downsampling. "16x" merges tokens for efficiency; "4x" keeps four times as many tokens for finer detail. Must also be passed to generate().
max_slice_nums9Image & VideoMaximum 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_frames128Video onlyMaximum number of main frames sampled from the video.
stack_frames1Video onlyTotal 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_idTrueImage & VideoWhether 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.

pip install "transformers[serving]>=5.18.0"

Start the server:

transformers serve openbmb/MiniCPM-V-4.7-35B-A3B --port 8000 --host 0.0.0.0

Send a request:

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?"}
      ]
    }]
  }'

Tool calling example:

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"]
      }
    }
  }]
}'

We recommend using the following set of sampling parameters for generation in instruct mode: temperature=0.7, top_p=0.95, top_k=100, min_p=0.0, presence_penalty=0, repetition_penalty=1.03.

Speculative decoding (DSpark)#

Click to show speculative decoding.

Speculative decoding (DSpark): we also release MiniCPM-V-4.7-35B-A3B-DSpark, a DSpark draft model trained for MiniCPM-V-4.7-35B-A3B.

Inference with OpenVINO™#

OpenVINO™ is an open-source toolkit for optimizing and deploying AI inference on Intel CPU/GPU/NPU platforms. OpenVINO provides day-0 support for MiniCPM-V-4.7 on Intel platforms with high-performance inference. See the OpenVINO™ Toolkit to get started. You can install and run the example with this notebook.

On-Device Deployment#

MiniCPM-V 4.7 supports deployment on iOS, Android, and HarmonyOS, with day-0 support for Rockchip, Houmo, Intel, AMD, and Arm chip platforms. See the edge deployment repository for the apps and source code.

Inference and Fine-Tuning#

For supported inference and training frameworks, see Supported Inference and Training Frameworks and API. The MiniCPM-V 4.7 Cookbook covers deployment, fine-tuning, and quantization workflows.

Task guides

Quantization

Acknowledgements#

Click to view acknowledgements.

We would like to thank the following projects:

Model Weights#

MiniCPM-V 4.7 is available in 35B-A3B and 1B variants. Each model is paired with its DSpark speculative decoding heads, available in BF16 and GGUF.

| Model | Description | Model weights | DSpark heads

| MiniCPM&#8209;V&nbsp;4.7 35B-A3B | The first open-source MoE model to run smoothly on-device without compromising performance, raising the bar for on-device performance. | 🤗&nbsp;&nbsp;ModelScope&nbsp;BF16

🤗&nbsp;&nbsp;ModelScope&nbsp;FP8

🤗&nbsp;&nbsp;ModelScope&nbsp;int4

🤗&nbsp;&nbsp;ModelScope&nbsp;AWQ

🤗&nbsp;&nbsp;ModelScope&nbsp;GPTQ

🤗&nbsp;&nbsp;ModelScope&nbsp;GGUF

| 🤗&nbsp;&nbsp;ModelScope&nbsp;BF16

🤗&nbsp;&nbsp;ModelScope&nbsp;GGUF

| MiniCPM&#8209;V&nbsp;4.7 1B | Combines stronger capabilities with extremely high efficiency, advancing the performance–efficiency Pareto frontier for multimodal large language models. | 🤗&nbsp;&nbsp;ModelScope&nbsp;BF16

🤗&nbsp;&nbsp;ModelScope&nbsp;int4

🤗&nbsp;&nbsp;ModelScope&nbsp;AWQ

🤗&nbsp;&nbsp;ModelScope&nbsp;GPTQ

🤗&nbsp;&nbsp;ModelScope&nbsp;GGUF

| 🤗&nbsp;&nbsp;ModelScope&nbsp;BF16

🤗&nbsp;&nbsp;ModelScope&nbsp;GGUF

The 1B int4 variant uses bitsandbytes; AWQ and GPTQ use W4A16 quantization. Quantized variants reduce memory usage; GGUF weights support CPU inference.

Also available on Ollama.

Files

13 files · 38.0 GBWeights 38.0 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 13 files with their sha256
FileSizesha256
.gitattributes1.57 KB34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930
README.md29.3 KB6c162ece9d7740db551d854d17b902915426f340827be4e86f7bcbb7c1a60f87
chat_template.jinja7.25 KB49c37bcc86c7f7f20ed2ebf79e9f872be41ba2b5f9d0d51e6712cc038ef51d6c
config.json40.2 KBd61a93c2413b3b9f94ef556e8ec6231e98cac9277b7a573e4e7c02eb31a5cc7a
generation_config.json188 Bf00d28bbb0d79e2b4083cf63f6b363d6447f817cafc0bc86446cf162f97f4409
model-00001-of-00002.safetensors20.0 GBec773738bab5c05f9550db01c8e618f7d5a6b52bbb308a0038927e3fe115d5fe
model-00002-of-00002.safetensors18.0 GBab9839a60f2b36de53a9a14fa491e0b37a1db57f66645cf778855e5a4edcd7cd
model.safetensors.index.json6.79 MBafb9b9745d9ae93ca1cc165d6434878cf9363c701603975c2a932ffe70866061
preprocessor_config.json148 Bc64289d04f36e48d9d059e3a0069f54062b2ef6044a807adb448b98449cb54de
processor_config.json3 Bca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356
recipe.yaml381 B0a96bedc8bf4e6d07c19245aa450ef37ef8f2f073d1153a205876536c6c83385
tokenizer.json20.0 MBe4608c5d7b3f4f30ba83be16a82cdac856b2e7191d40f0a08cbacc76c2a926ee
tokenizer_config.json1.62 KBb1a4200357c75c7357995aa06f2dbb49c72160816d7ce3f7fc7cdcbb70123f3c
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
4b7b053753 pinned now2026-11-15 04:37 UTC13 files · 38.0 GB

Use it

$ fw get openbmb/MiniCPM-V-4.7-35B-A3B-FP8
# manifest sha256 84c2f7a5126a… · 38.0 GB · 13 files
$ fw verify ./MiniCPM-V-4.7-35B-A3B-FP8 openbmb/MiniCPM-V-4.7-35B-A3B-FP8
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/openbmb/MiniCPM-V-4.7-35B-A3B-FP8.json --dir ./MiniCPM-V-4.7-35B-A3B-FP8 $ python3 fw.py verify ./MiniCPM-V-4.7-35B-A3B-FP8 ./openbmb__MiniCPM-V-4.7-35B-A3B-FP8.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download openbmb/MiniCPM-V-4.7-35B-A3B-FP8 --revision 4b7b0537539b0ba6216bc4c4d0247d65956d40e2 --local-dir ./MiniCPM-V-4.7-35B-A3B-FP8
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForImageTextToText, AutoProcessor processor = AutoProcessor.from_pretrained("openbmb/MiniCPM-V-4.7-35B-A3B-FP8", revision="4b7b0537539b0ba6216bc4c4d0247d65956d40e2") model = AutoModelForImageTextToText.from_pretrained("openbmb/MiniCPM-V-4.7-35B-A3B-FP8", revision="4b7b0537539b0ba6216bc4c4d0247d65956d40e2", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve openbmb/MiniCPM-V-4.7-35B-A3B-FP8 --revision 4b7b0537539b0ba6216bc4c4d0247d65956d40e2

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
6c162ece9d7740db551d854d17b902915426f340827be4e86f7bcbb7c1a60f87
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: openbmb <huggingface.co/openbmb>Newsgroups: alt.freeweights.minicpmSubject: MiniCPM-V-4.7-35B-A3B-FP8Date: 2026-11-15Commit: 4b7b053Signed: 2DC28CC7B26A283B ✓
Upstream
openbmb/MiniCPM-V-4.7-35B-A3B-FP8
Pinned commit
4b7b0537539b0ba6216bc4c4d0247d65956d40e2
Manifest
MiniCPM-V-4.7-35B-A3B-FP8.json · .minisig
Manifest sha256
84c2f7a5126a5fb494689fb190724b18892bc04ead0d83caa8492cd247e60555
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 04:37 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/openbmb/MiniCPM-V-4.7-35B-A3B-FP8.json $ curl -O https://freeweights.allternit.com/manifests/openbmb/MiniCPM-V-4.7-35B-A3B-FP8.json.minisig $ minisign -Vm MiniCPM-V-4.7-35B-A3B-FP8.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

openbmb/MiniCPM-V-4.7-35B-A3B · this model is a quantization of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download openbmb/MiniCPM-V-4.7-35B-A3B-FP8
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. MiniCPM-V-4.7-35B-A3B-FP8.json. Provenance. Takedown history: none.
From: openbmb <huggingface.co/openbmb>Subject: AgentCPM-Explore-GGUF
From: openbmb <huggingface.co/openbmb>Subject: AgentCPM-Report
From: openbmb <huggingface.co/openbmb>Subject: AgentCPM-Report-GGUF
From: openbmb <huggingface.co/openbmb>Subject: BitCPM-CANN-0.5B-gguf
From: openbmb <huggingface.co/openbmb>Subject: BitCPM-CANN-1B-gguf
From: openbmb <huggingface.co/openbmb>Subject: BitCPM-CANN-3B-gguf