MiniCPM5-2B — MNN 8bit

openbmb/MiniCPM5-2B 转换并量化为 MNN 8bit(weight-only,quant_bit=8quant_block=128,对称量化 sym=trueembed_bit=16),用于端侧 / Apple Silicon Metal 推理。架构为标准 LlamaForCausalLM(42 层,hidden 2048,max_position_embeddings 131072)。

本仓库是 yunfengwang/MiniCPM5-2B-MNN-4bit高精度对照版:除 quant_bit 由 4 改为 8 外,其余导出参数完全一致。

文件

文件 说明
llm.mnn 计算图
llm.mnn.weight 8bit 量化权重(~2.29 GB)
embeddings_bf16.bin bf16 词嵌入(~535 MB)
tokenizer.mtok 分词器
config.json 运行配置(默认 CPU 后端)
config_metal.json Apple GPU(Metal)后端配置
llm_config.json 模型结构 / chat template
export_args.json 转换参数

用法

MNNllm_demo 运行(需 MNN_BUILD_LLM=ON + MNN_METAL=ON 编译):

# Apple Silicon 上走 Metal GPU
./llm_demo config_metal.json
# 或 CPU
./llm_demo config.json

注意:config*.json 中的 llm.mnn / llm.mnn.weight / tokenizer.mtok 为相对路径,MNN 按 config 文件所在目录解析,请在本仓库目录内运行。

转换方式

cd MNN/transformers/llm/export
python llmexport.py --path <MiniCPM5-2B> --export mnn \
    --quant_bit 8 --quant_block 128 --sym \
    --lm_quant_bit 8 --lm_quant_block 128 --embed_bit 16 \
    --mnnconvert <path>/MNNConvert --dst_path .

8bit vs 4bit 实测对比

在 Apple Silicon / Metal 后端、相同采样配置下,用一组复杂任务对照 4bit 版(quant_bit=4,其余参数一致):

任务 4bit 8bit
多步应用题(三管水池注水) ❌ 重复死循环,所有采样配置均失败 ✅ 正确解出(3 小时)
代码生成(括号匹配 is_valid 🟡 默认产不出代码,需强惩罚才勉强 ✅ 完整正确(代码 + 复杂度 + 测试用例)
中等算术(17×24) ✅ 408 ✅ 408
结构化知识问答(光合作用)
翻译 + 文化典故 🟡 直译 🟡 直译、典故细节有幻觉

结论

  • 4bit 在长链多步推理与代码生成上会出现重复退化(陷入 <think> 死循环、无法收敛),greedy 解码与提高 repetition_penalty 均无法稳定修复;8bit 可消除该退化
  • 代价是体积与速度:8bit 权重约为 4bit 的 2×(2.29 GB vs 1.16 GB),Metal decode 速度约慢一半(~37 tok/s vs ~57–96 tok/s)。
  • 翻译/文化典故类的质量短板在 4bit 与 8bit 上都存在,属 2B 基座本身的知识局限,与量化精度无关。

选型建议:轻量问答 / 资源受限端侧 → 4bit 够用;涉及多步推理、数学应用题、代码生成 → 用本 8bit 版(或更高精度)。

参考性能(Apple Silicon / Metal)

  • decode:~37 tok/s(8bit)
  • prefill:受冷缓存/调优影响波动较大,仅供参考
Downloads last month
15
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for yunfengwang/MiniCPM5-2B-MNN-8bit

Finetuned
(40)
this model