MiniCPM README

The project's README from github.com/OpenBMB/MiniCPM. As one markdown file: README.md.

中文 | English

MiniCPM Tech Report | MiniCPM Wiki (in Chinese) | MiniCPM-V Repo | UltraData | Online Demo

Join our discord and Feishu/Lark | Join Us

✨ Highlights

We are releasing MiniCPM5-2B, the second model in the MiniCPM5 series, following MiniCPM5-1B. It is a dense 2B Transformer that scales up the same training recipe, built for on-device, local deployment, and resource-constrained scenarios, reaching 2B-class open-source SOTA.

🏆 2B-class open-source SOTA: compared with strong open-source models of similar size, MiniCPM5-2B achieves SOTA performance within this comparison set. It remains competitive with 4B-class models overall, while showing its advantages over models of comparable size in coding, mathematics, long-context understanding, tool use, and agentic tasks.

MiniCPM5-2B capability comparison by domain

📂 Open High-Quality Data: Alongside the model, we are releasing the high-quality training datasets behind it as part of the UltraData family: UltraX, a high-quality web pre-training dataset; UltraData-Code, featuring L0–L3 tiered code data management to drive a significant leap in coding capabilities; UltraData-SFT-Agent-2609, comprising 500K agent training samples to enhance comprehensive on-device agent capabilities; and UltraData-RL-2609, with 80K+ high-quality RL training samples covering mathematics, code, general knowledge, and long-context reasoning.

🔥 Changelog

Older entries (2024 + InfLLM-V2 paper)
  • [2025.09.29] InfLLM-V2 paper is released! We can train a sparse attention model with only 5B long-text tokens.
  • [2024.09.05] We release MiniCPM3-4B! This model outperforms Phi-3.5-mini-instruct and GPT-3.5-Turbo-0125 and is comparable to several models with 7B-9B parameters like Llama3.1-8B-Instruct, Qwen2-7B-Instruct, and GLM-4-9B-Chat.
  • [2024.07.05] Released MiniCPM-S-1B! This model achieves an average sparsity of 87.89% in the FFN layer, reducing FFN FLOPs by 84%, while maintaining downstream task performance.
  • [2024.04.11] Released MiniCPM-2B-128k, MiniCPM-MoE-8x2B and MiniCPM-1B! Click here to read our technical blog.
  • [2024.02.01] Released MiniCPM-2B! This model performs similarly to Mistral-7B on public benchmarks (with better performance in Chinese, math, and code abilities) and overall outperforms models like Llama2-13B, MPT-30B, and Falcon-40B.

📦 Model Downloads

Current release: MiniCPM5-2B / MiniCPM5-1B(BF16 / GGUF / MLX):

MiniCPM5-2B

HuggingFace ModelScope
MiniCPM5-2B MiniCPM5-2B
MiniCPM5-2B-SFT MiniCPM5-2B-SFT
MiniCPM5-2B-Midtrain MiniCPM5-2B-Midtrain
MiniCPM5-2B-Base MiniCPM5-2B-Base
MiniCPM5-2B-GGUF MiniCPM5-2B-GGUF
MiniCPM5-2B-MLX MiniCPM5-2B-MLX
MiniCPM5-2B-GPTQ MiniCPM5-2B-GPTQ
MiniCPM5-2B-DSpark MiniCPM5-2B-DSpark

MiniCPM5-1B

HuggingFace ModelScope
MiniCPM5-1B MiniCPM5-1B
MiniCPM5-1B-SFT MiniCPM5-1B-SFT
MiniCPM5-1B-Base MiniCPM5-1B-Base
MiniCPM5-1B-GGUF MiniCPM5-1B-GGUF
MiniCPM5-1B-MLX MiniCPM5-1B-MLX

Other key releases:

HuggingFace ModelScope
MiniCPM-SALA MiniCPM-SALA
MiniCPM4.1-8B MiniCPM4.1-8B
MiniCPM4-0.5B MiniCPM4-0.5B
📋 Click to view earlier MiniCPM releases: 4, BitCPM, applications, MiniCPM3 / 2B / 1B

Earlier flagships:

HuggingFace ModelScope
MiniCPM4-8B MiniCPM4-8B

MiniCPM4.1 quantized & speculative variants:

HuggingFace ModelScope
MiniCPM4.1-8B-GPTQ MiniCPM4.1-8B-GPTQ
MiniCPM4.1-8B-AutoAWQ MiniCPM4.1-8B-AutoAWQ
MiniCPM-4.1-8B-Marlin MiniCPM-4.1-8B-Marlin
MiniCPM4.1-8B-GGUF MiniCPM4.1-8B-GGUF
MiniCPM4.1-8B-MLX MiniCPM4.1-8B-MLX
MiniCPM4.1-8B-Eagle3 MiniCPM4.1-8B-Eagle3

BitCPM4 ternary-quantized + MiniCPM4 Applications:

HuggingFace ModelScope
BitCPM4-1B BitCPM4-1B
BitCPM4-0.5B BitCPM4-0.5B
MiniCPM4-Survey MiniCPM4-Survey
MiniCPM4-MCP MiniCPM4-MCP

