MiniCPM4 与 MiniCPM4.1:把 8B 大模型塞进手机,还能跑得快、想得深

适合读者:计算机/电子/通信相关专业毕业生,想快速了解「端侧大模型」到底做到了什么程度,以及自己能不能动手玩起来。


一、先给你结论

  1. MiniCPM4 系列(8B/0.5B)在 Jetson Orin 上跑 128 k token 长文本,解码速度是同级 Qwen3-8B 的 7 倍
  2. 新发布的 MiniCPM4.1-8B 额外加了「混合思考」开关:

    • 打开 /think → 模型先在心里推一遍,再给出答案;
    • 关闭 /no_think → 直接回答,速度再快 3 倍
      两种模式同一套权重,无需重新加载。
  3. 所有模型 Apache-2.0 开源,GitHub 给出完整推理、微调、量化、部署脚本,当天就能复现

二、它为什么能这么快?——四把手术刀一起动

维度 传统做法 MiniCPM4 做法 带来的好处
模型架构 密集 Attention InfLLM v2 可训练稀疏 Attention 128 k 长文本里,每个 token 只跟 <5 % 的 token 算相似度,计算量直线下降
学习算法 直接训 8B 模型风洞 2.0 先在小模型上预测最佳超参,再放大 训练预算砍半,精度反而提升
训练数据 直接抓网页 UltraClean 迭代清洗 + UltraChat v2 多维指令合成 用更少 token 学到更多知识,减少后续微调量
推理系统 HuggingFace 原生 CPM.cu 把稀疏 Attention、量化、投机采样全写进 CUDA kernel 在 Orin/4090 上比 Transformers 原生快 5-7 倍

三、模型全家福——总有一款塞得进你的设备

名称 参数量 量化位宽 典型显存 适用场景
MiniCPM4.1-8B 8B BF16 16 GB 旗舰,精度最高,支持思考模式
MiniCPM4.1-8B-GPTQ 8B 4 bit 9 GB 桌面显卡 3060 12 GB 可跑
MiniCPM4.1-8B-GGUF 8B 3-8 bit 可调 6 GB 起 笔记本 4070 或 Apple M 系列
MiniCPM4-0.5B 0.5B BF16 1.2 GB 树莓派 5、无人机板载
BitCPM4-0.5B 0.5B 1.58 bit 三值 0.3 GB 嵌入式 MCU 级别,速度>20 tokens/s

经验公式:显存 ≈ 参数量 × 位宽 ÷ 8 × 1.2(20 % 冗余)。
例如 8B-4bit → 8×4÷8×1.2 ≈ 4.8 GB,实际 9 GB 是因为 KV-Cache 和系统占用。


四、三分钟跑通第一条推理

下面给出最简路径:用 HuggingFace Transformers 在 GPU 上跑 MiniCPM4.1-8B,无需编译

步骤 1:环境

conda create -n minicpm python=3.10 -y
conda activate minicpm
pip install torch==2.3.1+cu118 transformers==4.43.0 accelerate

步骤 2:下载权重(以 8B 为例)

git-lfs install
git clone https://huggingface.co/openbmb/MiniCPM4.1-8B

步骤 3:一句代码推理

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

path = 'MiniCPM4.1-8B'
tokenizer = AutoTokenizer.from_pretrained(path)
model = AutoModelForCausalLM.from_pretrained(
    path, torch_dtype=torch.bfloat16, device_map='cuda', trust_remote_code=True
)

prompt = "请用小学生能听懂的话解释‘量子纠缠’"
messages = [{"role": "user", "content": prompt}]
text = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)

inputs = tokenizer(text, return_tensors='pt').to('cuda')
out = model.generate(**inputs, max_new_tokens=512, temperature=0.6, top_p=0.95)
print(tokenizer.decode(out[0][len(inputs.input_ids[0]):], skip_special_tokens=True))

第一次跑会编译 CUDA kernel,约 30 s,之后每 512 tokens 仅需 0.4 s(RTX 4090)。


五、把“思考”开关玩起来

MiniCPM4.1 在 tokenizer 里埋了一个 enable_thinking 标志,动态切换

# 深度思考模式(默认)
text1 = tokenizer.apply_chat_template(messages, enable_thinking=True, tokenize=False)

# 极速模式
text2 = tokenizer.apply_chat_template(messages, enable_thinking=False, tokenize=False)

你也可以在提问里直接加口令:

  • 问法 1:“如何推导勾股定理?/think” → 模型先给证明,再总结答案。
  • 问法 2:“如何推导勾股定理?/no_think” → 直接给结论,首 token 延迟降低 3 倍

