alt.freeweights.minicpm / MiniCPM-V-4_5-gguf
From: openbmb <huggingface.co/openbmb>Newsgroups: alt.freeweights.minicpmSubject:

MiniCPM-V-4_5-gguf

Date: 2026-11-15Commit: 6c477dbSigned: 2DC28CC7B26A283B ✓

Image text to text model. Gguf weights, 136 GB in all. Published by openbmb under Apache-2.0.

minicpm136GBMiniCPM-V-4_5-ggufggufpermissive
FactsParamsnot statedSize136 GBFormatsggufTaskimage text to textLicenseApache-2.0From sourcepermissive
$ fw get openbmb/MiniCPM-V-4_5-gguf
# manifest sha256 b113d0fb0383… · 136 GB · 22 files
$ fw verify ./MiniCPM-V-4_5-gguf openbmb/MiniCPM-V-4_5-gguf
From sourceHosted (signed)openbmb/MiniCPM-V-4_5-ggufLast check: 2026-11-15 04:39 UTC

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

Quantized of MiniCPM-V-4_5.

Works with

Convert with

Overview

Size
136 GB
Weights
4.77 GB (smallest of 19 GGUF variants)
Parameters
not stated
Formats
gguf
Task
image text to text
License
Apache-2.0 (permissive)
Files
22, 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_5

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:39 UTCpassed

Model card

From the publisher at commit 6c477db. Shown as plain text with links; images open at the publisher.

A GPT-4o Level MLLM for Single Image, Multi Image and Video Understanding on Your Phone#

GitHub | MiniCPM Wiki(Chinese) | Demo

MiniCPM-V 4.5#

MiniCPM-V 4.5 is the latest and most capable model in the MiniCPM-V series. The model is built on Qwen3-8B and SigLIP2-400M with a total of 8B parameters. It exhibits a significant performance improvement over previous MiniCPM-V and MiniCPM-o models, and introduces new useful features. Notable features of MiniCPM-V 4.5 include:

  • 🔥 State-of-the-art Vision-Language Capability. MiniCPM-V 4.5 achieves an average score of 77.2 on OpenCompass, a comprehensive evaluation of 8 popular benchmarks. With only 8B parameters, it surpasses widely used proprietary models like GPT-4o-latest, Gemini-2.0 Pro, and strong open-source models like Qwen2.5-VL 72B for vision-language capabilities, making it the most performant MLLM under 30B parameters.
  • 🎬 Efficient High Refresh Rate and Long Video Understanding. Powered by a new unified 3D-Resampler over images and videos, MiniCPM-V 4.5 can now achieve 96x compression rate for video tokens, where 6 448x448 video frames can be jointly compressed into 64 video tokens (normally 1,536 tokens for most MLLMs). This means that the model can percieve significantly more video frames without increasing the LLM inference cost. This brings state-of-the-art high refresh rate (up to 10FPS) video understanding and long video understanding capabilities on Video-MME, LVBench, MLVU, MotionBench, FavorBench, etc., efficiently.
  • ⚙️ Controllable Hybrid Fast/Deep Thinking. MiniCPM-V 4.5 supports both fast thinking for efficient frequent usage with competitive performance, and deep thinking for more complex problem solving. To cover efficiency and performance trade-offs in different user scenarios, this fast/deep thinking mode can be switched in a highly controlled fashion.
  • 💪 Strong OCR, Document Parsing and Others.

Based on LLaVA-UHD architecture, MiniCPM-V 4.5 can process high-resolution images with any aspect ratio and up to 1.8 million pixels (e.g., 1344x1344), using 4x less visual tokens than most MLLMs. The model achieves leading performance on OCRBench, surpassing proprietary models such as GPT-4o-latest and Gemini 2.5. It also achieves state-of-the-art performance for PDF document parsing capability on OmniDocBench among general MLLMs. Based on the the latest RLAIF-V and VisCPM techniques, it features trustworthy behaviors, outperforming GPT-4o-latest on MMHal-Bench, and supports multilingual capabilities in more than 30 languages.

  • 💫 Easy Usage.

MiniCPM-V 4.5 can be easily used in various ways: (1) llama.cpp and ollama support for efficient CPU inference on local devices, (2) int4, GGUF and AWQ format quantized models in 16 sizes, (3) SGLang and vLLM support for high-throughput and memory-efficient inference, (4) fine-tuning on new domains and tasks with Transformers and LLaMA-Factory, (5) quick local WebUI demo, (6) optimized local iOS app on iPhone and iPad, and (7) online web demo on server. See our Cookbook for full usages!

Evaluation#

Image: image

Image: image

Examples#

https://youtu.be/SCtimvC3Qfk

Image: en_case1 Image: en_case2 Image: en_case3