MiniCPM4 Eagle speculative decoding, QAT, and pre-2025 releases:

HuggingFace ModelScope
MiniCPM4-8B-Eagle-FRSpec MiniCPM4-8B-Eagle-FRSpec
MiniCPM4-8B-Eagle-FRSpec-QAT MiniCPM4-8B-Eagle-FRSpec-QAT
MiniCPM4-8B-Eagle-vLLM MiniCPM4-8B-Eagle-vLLM
MiniCPM4-8B-marlin-Eagle-vLLM MiniCPM4-8B-marlin-Eagle-vLLM
MiniCPM4-0.5B-QAT-Int4-unquantized MiniCPM4-0.5B-QAT-Int4-unquantized
MiniCPM4-0.5B-QAT-Int4-GPTQ-format MiniCPM4-0.5B-QAT-Int4-GPTQ-format
MiniCPM3-4B MiniCPM3-4B
MiniCPM-2B-sft MiniCPM-2B-sft
MiniCPM-2B-dpo MiniCPM-2B-dpo
MiniCPM-2B-128k MiniCPM-2B-128k
MiniCPM-MoE-8x2B MiniCPM-MoE-8x2B
MiniCPM-1B MiniCPM-1B
MiniCPM-S-1B MiniCPM-S-1B

🚀 MiniCPM5-2B

Introduction

MiniCPM5-2B is the second checkpoint in the MiniCPM5 series, scaling the MiniCPM5-1B recipe up to 2B parameters for users who can afford a larger footprint in exchange for stronger capability. It is designed for local assistants, coding agents, tool-use workflows, and reasoning scenarios where a compact model is preferred. The model keeps a small deployment footprint while providing native long-context support.

Architecture Standard LlamaForCausalLM
Parameters 2,516,756,480 (non-embedding: 1,981,982,720)
Layers 42
Attention Heads (GQA) 16 Q / 2 KV
Context Length 131,072

Evaluation Results

We compare MiniCPM5-2B with strong open-source models in the same size class, including LFM2.5-2.6B, Qwen3.5-2B, and Gemma-4-E2B-it, while also listing larger models such as Qwen3.5-4B, granite-4.2-3B, Nemotron-3-Nano-4B, Gemma-4-E4B-it, and LFM2.5-8B-A1B for reference.

Within this comparison set, MiniCPM5-2B reaches 2B-class open-source SOTA with an average score of 53.9, and also exceeds all of the larger models included here (the highest is 51.1). Its advantages are most visible in code reasoning, math reasoning, long-context understanding, tool use, and multiple agentic tasks.

MiniCPM5-2B public leaderboard

Training Recipe

The training of MiniCPM5-2B is a full-stack practice of UltraData Tiered Data Management, covering three stages: base training, mid-training, and post-training.

During base training, the model goes through stable training and decay training to build core language capability and training stability. It then enters mid-training to further strengthen target capabilities and adapt to the target data distribution. The training corpus is released alongside the model as Ultra-FineWeb, Ultra-FineWeb-L3, UltraX, UltraData-Code and UltraData-Math.

During post-training, we proceed in three steps: SFT, RL, and OPD. We first use 400B tokens of deep-thinking SFT to establish deep-thinking and general chat abilities; the SFT data is released as UltraData-SFT-2605 and Agent SFT data as UltraData-SFT-Agent-2609. We then train specialized RL teachers for math, code, agentic tasks, writing, and related domains(with the corresponding data also open-sourced as UltraData-RL-2609), and use On-Policy Distillation (OPD) to distill these teachers back into one release model.

MiniCPM5-2B Training Recipe

What does RL + OPD bring?

RL + OPD is a key part of MiniCPM5-2B post-training. During the RL stage, we adopted the critic-based algorithm described in JustRL II, substantially improving training stability and achieving significant gains across multiple domains. On the benchmarks listed below, RL + OPD improves reasoning and general capabilities by an average of ↑10.96 points, and agentic capabilities by ↑6.96 points.

OPD merges the capabilities of 16 expert models produced by RL training, including 5 agentic expert models. At each response position, we compute the full-vocabulary reverse KL divergence between student and teacher logits as the advantage estimate, replacing the original verification-based advantage. OPD directly reuses the prompts used to train each RL teacher as distillation data, so no additional corpus construction is required.

MiniCPM5-2B RL + OPD Gains

Quickstart

We recommend using the following sets of sampling parameters for generation: temperature=1.0, top_p=0.95, min_p=0.0.

If you encounter repetitive outputs, try: temperature=1.0, top_p=0.95, min_p=0.0, repetition_penalty=1.05.

Please note that the support for sampling parameters varies according to inference frameworks.

vLLM

pip install "vllm>=0.21"
vllm serve openbmb/MiniCPM5-2B --port 8000
curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openbmb/MiniCPM5-2B",
    "messages": [{"role": "user", "content": "Who are you? Please briefly introduce yourself."}],
    "max_tokens": 128,
    "temperature": 1.0, "top_p": 0.95
  }'

SGLang