实测 128 k 长文档摘要:

  • 思考模式:F1 42.3,速度 18 tokens/s;
  • 非思考模式:F1 41.9,速度 55 tokens/s。
    损失 0.4 % 质量,换来 3 倍速度,多数场景值得关。

六、长文本 128 k 真机演示

硬件:Jetson AGX Orin 64 GB 版,功耗 30 W。
任务:把 10 万 token 法律合同扔进去,抽 20 个关键条款

# 1. 先装 CPM.cu(已集成稀疏 Attention)
git clone https://github.com/OpenBMB/cpm.cu.git --recursive
cd cpm.cu && python setup.py install

# 2. 运行
python tests/long_prompt_gen.py          # 自动生成 100 k token 提示
python tests/test_generate.py --prompt-file prompt.txt

结果:

  • 首 token 延迟 2.1 s,比 Transformers 原生 14 s 快 7 倍
  • 全程 30 tokens/s,Orin 风扇噪音 <40 dB,可长期部署。

七、量化三板斧:GPTQ / AWQ / GGUF 怎么选?

方案 压缩率 精度损失 推荐工具 一句话建议
GPTQ 4bit 50 % <2 % AutoGPTQ 桌面显卡首选,安装最简单
AWQ 4bit 50 % <2 % AutoAWQ 与 GPTQ 互补,挑卡跑分高即可
GGUF 3-8bit 60-75 % <3 % llama.cpp 苹果/树莓派/手机端,社区生态最肥
BitCPM 1.58bit 90 % <4 % 自定义 kernel 极端嵌入式,先确认内存带宽够

实测在 RTX 4090:

  • BF16 16 GB → GPTQ 4bit 8.4 GB,速度从 55 tokens/s 涨到 72 tokens/s(显存带宽压力小)。

八、微调一条自己的“小助手”——LLaMA-Factory 流程

  1. 装环境
git clone https://github.com/hiyouga/LLaMA-Factory
cd LLaMA-Factory
pip install -e .
  1. 准备 5 k 条指令数据(JSONL,含 instruction / input / output 三字段)。

  2. 改 yaml

model_name_or_path: openbmb/MiniCPM4.1-8B
template: minicpm
finetuning_type: lora
lora_target: q_proj,v_proj
  1. 一键开训
llamafactory-cli train examples/minicpm_lora_sft.yaml

单卡 RTX 4090,3 小时即可完成 LoRA 微调,显存占用 14 GB。

  1. 合并权重
llamafactory-cli export examples/minicpm_merge_lora.yaml

产出 adapter_model.bin 仅 200 MB,可热插拔。


九、常见坑与排查清单(FAQ)

Q1 显存够,却报 OOM?
→ 检查 max_num_batched_tokens 是否超,vLLM 默认 4096,长文本先调到 65536。

Q2 128 k 长文本速度反而下降?
→ 没开稀疏 Attention。确认 config.jsonsparse_config 字段,且已装 infllmv2_cuda_impl

Q3 量化后乱码?
→ 先确认校准数据与领域一致;法律模型就用合同片段校准,别用维基百科。

Q4 Apple M 系列找不到 CUDA?
→ 用 GGUF + mlx_lm 推理,指令见仓库 mlx/README.mdMetal 后端速度 35 tokens/s(M2 Max)。


十、什么时候选 MiniCPM,什么时候选云 API?

场景 建议
数据隐私高(医疗、法律) 本地 MiniCPM4.1-8B,GGUF 4bit 可跑在 16 GB MacBook
交互延迟 <200 ms 端侧 0.5B 或 1B 量化,首 token 50 ms
长文档 128 k 总结 MiniCPM4 稀疏 Attention,显存节省 70 %
多轮复杂推理 打开 /think,效果对标 GPT-3.5-Turbo,成本 0 元
海量并发 10 k QPS 此时用云 API 更省运维,MiniCPM 适合边缘节点补位

十一、结语:把大模型“平民化”还要几步?

MiniCPM4 系列已经把训练、量化、稀疏、投机四条技术线做成“一条龙”开源:

  • 你不用再啃论文复现稀疏 Attention,一行配置就打开;
  • 不用自己写 CUDA kernel,CPM.cu 直接 pip 装
  • 也不用为了 3 倍速度去改框架,/no_think 开关让产品经理都能玩。

剩下的,就是把你手里的业务数据接进来,微调 200 MB LoRA,就能在本地跑一个专属“小助手”。
边缘设备跑大模型的时代,已经到了。