We deploy MiniCPM-V 4.5 on iPad M4 with iOS demo. The demo video is the raw screen recording without edition.

Image: image Image: image

Image: image Image: image

Usage#

import torch
from PIL import Image
from transformers import AutoModel, AutoTokenizer

torch.manual_seed(100)

model = AutoModel.from_pretrained('openbmb/MiniCPM-V-4_5', trust_remote_code=True, # or openbmb/MiniCPM-o-2_6
    attn_implementation='sdpa', torch_dtype=torch.bfloat16) # sdpa or flash_attention_2, no eager
model = model.eval().cuda()
tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-V-4_5', trust_remote_code=True) # or openbmb/MiniCPM-o-2_6

image = Image.open('./assets/minicpmo2_6/show_demo.jpg').convert('RGB')

enable_thinking=False # If `enable_thinking=True`, the long-thinking mode is enabled.

# First round chat 
question = "What is the landform in the picture?"
msgs = [{'role': 'user', 'content': [image, question]}]

answer = model.chat(
    msgs=msgs,
    tokenizer=tokenizer,
    enable_thinking=enable_thinking
)
print(answer)

# Second round chat, pass history context of multi-turn conversation
msgs.append({"role": "assistant", "content": [answer]})
msgs.append({"role": "user", "content": ["What should I pay attention to when traveling here?"]})

answer = model.chat(
    msgs=msgs,
    tokenizer=tokenizer
)
print(answer)

You will get the following output:

# round1
The landform in the picture is karst topography. Karst landscapes are characterized by distinctive, jagged limestone hills or mountains with steep, irregular peaks and deep valleys—exactly what you see here These unique formations result from the dissolution of soluble rocks like limestone over millions of years through water erosion.

This scene closely resembles the famous karst landscape of Guilin and Yangshuo in China’s Guangxi Province. The area features dramatic, pointed limestone peaks rising dramatically above serene rivers and lush green forests, creating a breathtaking and iconic natural beauty that attracts millions of visitors each year for its picturesque views.

# round2
When traveling to a karst landscape like this, here are some important tips:

1. Wear comfortable shoes: The terrain can be uneven and hilly.
2. Bring water and snacks for energy during hikes or boat rides.
3. Protect yourself from the sun with sunscreen, hats, and sunglasses—especially since you’ll likely spend time outdoors exploring scenic spots.
4. Respect local customs and nature regulations by not littering or disturbing wildlife.

By following these guidelines, you'll have a safe and enjoyable trip while appreciating the stunning natural beauty of places such as Guilin’s karst mountains.
Chat with Video#

Click to view Python code running MiniCPM-V-4_5 by with video input and 3D-Resampler.

## The 3d-resampler compresses multiple frames into 64 tokens by introducing temporal_ids. 
# To achieve this, you need to organize your video data into two corresponding sequences: 
#   frames: List[Image]
#   temporal_ids: List[List[Int]].

import torch
from PIL import Image
from transformers import AutoModel, AutoTokenizer
from decord import VideoReader, cpu    # pip install decord
from scipy.spatial import cKDTree
import numpy as np
import math

model = AutoModel.from_pretrained('openbmb/MiniCPM-V-4_5', trust_remote_code=True,  # or openbmb/MiniCPM-o-2_6
    attn_implementation='sdpa', torch_dtype=torch.bfloat16) # sdpa or flash_attention_2, no eager
model = model.eval().cuda()
tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-V-4_5', trust_remote_code=True)  # or openbmb/MiniCPM-o-2_6

MAX_NUM_FRAMES=180 # Indicates the maximum number of frames received after the videos are packed. The actual maximum number of valid frames is MAX_NUM_FRAMES * MAX_NUM_PACKING.
MAX_NUM_PACKING=3  # indicates the maximum packing number of video frames. valid range: 1-6
TIME_SCALE = 0.1 

def map_to_nearest_scale(values, scale):
    tree = cKDTree(np.asarray(scale)[:, None])
    _, indices = tree.query(np.asarray(values)[:, None])
    return np.asarray(scale)[indices]


def group_array(arr, size):
    return [arr[i:i+size] for i in range(0, len(arr), size)]