pip install "sglang[srt]>=0.5.16"
python -m sglang.launch_server --model-path openbmb/MiniCPM5-2B --port 30000
curl http://localhost:30000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openbmb/MiniCPM5-2B",
    "messages": [{"role": "user", "content": "Who are you? Please briefly introduce yourself."}],
    "max_tokens": 128,
    "temperature": 1.0, "top_p": 0.95
  }'

Speculative decoding (DSpark): we also release MiniCPM5-2B-DSpark, a DSpark draft model trained for MiniCPM5-2B. Enable it in SGLang to accelerate decoding while keeping the target model's outputs unchanged:

python -m sglang.launch_server \
  --model-path openbmb/MiniCPM5-2B \
  --trust-remote-code \
  --speculative-algorithm DSPARK \
  --speculative-draft-model-path openbmb/MiniCPM5-2B-DSpark \
  --speculative-dspark-block-size 7 \
  --port 30000

Llama.cpp

llama-server -m MiniCPM5-2B-F16.gguf -a MiniCPM5-2B --port 8080 -ngl 99 -c 8192 --jinja

-c 8192 sets the context length. You can adjust this value as needed.

curl http://localhost:8080/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "MiniCPM5-2B",
        "messages": [{"role": "user", "content": "1+1=?"}],
        "temperature": 1.0, "top_p": 0.95, "min_p": 0.0, "max_tokens": 256
    }'

In llama.cpp, the default min_p=0.05 can lead to repetitive output: it filters out tokens whose probability is below 5% of the highest-probability token, potentially discarding the exact tokens needed to break out of a repetition loop. To prevent this, we set min_p=0.0.

Transformers

pip install -U "transformers>=5.6" accelerate torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "openbmb/MiniCPM5-2B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretra

MiniCPM (OpenBMB/MiniCPM)

Searching Database…

11.6K ·GitHub
这是什么?MiniCPM 是面壁智能(OpenBMB)推出的一系列小型开源大语言模型,面向端侧设备和资源受限的场景。最新版本 MiniCPM5-2B 是一个 20 亿参数的稠密模型,在同级别开源模型中达到了最先进水平,同时表现可以和更大的 40 亿参数级别模型相媲美。
这是可以直接用的应用,还是只有模型权重?它是一组模型检查点(BF16、GGUF、MLX、GPTQ 格式),发布在 Hugging Face 和 ModelScope 上,并不是独立的应用程序。你需要通过现有的推理框架来加载,例如 Transformers、vLLM、SGLang 或 llama.cpp。
怎么运行 MiniCPM5-2B?最简单的方法是用 Python:安装 Transformers,然后调用 AutoModelForCausalLM.from_pretrained('openbmb/MiniCPM5-2B')。另外,也可以把 GGUF 版本放到 llama.cpp 中运行,或者用 vLLM、SGLang 来部署 BF16/GPTQ 权重。
支持哪些推理框架?MiniCPM5-2B 可以和 Hugging Face Transformers、vLLM、SGLang(可选搭配 DSpark 投机解码草稿模型)以及通过 GGUF 版本使用的 llama.cpp 配合使用;MLX 版本则面向 Apple Silicon 芯片提供。
采样设置上有什么需要注意的吗?推荐的生成参数是 temperature=1.0、top_p=0.95、min_p=0.0。llama.cpp 的默认值 min_p=0.05 会过滤掉一些需要的低概率词元,可能导致输出重复,因此需要手动覆盖这个设置。
只能用 GPU 运行吗?我能在 Mac 或者 CPU 上用吗?项目发布了多种量化格式,因此可以在不同硬件上运行:GGUF 适用于 CPU 和 llama.cpp,MLX 适用于 Apple Silicon 芯片的 Mac,GPTQ/AWQ 适用于 GPU 加速的部署。
UltraData 是什么?UltraData 是与 MiniCPM5 一同发布的高质量开源数据集系列,包括 UltraX(网页预训练)、UltraData-Code、UltraData-SFT-Agent-2609(50 万条智能体样本),以及 UltraData-RL-2609(8 万多条用于数学、代码和推理的强化学习样本)。
RL + OPD 给模型带来了什么?On-Policy Distillation(在线策略蒸馏)通过匹配学生模型与教师模型的 logits,将 16 个经过强化学习训练的专家模型(其中包括 5 个智能体专家)合并回一个检查点,使推理和通用能力得分提升约 11 分,智能体能力提升约 7 分。
除了 2B 之外还有其他尺寸的模型吗?有的。MiniCPM5 系列还包括一个 1B 模型,项目也保留了早期版本(MiniCPM4/4.1、MiniCPM3、MiniCPM-SALA),以及参数量从 0.5B 到 8B 不等的三值量化 BitCPM4 版本。
为什么要做又一个小型大模型,而不直接用 7B 以上的模型?MiniCPM 面向本地助手、编程智能体和工具调用等工作流,这些场景下小巧的体积很重要;MiniCPM5-2B 在编程、数学、长上下文和智能体基准测试上与更大的 40 亿参数级别模型持平或更优,同时足够小,适合在端侧设备上部署。
Creator
OpenBMB
Size
162.5 MB
Stars
11.6K
Age
2y
Commits · 90 Days