面壁智能联合清华开源端侧语言大模型面壁MiniCPM,魔搭最佳实践来啦!

简介: 面壁智能正式发布了 2B 旗舰端侧大模型面壁 MiniCPM

导  读

大模型的一条发展路径是小尺寸的大语言模型,因为尺寸小,有可能以更小的显存运行更强的大模型,并可以和移动端做更好的结合。

今天下午,面壁智能正式发布了 2B 旗舰端侧大模型面壁 MiniCPM。

MiniCPM是一系列端侧语言大模型,主体语言模型MiniCPM-2B具有2.4B的非词嵌入参数量。在综合性榜单上与Mistral-7B相近(中文、数学、代码能力更优),整体性能超越Llama2-13B、MPT-30B、Falcon-40B等模型。在当前最接近用户体感的榜单MTBench上,MiniCPM-2B也超越了Llama2-70B-Chat、Vicuna-33B、Mistral-7B-Instruct-v0.1、Zephyr-7B-alpha等众多代表性开源大模型。

同时,面壁智能发布了多模态小模型的MiniCPM-V(OmniLMM-3B该模型基于MiniCPM-2B和SigLip-400M构建,通过感知器重采样器连接。多模态小模型带来了更大的想象空间,让我们看到了小型视觉 DIY 机器人项目上运行的实用性,PC端,移动端桌面GUI自动化操作的可行性。

开源地址(内含技术报告)如下:

MiniCPM GitHub:https://github.com/OpenBMB/MiniCPM

OmniLMM GitHub:https://github.com/OpenBMB/OmniLMM

模型链接和下载

MiniCPM系列模型现已在ModelScope魔搭社区开源:

MiniCPM-2B-dpo-fp16:

https://modelscope.cn/models/OpenBMB/MiniCPM-2B-dpo-fp16

MiniCPM-2B-dpo-bf16:

https://modelscope.cn/models/OpenBMB/MiniCPM-2B-dpo-bf16

MiniCPM-2B-dpo-fp32:

https://modelscope.cn/models/OpenBMB/MiniCPM-2B-dpo-fp32

MiniCPM-2B-sft-fp32:

https://modelscope.cn/models/OpenBMB/MiniCPM-2B-sft-fp32

MiniCPM-V:

https://modelscope.cn/models/OpenBMB/MiniCPM-V

OmniLMM-12B:

https://modelscope.cn/models/OpenBMB/OmniLMM-12B

社区支持直接下载模型的repo:

from modelscope import snapshot_download
model_dir = snapshot_download("OpenBMB/MiniCPM-2B-dpo-bf16", revision = "master")

以下为大家带来魔搭社区推理、微调最佳实践教程。

环境配置与安装

本文使用的模型为 MiniCPM-2B-dpo-bf16 模型,在ModelScope的Notebook的环境(这里以PAI-DSW为例)的配置下运行(显存24G) 。

环境配置与安装

本文主要演示的模型推理代码可在魔搭社区免费实例PAI-DSW的配置下运行(显存24G) :

点击模型右侧Notebook快速开发按钮,选择GPU环境

模型推理

模型推理

from modelscope import AutoModelForCausalLM, AutoTokenizer
import torch
path = 'OpenBMB/MiniCPM-2B-dpo-bf16'
tokenizer = AutoTokenizer.from_pretrained(path)
model = AutoModelForCausalLM.from_pretrained(path, torch_dtype=torch.bfloat16, device_map='auto', trust_remote_code=True)
dialog = [{'role': 'user', 'content': '请问中国哪几个城市最适合旅游?'}]
input = tokenizer.apply_chat_template(dialog, tokenize=False, add_generation_prompt=False)
enc = tokenizer(input, return_tensors='pt').to('cuda')
output = model.generate(**enc, max_length=1024)
print(tokenizer.decode(output[0]))

资源消耗:

模型微调和微调后推理

我们使用SWIFT来对模型进行微调, SWIFT是魔搭社区官方提供的LLM&AIGC模型微调推理框架.

微调代码开源地址: https://github.com/modelscope/swift

我们使用数据集jd-sentiment-zh进行微调. 任务是: 对文本进行情感分类.

环境准备:

git clone https://github.com/modelscope/swift.git
cd swift
pip install .[llm]

微调脚本: LoRA

# https://github.com/modelscope/swift/tree/main/examples/pytorch/llm/scripts/openbmb_minicpm_2b_chat
# Experimental environment: 2 * A10
# 2 * 12GB GPU memory
nproc_per_node=2
CUDA_VISIBLE_DEVICES=0,1 \
NPROC_PER_NODE=$nproc_per_node \
MASTER_PORT=29500 \
swift sft \
    --model_id_or_path OpenBMB/MiniCPM-2B-sft-fp32 \
    --model_revision master \
    --sft_type lora \
    --template_type AUTO \
    --dtype AUTO \
    --output_dir output \
    --ddp_backend nccl \
    --dataset jd-sentiment-zh \
    --train_dataset_sample -1 \
    --val_dataset_sample 1000 \
    --num_train_epochs 1 \
    --max_length 2048 \
    --check_dataset_strategy warning \
    --lora_target_modules ALL \
    --gradient_checkpointing true \
    --batch_size 1 \
    --weight_decay 0.01 \
    --learning_rate 1e-4 \
    --gradient_accumulation_steps $(expr 16 / $nproc_per_node) \
    --max_grad_norm 0.5 \
    --warmup_ratio 0.03 \
    --eval_steps 100 \
    --save_steps 100 \
    --save_only_model true \
    --save_total_limit 2 \
    --logging_steps 10 \
    --use_flash_attn false \

训练过程支持本地数据集,需要指定如下参数:

--custom_train_dataset_path xxx.jsonl \
--custom_val_dataset_path yyy.jsonl \

自定义数据集的格式可以参考:

https://github.com/modelscope/swift/blob/main/docs/source/LLM/自定义与拓展.md

微调后推理脚本:

(这里的ckpt_dir需要修改为训练生成的checkpoint文件夹)

# Experimental environment: A10
CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --ckpt_dir "output/openbmb-minicpm-2b-sft-chat/vx_xxx/checkpoint-xxx" \
    --load_dataset_config true \
    --max_length 2048 \
    --use_flash_attn false \
    --max_new_tokens 2048 \
    --do_sample false \

训练loss图:


训练后生成样例:

[PROMPT]<s> <用户>Task: Sentiment Classification
Sentence: 口感相当的好 都想买第二次了
Category: negative, positive
Output:<AI>[OUTPUT]positive</s>
[LABELS]positive
--------------------------------------------------
[PROMPT]<s> <用户>Task: Sentiment Classification
Sentence: 质量不错,大小合适,应当是正品!但是我买的是黑灰,发来的却是纯黑,懒得换了,给个差评,希望以后改进!
Category: negative, positive
Output:<AI>[OUTPUT]negative</s>
[LABELS]negative
--------------------------------------------------
[PROMPT]<s> <用户>Task: Sentiment Classification
Sentence: 一般吧,冰糖太多了
Category: negative, positive
Output:<AI>[OUTPUT]negative</s>
[LABELS]negative
--------------------------------------------------

点击直达模型卡片modelscope.cn/models/OpenBMB/MiniCPM-2B-dpo-bf16/summary

相关文章
|
5月前
|
分布式计算 测试技术 Spark
科大讯飞开源星火化学大模型、文生音效模型
近期,科大讯飞在魔搭社区(ModelScope)和Gitcode上开源两款模型:讯飞星火化学大模型Spark Chemistry-X1-13B、讯飞文生音频模型AudioFly,助力前沿化学技术研究,以及声音生成技术和应用的探索。
464 2
|
6月前
|
人工智能 算法 开发者
开源VLM“华山论剑”丨AI Insight Talk多模态专场直播预告
开源VLM“华山论剑”丨AI Insight Talk多模态专场直播预告
565 10
开源VLM“华山论剑”丨AI Insight Talk多模态专场直播预告
|
5月前
|
机器学习/深度学习 数据采集 人工智能
通义实验室Mobile-Agent-v3开源,全平台SOTA的GUI智能体,支持手机电脑等多平台交互
近日,通义实验室MobileAgent团队正式开源全新图形界面交互基础模型 GUI-Owl,并同步推出支持多智能体协同的自动化框架 Mobile-Agent-v3。该模型基于Qwen2.5-VL打造,在手机端与电脑端共8个GUI任务榜单中全面刷新开源模型性能纪录,达成全平台SOTA。
1631 2
|
4月前
|
数据采集 人工智能 搜索推荐
智能新纪元:多模态大模型如何重塑人机交互
智能新纪元:多模态大模型如何重塑人机交互
291 113
|
5月前
|
人工智能 Rust 并行计算
AI大模型开发语言排行
AI大模型开发涉及多种编程语言:Python为主流,用于算法研发;C++/CUDA优化性能;Go/Rust用于工程部署;Java适配企业系统;Julia等小众语言用于科研探索。
1704 127
|
5月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
2256 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
6月前
智谱发布GLM-4.5V,全球开源多模态推理新标杆,Day0推理微调实战教程到!
视觉语言大模型(VLM)已经成为智能系统的关键基石。随着真实世界的智能任务越来越复杂,VLM模型也亟需在基本的多模态感知之外,逐渐增强复杂任务中的推理能力,提升自身的准确性、全面性和智能化程度,使得复杂问题解决、长上下文理解、多模态智能体等智能任务成为可能。
920 0
|
6月前
|
人工智能 算法 测试技术
轻量高效,8B 性能强劲书生科学多模态模型Intern-S1-mini开源
继 7 月 26 日开源『书生』科学多模态大模型 Intern-S1 之后,上海人工智能实验室(上海AI实验室)在8月23日推出了轻量化版本 Intern-S1-mini。
854 50