def encode_video(video_path, choose_fps=3, force_packing=None):
    def uniform_sample(l, n):
        gap = len(l) / n
        idxs = [int(i * gap + gap / 2) for i in range(n)]
        return [l[i] for i in idxs]
    vr = VideoReader(video_path, ctx=cpu(0))
    fps = vr.get_avg_fps()
    video_duration = len(vr) / fps
        
    if choose_fps * int(video_duration) <= MAX_NUM_FRAMES:
        packing_nums = 1
        choose_frames = round(min(choose_fps, round(fps)) * min(MAX_NUM_FRAMES, video_duration))
        
    else:
        packing_nums = math.ceil(video_duration * choose_fps / MAX_NUM_FRAMES)
        if packing_nums <= MAX_NUM_PACKING:
            choose_frames = round(video_duration * choose_fps)
        else:
            choose_frames = round(MAX_NUM_FRAMES * MAX_NUM_PACKING)
            packing_nums = MAX_NUM_PACKING

    frame_idx = [i for i in range(0, len(vr))]      
    frame_idx =  np.array(uniform_sample(frame_idx, choose_frames))

    if force_packing:
        packing_nums = min(force_packing, MAX_NUM_PACKING)
    
    print(video_path, ' duration:', video_duration)
    print(f'get video frames={len(frame_idx)}, packing_nums={packing_nums}')
    
    frames = vr.get_batch(frame_idx).asnumpy()

    frame_idx_ts = frame_idx / fps
    scale = np.arange(0, video_duration, TIME_SCALE)

    frame_ts_id = map_to_nearest_scale(frame_idx_ts, scale) / TIME_SCALE
    frame_ts_id = frame_ts_id.astype(np.int32)

    assert len(frames) == len(frame_ts_id)

    frames = [Image.fromarray(v.astype('uint8')).convert('RGB') for v in frames]
    frame_ts_id_group = group_array(frame_ts_id, packing_nums)
    
    return frames, frame_ts_id_group


video_path="video_test.mp4"
fps = 5 # fps for video
force_packing = None # You can set force_packing to ensure that 3D packing is forcibly enabled; otherwise, encode_video will dynamically set the packing quantity based on the duration.
frames, frame_ts_id_group = encode_video(video_path, fps, force_packing=force_packing)

question = "Describe the video"
msgs = [
    {'role': 'user', 'content': frames + [question]}, 
]


answer = model.chat(
    msgs=msgs,
    tokenizer=tokenizer,
    use_image_id=False,
    max_slice_nums=1,
    temporal_ids=frame_ts_id_group
)
print(answer)

License#

Model License#
  • The code in this repo is released under the Apache-2.0 License.
  • The usage of MiniCPM-V series model weights must strictly follow MiniCPM Model License.md.
  • The models and weights of MiniCPM are completely free for academic research. After filling out a "questionnaire" for registration, MiniCPM-V 4.5 weights are also available for free commercial use.
Statement#
  • As an LMM, MiniCPM-V 4.5 generates contents by learning a large amount of multimodal corpora, but it cannot comprehend, express personal opinions or make value judgement. Anything generated by MiniCPM-V 4.5 does not represent the views and positions of the model developers
  • We will not be liable for any problems arising from the use of the MinCPM-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.

Key Techniques and Other Multimodal Projects#

👏 Welcome to explore key techniques of MiniCPM-V 4.5 and other multimodal projects of our team:

VisCPM | RLHF-V | LLaVA-UHD | RLAIF-V

Citation#

If you find our work helpful, please consider citing our papers 📝 and liking this project ❤️!

@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={Nat Commun 16, 5509 (2025)},
  year={2025}
}

Files

