大模型的趋势:模型性能越来越好,模型参数变小,端边设备计算能力变强。
MiniCPM-V优点
结果好、OCR能力突出、多分辨率、多语言、易于部署
模型结构
图片encoder适用vit。输入整体以及切片。切片使用自适应算法,通过计算分数,选取一个mxn,位置编码改用2d方式。然后通过压缩模块,将1024维的tokens压缩到64/96维,增大推理速度。在每一行到切片后加入换行符号,保持空间一致性。最后送入LLM。
训练过程
分为3步:预训练、有监督微调 以及RLAIF-V对齐
预训练
用于对齐视觉模块。分为3个stage
- 训练压缩模块,连接语言与视觉特征,冻结其他层。使用清洗过后的200万的Image Captioning数据。
- 更改输入分辨率224->448。只训visual encoder。200万的Image Captioning数据。
- 训练压缩模块+visual encoder。LLM不动,Image Captioning数据+OCR数据
其他tricks
- 数据重新描述。使用GPT优化描述
- 数据打包。所有的数据打包到一个固定的长度。加快预训练2-3倍。
- 语言泛化能力。只在中文和英文语言上训练。然后通过多语言的监督微调对齐到目标语言。
有监督微调SFT
使用GPT标注问答数据,训练所有模块。数据主要为高质量的视觉问答。
数据分为2部分。一部分增强模型基础识别能力,短句子为主。一部分增强模型细节、跟随人类指令能力。
RLAIF-V对齐
- 问政策、法规之类的问题。然后让模型产出10个响应。
- 分治思想。将响应拆分几个部分。每一个不问问一个LLM,让LLM去打分。最后综合打分得到响应的结果。
- 使用DPO优化,利用6K个对齐数据集。成对样本优化。
端边部署
主要的挑战在于,内存限制、CPU、GPU的算力限制。
常用的策略为量化。fp16 16-17G、int4大约5G。部署框架上,cpu还是慢,小米8为例,一个tokens1.3s。
高级策略
- 内存优化。序列内存占用。先vit encoder,再LLM。45->31s
- 编译优化。在对应的设备上进行编译。50->17。1.3->3.2
- 配置优化,自动在对应的设备上选择最优的配置参数,3.2->8.2
- NPU优化,使用NPU做vit encoder。encoders时间3.7->1.3
当前主要消耗的时间在LLM的预填充。也就是img encode+text encode
实验
不同的系列
benchmark选择了通用、OCR以及幻觉相关
通用能力
OCR能力
多语言很好
语言正则化效果显著
不同的分辨率
幻觉减弱
对齐相关:
https://blog.csdn.net/v_JULY_v/article/details/134242910