大家好,我是刘聪NLP。
面壁一直都在做端侧大模型,之前有文本系列MiniCPM-2B模型,还有多模态系列的MiniCPM-V系列模型,今天又开源了MiniCPM3-4B模型,真是端侧一路走到低。
这次MiniCPM3-4B也是在效果上有了巨大的提升,超过Phi-3.5-mini-Instruct模型,肩比Llama3.1-8B-Instruct、GLM-4-9B-Chat、Qwen2-7B-Instruct等一众模型,堪称小模型之王。
之前的MiniCPM-2B模型报告也是干活满满,详见:https://shengdinghu.notion.site/MiniCPM-c805a17c5c8046398914e47f0542095a
这里说一下哈,MiniCPM-2B是1.0版本模型,MiniCPM-1B是2.0版本模型,现在是3.0版本4B。
模型改进
下面是3个版本的模型结构(1->2->3)的区别:
位置编码:RoPE->RoPE->RoPE 注意力机制:MHA->GQA->MLA,MLA也是DeepSeek-V2的核心创新 词表大小:123K->73K->73K 模型层数:40->52->62 隐藏层节点:2304->1536->2560 最大长度:4k->4K->32k 系统提示词:不支持->不支持->支持 工具调用和代码解释器:不支持->不支持->支持
同时,还发布了RAG套件MiniCPM-Embedding模型和MiniCPM-Reranker模型,针对 RAG场景还发布了微调版MiniCPM3-RAG-LoRA模型。
模型效果
MiniCPM3-4B模型在中文英文遵循、数据推理、代码能力、工具调用上表现均很不错的效果。
其中,工具调用能力尤为突出,在Berkeley Function Calling Leaderboard上优于Llama3.1-8B-Instruct、GLM-4-9B-Chat、Qwen2-7B-Instruct等更大模型。
长文档的大海捞针也是全绿。
模型快速使用
PS:模型下载有困难的同学,详见我之前写的一篇文章《大模型下载使我痛苦》。
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# 模型加载
path = "openbmb/MiniCPM3-4B"
tokenizer = AutoTokenizer.from_pretrained(path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(path, torch_dtype=torch.bfloat16, device_map="cuda", trust_remote_code=True)
# 输入构造
messages = [
{"role": "user", "content": "你知道刘聪NLP是谁吗?"},
]
model_inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to("cuda")
# 模型生成
model_outputs = model.generate(
model_inputs,
max_new_tokens=1024,
top_p=0.8,
temperature=0.9,
repetition_penalty=1.1
)
# 模型解码
output_token_ids = [
model_outputs[i][len(model_inputs[i]):] for i in range(len(model_inputs))
]
responses = tokenizer.batch_decode(output_token_ids, skip_special_tokens=True)[0]
print(responses)
PS:给公众号添加【星标⭐️】不迷路!您的点赞、在看、关注是我坚持的最大动力!
我们的口号是“生命不止,学习不停”!
往期推荐:
一大堆Chinese Llama3正在袭来 LLM2LLM:迭代数据增强策略提升大模型微调效果 如何快速提高大模型的向量表征效果? RAG系统中答案无关片段对LLMs生成答案有何影响? InternLM2技术报告 Qwen1.5-MoE模型:2.7B的激活参数量达到7B模型的性能 RAG与Long-Context之争—没必要争 角色扮演大模型的碎碎念 自我蒸馏方法-减轻大模型微调过程中的灾难性遗忘 Yi技术报告细节分享 大模型增量预训练新技巧-解决灾难性遗忘 如何提高LLMs的文本表征(Text Embedding)能力? DEITA-大模型指令微调的数据高效筛选方法 大模型微调技巧 | 高质量指令数据筛选方法-MoDS 辟谣!微软撤回声称ChatGPT为20B参数的论文,并给出解释。 如何看待微软论文声称 ChatGPT 是 20B (200亿) 参数量的模型? 大模型微调技巧-在Embeeding上加入噪音提高指令微调效果 如何从数据集中自动识别高质量的指令数据 BaiChuan2技术报告细节分享&个人想法 大模型LLM微调经验总结&项目更新 打造LLM界的Web UI 是我们在训练大模型,还是大模型在训练我们? Llama2技术细节&开源影响 大模型时代-行业落地再思考 垂直领域大模型的一些思考及开源模型汇总 如何评估大模型-LLMs的好坏?