22 files · 136 GBWeights 4.77 GB (smallest of 19 GGUF variants). Sizes and sha256 from the signed manifest.
Show all 22 files with their sha256
FileSizesha256
.gitattributes1.56 KBe08cf896faa882fdfbf869edf3ac5e9cfaa850c0ff3b79cf4a29e394bbe2572a
MiniCPM-V-4_5-F16.gguf16.4 GBc39be9a5e89a35ead36ae9ac1ccb3b0a5ba5f3c416251207c68429eec3d23edd
MiniCPM-V-4_5-Q4_0.gguf4.77 GBc4b08147959cdabd4f1d46abd098b4d2e93d60466c4e67ccbf687b4a638044f2
MiniCPM-V-4_5-Q4_K_M.gguf5.03 GBc1c3c33100b15b4caf7319acce4e23c0eb0ce1cbd12f70e8d24f05aa67b7512f
MiniCPM-V-4_5-Q5_1.gguf6.19 GBfadc7150653d5faf7f1f00948867484cdd14d1beb15e20143ef97b50fdb81628
MiniCPM-V-4_5-Q5_K_M.gguf5.85 GB25ef74e858803818d474f81835ce58309df3dbfa32a8ca6e01176e981bcd1614
MiniCPM-V-4_5-Q5_K_S.gguf5.72 GBbe1974564d416672b816612df70701923921c9de80076addc05a0a934e410c85
MiniCPM-V-4_5-Q6_K.gguf6.72 GBcc3b1fc458dd03f286ef92e27f041a7f8c9f086120a3b38ed45368cf06036f23
MiniCPM-V-4_5-Q8_0.gguf8.71 GBf03f46a6be5b7cb31e1ffbb46cfdf6e832a81107a2678e5e873993985c836760
Model-8.2B-F16.gguf16.4 GBc39be9a5e89a35ead36ae9ac1ccb3b0a5ba5f3c416251207c68429eec3d23edd
README.md14.5 KB76d9432a61e83db4fb0a217646c75d967fef15c86a32ece3bbf8a3a55fe06330
ggml-model-Q4_0.gguf4.77 GBc4b08147959cdabd4f1d46abd098b4d2e93d60466c4e67ccbf687b4a638044f2
ggml-model-Q4_1.gguf5.25 GB51a968ab3c3bcedb0ec800c2928d3727af1be9934cd1ab550b853fac149786f7
ggml-model-Q4_K_M.gguf5.03 GBc1c3c33100b15b4caf7319acce4e23c0eb0ce1cbd12f70e8d24f05aa67b7512f
ggml-model-Q4_K_S.gguf4.80 GB417b50d7bda7d6b297f7cf3a0f2239c031032c07fcc13e00f948f9e4d30069ca
ggml-model-Q5_0.gguf5.72 GBf2682d797b19d2b35cd35a2d8feac029b30fe3d8cfa4e93e75714c30ff86d117
ggml-model-Q5_1.gguf6.19 GBfadc7150653d5faf7f1f00948867484cdd14d1beb15e20143ef97b50fdb81628
ggml-model-Q5_K_M.gguf5.85 GB25ef74e858803818d474f81835ce58309df3dbfa32a8ca6e01176e981bcd1614
ggml-model-Q5_K_S.gguf5.72 GBbe1974564d416672b816612df70701923921c9de80076addc05a0a934e410c85
ggml-model-Q6_K.gguf6.72 GBcc3b1fc458dd03f286ef92e27f041a7f8c9f086120a3b38ed45368cf06036f23
ggml-model-Q8_0.gguf8.71 GBf03f46a6be5b7cb31e1ffbb46cfdf6e832a81107a2678e5e873993985c836760
mmproj-model-f16.gguf1.10 GB7a7225a32e8d453aaa3d22d8c579b5bf833c253f784cdb05c99c9a76fd616df8
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
6c477db4ba pinned now2026-11-15 04:39 UTC22 files · 136 GB

Use it

$ fw get openbmb/MiniCPM-V-4_5-gguf
# manifest sha256 b113d0fb0383… · 136 GB · 22 files
$ fw verify ./MiniCPM-V-4_5-gguf openbmb/MiniCPM-V-4_5-gguf
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_5-gguf.json --dir ./MiniCPM-V-4_5-gguf $ python3 fw.py verify ./MiniCPM-V-4_5-gguf ./openbmb__MiniCPM-V-4_5-gguf.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download openbmb/MiniCPM-V-4_5-gguf --revision 6c477db4ba2566ce10614792e91aa0cb45b061f3 --local-dir ./MiniCPM-V-4_5-gguf
llama.cppDownload one GGUF variant (MiniCPM-V-4_5-Q4_0, 4.77 GB), then serve it.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download openbmb/MiniCPM-V-4_5-gguf --include "MiniCPM-V-4_5-Q4_0*" --local-dir ./MiniCPM-V-4_5-gguf $ llama-server -m ./MiniCPM-V-4_5-gguf/MiniCPM-V-4_5-Q4_0.gguf
OllamaMake an Ollama model from the downloaded file.
$ printf 'FROM ./MiniCPM-V-4_5-gguf/MiniCPM-V-4_5-Q4_0.gguf\n' > Modelfile $ ollama create minicpm-v-4-5-gguf -f Modelfile

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
Inherited from the base model openbmb/MiniCPM-V-4_5: the strictest license along the lineage applies. 2026-11-15
Text in
README.md
Text sha256
76d9432a61e83db4fb0a217646c75d967fef15c86a32ece3bbf8a3a55fe06330
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_5-ggufDate: 2026-11-15Commit: 6c477dbSigned: 2DC28CC7B26A283B ✓
Upstream
openbmb/MiniCPM-V-4_5-gguf
Pinned commit
6c477db4ba2566ce10614792e91aa0cb45b061f3
Manifest
MiniCPM-V-4_5-gguf.json · .minisig
Manifest sha256
b113d0fb03832ad03c78d11c53453fdda842db10a18888f9236aa8d75cfb05ef
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 04:39 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/openbmb/MiniCPM-V-4_5-gguf.json $ curl -O https://freeweights.allternit.com/manifests/openbmb/MiniCPM-V-4_5-gguf.json.minisig $ minisign -Vm MiniCPM-V-4_5-gguf.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_5 · 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_5-gguf
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_5-gguf.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