一、MiniCPM-V-2_6简介
MiniCPM-V 2.6 是 MiniCPM-V 系列中最新、性能最佳的模型。该模型基于 SigLip-400M 和 Qwen2-7B 构建,共 8B 参数。与 MiniCPM-Llama3-V 2.5 相比,MiniCPM-V 2.6 性能提升显著,并引入了多图和视频理解的新功能。MiniCPM-V 2.6 的主要特点包括:
-
🔥 领先的性能。 MiniCPM-V 2.6 在最新版本 OpenCompass 榜单上(综合 8 个主流多模态评测基准)平均得分 65.2,以8B量级的大小在单图理解方面超越了 GPT-4o mini、GPT-4V、Gemini 1.5 Pro 和 Claude 3.5 Sonnet 等主流商用闭源多模态大模型。
-
🖼️ 多图理解和上下文学习。 MiniCPM-V 2.6 还支持多图对话和推理。它在 Mantis-Eval、BLINK、Mathverse mv 和 Sciverse mv 等主流多图评测基准中取得了最佳水平,并展现出了优秀的上下文学习能力。
-
🎬 视频理解。 MiniCPM-V 2.6 还可以接受视频输入,进行对话和提供涵盖时序和空间信息的详细视频描述。模型在 有/无字幕 评测场景下的 Video-MME 表现均超过了 GPT-4V、Claude 3.5 Sonnet 和 LLaVA-NeXT-Video-34B等商用闭源模型。
-
💪 强大的 OCR 能力及其他功能。 MiniCPM-V 2.6 可以处理任意长宽比的图像,像素数可达 180 万(如 1344x1344)。在 OCRBench 上取得最佳水平,超过 GPT-4o、GPT-4V 和 Gemini 1.5 Pro 等商用闭源模型。基于最新的 RLAIF-V 和 VisCPM 技术,其具备了可信的多模态行为,在 Object HalBench 上的幻觉率显著低于 GPT-4o 和 GPT-4V,并支持英语、中文、德语、法语、意大利语、韩语等多种语言。
-
🚀 卓越的效率。 除了对个人用户友好的模型大小,MiniCPM-V 2.6 还表现出最先进的视觉 token 密度(即每个视觉 token 编码的像素数量)。它仅需 640 个 token 即可处理 180 万像素图像,比大多数模型少 75%。这一特性优化了模型的推理速度、首 token 延迟、内存占用和功耗。因此,MiniCPM-V 2.6 可以支持 iPad 等终端设备上的高效实时视频理解。
-
💫 易于使用。 MiniCPM-V 2.6 可以通过多种方式轻松使用:(1) llama.cpp 和 ollama 支持在本地设备上进行高效的 CPU 推理,(2) int4 和 GGUF 格式的量化模型,有 16 种尺寸,(3) vLLM 支持高吞吐量和内存高效的推理,(4) 针对新领域和任务进行微调,(5) 使用 Gradio 快速设置本地 WebUI 演示,(6) 在线demo即可体验。
结论有惊喜。🔥
二、环境准备
具体的环境可以参考我的上篇文(Qwen-VL部署)。这里不再重复内容。另外微调使用的swift这个框架进行的微调,所以还要准备swift的环境。
swift环境安装。
git clone https://github.com/modelscope/swift.git
cd swift
#创建虚拟环境
conda create -n minicpm python=3.10 -y
conda activate minicpm
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia
#安装swift的依赖
pip install -e .[llm]
三、微调
1、准备数据
[{
"id": "3",
"image": "/data/labelstudio/data/media/upload/1/ef7c451a-GC-10-1b.png",
"conversations": [
{
"from": "user",
"value": "<image>\\n请检查图片中的问题。"
},
{
"from": "assistant",
"value": "图片中存在井盖破损的问题"
}
]
}
]
2、微调指令
CUDA_VISIBLE_DEVICES=0 swift sft \
--model_type minicpm-v-v2_6-chat \
--model_id_or_path /data/autodl/minicpm-v-2-6/MiniCPM-V-2_6 \
--dataset /data/autodl/minicpm-v-2-6/result_cpm.json self-cognition \
--sft_type lora \
--max_length 6000 \
--learning_rate 1e-3 \
--batch_size 2 \
--num_train_epochs 3 \
--logging_steps 3 \
--eval_steps 100 \
--save_steps 100 \
--gradient_accumulation_steps 8 \
--model_name 智能助手 'Intelligent Assistant' \
--model_author 风之飘渺 'Smart'
#--deepspeed default-zero2 加了这个会报错,官方也没有说法
3、微调说明
- 正常用官方的脚本一直报OOM的,但是用这个指令是可以微调的,虽然效果很差。
- 参数max_length 不能再大,再大的话会OOM,我的是这样。
- batch_size 反而可以到4也没有报OOM,再大没有试,我数据样本少。
- 微调的数据,一定要与我上面给的格式相同,否则会报一些如:KeyError:from之类的错误,基本上是数据样本里缺少相应的关键字。
总之还是很强的一个多模态大模型,微调前的测试感觉,MiniCPM-V 2.6 比 Qwen-VL、Qwen2-VL都要好,在识图方面。最怕的就是但是,但是还是来了。同样的数据微调后,MiniCPM-V 2.6啥也不是了,测试图片识别方面能力下降。没做任何特殊设置,基本上同条件微调,都是默认的参数。