license: other
license_name: gml
license_link: https://github.com/OpenBMB/General-Model-License/blob/main/%E9%80%9A%E7%94%A8%E6%A8%A1%E5%9E%8B%E8%AE%B8%E5%8F%AF%E5%8D%8F%E8%AE%AE-%E6%9D%A5%E6%BA%90%E8%AF%B4%E6%98%8E-%E5%AE%A3%E4%BC%A0%E9%99%90%E5%88%B6-%E5%95%86%E4%B8%9A%E6%8E%88%E6%9D%83.md
language:
- en
- zh
tags:
- MiniCPM
- ModelBest
- THUNLP
MiniCPM
MiniCPM 技术报告 技术报告 |
OmniLMM 多模态模型 |
CPM-C 千亿模型试用
MiniCPM 是面壁智能与清华大学自然语言处理实验室共同开源的系列端侧语言大模型,主体语言模型 MiniCPM-2B 仅有 24亿(2.4B)的非词嵌入参数量。
- 经过监督微调(SFT)后,MiniCPM 在公开综合性评测集上表现与 Mistral-7B 相近(中文、数学、代码能力更优),整体性能超越 Llama2-13B、MPT-30B、Falcon-40B 等模型。
- 经过直接偏好优化(DPO)后,MiniCPM 在当前最接近用户体感的评测集 MTBench 上,MiniCPM-2B 也超越了 Llama2-70B-Chat、Vicuna-33B、Mistral-7B-Instruct-v0.1、Zephyr-7B-alpha 等众多代表性开源大模型。
- 以 MiniCPM-2B 为基础构建的端侧多模态大模型 MiniCPM-V,整体性能在同规模模型中实现最佳,超越基于 Phi-2 构建的现有多模态大模型,在部分评测集上达到与 9.6B Qwen-VL-Chat 相当甚至更好的性能。
- 经过 Int4 量化后,MiniCPM 可在手机上进行部署推理,流式输出速度略高于人类说话速度。MiniCPM-V 也首次实现了多模态大模型在手机端的完整部署。
- 仅需一张1080/2080显卡即可高效进行参数高效微调,一张3090/4090可完成全参数微调,单台机器即可持续训练 MiniCPM,二次开发成本较低。
我们将完全开源MiniCPM-2B的模型参数供学术研究和有限商用,同时公开训练过程中的所有检查点(Checkpoint)和大部分非专有数据,以支持模型机理研究。
- 基于MiniCPM-2B的指令微调与人类偏好对齐版本MiniCPM-2B-SFT/DPO
- 基于MiniCPM-2B的多模态模型MiniCPM-V,性能超越同参数级别的Phi-2多模态模型
- MiniCPM-2B-SFT/DPO的Int4量化版本MiniCPM-2B-SFT/DPO-Int4
- 基于MLC-LLM和LLMFarm开发的手机端应用,支持文本及多模态模型在移动端进行推理
评测结果
详细评测结果请参阅GitHub仓库
注意:经测试发现使用HuggingFace生成的文本质量略逊于vLLM,建议优先使用vLLM进行测试。我们正在排查此问题原因。
模型局限性
- 受限于模型规模,可能出现幻觉性输出。其中DPO模型因生成长回复的特性更易出现幻觉问题。我们将持续优化迭代MiniCPM模型;
- 为保持学术研究的通用性,模型未进行身份认同训练。由于采用ShareGPT开源语料训练,可能输出类似GPT模型的认同信息;
- 模型规模限制导致输出对提示词敏感,多次尝试可能产生不一致结果;
- 模型知识记忆能力有限,后续将结合RAG技术增强知识准确性。
模型下载
使用指南
- 安装
transformers>=4.36.0
及accelerate
后运行以下代码
- 重要提示:必须在
from_pretrained
中显式指定模型数据类型,否则会导致显著计算误差
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(0)
path = 'openbmb/MiniCPM-2B-sft-fp32'
tokenizer = AutoTokenizer.from_pretrained(path)
model = AutoModelForCausalLM.from_pretrained(path, torch_dtype=torch.float32, device_map='cuda', trust_remote_code=True)
responds, history = model.chat(tokenizer, "山东省最高的山是哪座山, 它比黄山高还是矮?差距多少?", temperature=0.8, top_p=0.8)
print(responds)
山东省最高的山是泰山,海拔1545米。
相对于黄山(海拔1864米),泰山海拔较低,相差约319米。
开源协议
模型授权
免责声明
- MiniCPM作为语言模型通过海量文本学习生成内容,不具备理解能力或价值判断,其输出不代表开发者立场
- 用户需自行评估和验证模型生成内容
- 因使用MiniCPM导致的任何问题(包括但不限于数据安全、舆论风险或模型滥用等),开发者不承担任何责任
引用说明
- 若MiniCPM对您的研究有所帮助,请引用技术报告
@inproceedings{minicpm2024,
title={MiniCPM:揭示端侧大语言模型的潜力},
booktitle={OpenBMB技术博客},
year={2024}
}