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

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,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

相关文章
|
4月前
|
人工智能 自然语言处理 搜索推荐
魔搭ModelScope社区作为一个AI模型开源平台,提供了丰富的模型资源和便捷的服务
【2月更文挑战第9天】魔搭ModelScope社区作为一个AI模型开源平台,提供了丰富的模型资源和便捷的服务
374 3
|
2月前
|
人工智能 JSON 文字识别
开源VLM新标杆 InternVL 2.0 怎么用?部署、微调尽在魔搭社区!
7月4日下午,世界人工智能大会科学前沿论坛,上海人工智能实验室OpenGVLab发布了InternVL 2.0 版本,中文名书生·万象。
|
4月前
|
人工智能 文字识别 物联网
新一代端侧模型,面壁 MiniCPM 2.0开源,魔搭社区最佳实践
MiniCPM-V 2.0 不仅带来优秀端侧多模态通用能力,更带来惊艳的 OCR 表现。通过自研的高清图像解码技术,可以突破传统困境,让更为精准地识别充满纷繁细节的街景、长图在端侧成为可能。
|
11月前
|
人工智能 文字识别 开发者
CogVLM智谱AI 新一代多模态大模型发布,魔搭社区最佳实践体验!
继 5 月 18 日推出 VisualGLM-6B 后,智谱AI&清华KEG 潜心打磨,于近日发布并直接开源了更强大的多模态大模型——CogVLM-17B。模型已第一时间发布在魔搭社区,可体验!
|
机器学习/深度学习 人工智能 自然语言处理
“魔搭”来了!一文深度解读达摩院推出的AI模型社区
一文详解ModelScope魔搭社区,模型即服务开启AI开发使用新范式
“魔搭”来了!一文深度解读达摩院推出的AI模型社区
|
11月前
|
SQL 人工智能 JSON
社区供稿 l ChatGLM金融开源FinGLM学习笔记
日前,由中国中文信息学会社会媒体处理专委会主办,智谱 AI、安硕信息、阿里云、魔搭社区、北京交通大学联合承办的「SMP 2023 ChatGLM 金融大模型挑战赛」落下帷幕,该赛事旨在推动大模型在金融垂直行业应用的研究和开发,沉淀大模型落地实践经验。赛后,赛事方第一时间开源开放了赛事相关的代码,目前也开始有开发者小伙伴基于此整理了一些干货笔记,小编特搜罗来向大家分享,希望能给正在关注大模型行业落地的小伙伴们一些帮助。
|
人工智能 达摩院 自然语言处理
达摩院联合高德发布业界首个多模态地理文本预训练模型MGeo,并在ModelScope社区开源!
达摩院联合高德发布业界首个多模态地理文本预训练模型MGeo,并在ModelScope社区开源!
|
机器学习/深度学习 人工智能 达摩院
|
人工智能 达摩院 开发者
魔搭中文开源模型社区:模型即服务-视觉AI能力的开放现状及ModelScope实战(下)
魔搭中文开源模型社区:模型即服务-视觉AI能力的开放现状及ModelScope实战
838 1
|
人工智能 达摩院 算法
下一篇
云函数