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

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 面壁智能正式发布了 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

相关文章
|
26天前
|
人工智能 达摩院 自然语言处理
超好用的开源模型平台,ModelScope阿里达摩院
超好用的开源模型平台,ModelScope阿里达摩院
|
2月前
|
人工智能 自然语言处理 搜索推荐
魔搭ModelScope社区作为一个AI模型开源平台,提供了丰富的模型资源和便捷的服务
【2月更文挑战第9天】魔搭ModelScope社区作为一个AI模型开源平台,提供了丰富的模型资源和便捷的服务
116 3
|
11天前
|
数据可视化 物联网 Swift
澜舟科技开源孟子3-13B大模型,魔搭社区推理训练最佳实践!
4月1日,澜舟科技宣布开源Mengzi3-13B大模型,对学术研究完全开放,同时支持免费商用。
|
26天前
|
数据采集 人工智能 自然语言处理
中科院国产多语言大模型-YAYI2开源!家族AI应用场景全覆盖!
中科院国产多语言大模型-YAYI2开源!家族AI应用场景全覆盖!
|
3月前
|
人工智能 自然语言处理 数据可视化
书生·浦语 2.0 开源!回归语言建模本质,综合性能领先开源社区,魔搭最佳实践来啦!
1月17日,上海人工智能实验室与商汤科技联合香港中文大学和复旦大学正式发布新一代大语言模型书生·浦语2.0(InternLM2),模型开源可商用,魔搭社区作为首发平台,支持大家第一时间下载体验。
|
6月前
|
人工智能 文字识别 开发者
CogVLM智谱AI 新一代多模态大模型发布,魔搭社区最佳实践体验!
继 5 月 18 日推出 VisualGLM-6B 后,智谱AI&清华KEG 潜心打磨,于近日发布并直接开源了更强大的多模态大模型——CogVLM-17B。模型已第一时间发布在魔搭社区,可体验!
|
9月前
|
人工智能 达摩院 自然语言处理
达摩院联合高德发布业界首个多模态地理文本预训练模型MGeo,并在ModelScope社区开源!
达摩院联合高德发布业界首个多模态地理文本预训练模型MGeo,并在ModelScope社区开源!
|
11月前
|
人工智能 达摩院 开发者
魔搭中文开源模型社区:模型即服务-视觉AI能力的开放现状及ModelScope实战(下)
魔搭中文开源模型社区:模型即服务-视觉AI能力的开放现状及ModelScope实战
487 1
|
11月前
|
人工智能 达摩院 算法
|
11月前
|
人工智能 编解码 达摩院
魔搭中文开源模型社区:模型即服务-视觉AI能力的开放现状及ModelScope实战(中)
魔搭中文开源模型社区:模型即服务-视觉AI能力的开放现状及ModelScope实战
618 0