MiniCPM 是由面壁智能(ModelBest Inc.)与清华大学自然语言处理实验室(TsinghuaNLP)联合研发的端侧大语言模型(End-Size LLM),不含嵌入层时仅拥有 24 亿(2.4B)参数。 MiniCPM-2B-128k 是 MiniCPM-2B 的长上下文扩展尝试版本。 据我们所知,MiniCPM-2B-128k 是首个参数量小于 30 亿(3B)且支持 128k 及以上上下文长度的小语言模型(SLM)。 与先前发布的 MiniCPM-2B 相比,其改进包括:
MiniCPM 是面壁与清华大学自然语言处理实验室共同开源的系列端侧语言大模型,主体语言模型 MiniCPM-2B 仅有 24亿(2.4B)的非词嵌入参数量。 MiniCPM-2B-128k 是一次基于 MiniCPM-2B 的长度扩展尝试,也是第一个 3B 以下的长文本模型。相对于之前发布的版本,改进如下:
更多细节请参考 GitHub repo 和 Blog
| Model | avg | avg w/o code&math | passkey | number_string | kv_retrieval | longbook_choice_eng | longbook_qa_chn | longbook_qa_eng | longbook_sum_eng | longdialogue_qa_eng | math_calc | math_find | code_debug | code_run |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LWM-Text-128k | 24.45 | 33.62 | 100 | 97.8 | 0.6 | 28.82 | 15.93 | 14.31 | 9.99 | 1.5 | 0 | 3.43 | 20.05 | 1 |
| Yarn-Mistral-7b-128k | 19.84 | 27.36 | 92.71 | 0 | 27.95 | 15.49 | 9.55 | 9.06 | 7.5 | 0 | 17.14 | 0.76 | 1.25 | |
| Mistral-7B-Instruct-v0.2(ABF 1000w) | 27.75 | 36.9 | 100 | 78.98 | 3.6 | 37.12 | 11.74 | 17.37 | 21.12 | 9.5 | 0 | 29.43 | 17.51 | 0 |
| Yi-6B-200k | 22.15 | 32.54 | 100 | 94.92 | 0 | 36.68 | 15.07 | 9.2 | 0.92 | 3.5 | 0 | 4.29 | 0.51 | 0.75 |
| chatglm3-6b-128k | 25.58 | 36.57 | 89.93 | 99.66 | 5.2 | 46.29 | 10.7 | 8.38 | 25.91 | 6.5 | 0 | 8 | 5.33 | 1 |
| MiniCPM-2.4B-128k | 27.32 | 37.68 | 98.31 | 99.83 | 9 | 29.69 | 23.06 | 16.33 | 15.73 | 9.5 | 0 | 4.29 | 22.08 | 0 |
Notice: We discovered that the quality of Huggingface generation is slightly lower and significantly slower than vLLM, thus benchmarking using vLLM is recommended.
注意:我们发现使用Huggingface生成质量略差于vLLM,因此推荐使用vLLM进行测试。
由于模型规模的限制,该模型可能会出现幻觉问题。DPO模型往往会生成更长的回复,因此更容易产生幻觉。我们将持续对MiniCPM模型进行迭代和改进。
为确保模型在学术研究中的通用性,我们未对模型进行任何身份认同训练。同时,由于我们使用ShareGPT开源语料作为部分训练数据,模型可能会输出与GPT系列模型相似的身份信息。
受模型规模所限,模型的输出受提示词(prompt)影响较大,多次尝试可能会产生不一致的结果。
由于模型容量有限,其知识记忆不够准确。未来,我们将结合RAG方法来增强模型的知识记忆能力。
受限于模型规模,模型可能出现幻觉性问题。其中由于DPO模型生成的回复内容更长,更容易出现幻觉。我们也将持续进行MiniCPM模型的迭代改进;
为了保证在学术研究用途上模型的通用性,我们未对模型进行任何身份认同训练。同时由于我们用ShareGPT开源语料作为部分训练数据,模型可能会输出类似GPT系列模型的身份认同信息;
受限于模型规模,模型的输出受到提示词(prompt)的影响较大,可能多次尝试产生不一致的结果;
受限于模型容量,模型的知识记忆较不准确,后续我们将结合RAG方法来增强模型的知识记忆能力。
安装transformers>=4.36.0以及accelerate后,运行以下代码
注意:需要在from_pretrained中明确指明模型的数据类型,否则会引起较大计算误差
安装transformers>=4.36.0以及accelerate后,运行以下代码
注意:需要在from_pretrained中明确指明模型的数据类型,否则会引起较大计算误差
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(0)
path = 'openbmb/MiniCPM-2B-128k'
tokenizer = AutoTokenizer.from_pretrained(path)
model = AutoModelForCausalLM.from_pretrained(path, torch_dtype=torch.bfloat16, device_map='cuda', trust_remote_code=True)
responds, history = model.chat(tokenizer, "山东省最高的山是哪座山, 它比黄山高还是矮?差距多少?", temperature=0.8, top_p=0.8)
print(responds)