1. 简介
本文主要探索如何在性能和效果之间的权衡,希望能在合适的性能下,模型效果有大幅的提升。主要贡献点有:
- 通过模型结构,数据,训练策略等优化,让MiniCPM-Lllama3-V 2.5[1]在OpenCompass评测上超过了GPT-4V-1106,Gemini Pro和Claude3;
- 有很强的OCR能力,在1.8M任意分辨率图片数据的支持下,使MiniCPM-Llama3-V 2.5在OCRBench上超过了GPT-4V,Gemini Pro和Qwen-VL-Max。支持table到markdown等能力;
- 在RLAIF-V[3]和RLHF-V[2]技术加持下,让MiniCPM模型有更强的真实表现,幻觉问题低于GPT-4V-1106等;
- 支持多语言;
- 有效的端侧模型部署;
2. 模型
2.1 模型结构
- Adaptive Visual Encoding
- 一个好的视觉编码应该尽量保持原始输入的长宽比及视觉信息;
- Image Partition:假定一个图像分辨率为
(
W
I
,
H
I
)
(W_I,H_I)
(WI,HI),ViT预训练的图片分辨率为
(
W
v
,
H
v
)
(W_v,H_v)
(Wv,Hv),那么理想的patch数是
N
=
W
I
∗
H
I
W
v
∗
H
v
N=\frac{W_I*H_I}{W_v*H_v}
N=Wv∗HvWI∗HI。在得到总共的patch数N后,需要选择合适的
m
,
n
m,n
m,n,且
N
=
m
∗
n
N=m*n
N=m∗n。为了得到合适的m和n,可以通过下面的公式:
- Slice Encoding:因为可能截取的patch大小跟ViT输入size不一致,所以需要对每个patch按比例进行resize,然后对ViT的位置编码进行插值来适应patch的比例。
- Token Compression:在经过ViT之后,每个patch会得到1024个token。因为token太大,会使用perceiver resampler进行压缩。在MiniCPM V1和V2中token数被压缩到64个token,在MiniCPM-Llama3-V2.5中token数被压缩到96个token。
- Spatial Schema:用和<\slice>作为每个图的开始和结尾,图中每行用\n分割。
- ViT:使用SigLIP SoViT-400m/14作为ViT,从llava等模型的评测来看,目前使用这个是效果最好的。
- compression layer:perceiver resampler
- LLM:eg. llama3 or Qwen2
3. 训练
模型训练包括三个阶段,pre-training,supervised fine-tuning和RLAIF-V。
3.1 Pre-training
- Stage-1
- 目的和动作:训练compression layer,能连接visual encoder和LLM;随机初始化compression layer参数,固定住其他模块参数。
- 参数:ViT分辨率设置为224*224;
- 数据:随机选择200M caption数据,会执行数据清理,包括删除相关性差的图像-文本对和格式错误的数据。具体数据如下:
- Stage-2
- 目的和动作:增加预训练输入图片的分辨率,从224224到448448,仅训练visual encoder。
- 数据:从上表中选择200M的caption数据。
- Stage-3
- 目的和动作:为了适应不同高分辨率图片的比例,训练ViT和compression layer。
- 数据:使用OCR和caption数据
- Caption Rewriting:因为一些caption数据质量比较低,所以使用模型对caption进行改写。例如,GPT-4模型。
- Data Packing:将长度类似的sample放到一个sample中,增加模型的训练效率。同时需要修改position ids和attention mask策略避免不同样本之间互相干扰。
- Multilingual Generalization:在pretrain阶段仅使用english和chinese多模态数据进行训练,在sft阶段,通过high-quality multilingual supervised fine-tuning对齐到目标语言。VisCPM证明了多模态能力可以通过强大的LLM进行有效的泛化。
3.2 Supervised fine-tuning
- Trainable Modules:训练ViT,compression layer和LLM
- Data:
- 部分1: 增强模型的基本能力,包括短回复的传统的QA和caption数据;
- 部分2: 增强模型生成详细回复和指令遵循能力,包括长回复的复交交互数据。
- 在sft中,两部分数据会拼接起来,按顺序输入到模型中。
- 对MiniCPM-Llama3-V2.5来说,从Cauldron dataset中抽取2M数据用于知识增强,搜集36种语言共90K数据用于增强多语言能力。
3.3 RLAIF-V
为了缓解幻觉问题,增加模型的可靠性,搜集高质量的反馈数据用于DPO训练。
- Response Generation:用待对齐的模型对每个prompt生成10个response
- Feedback Collection:使用divide-and-conquer策略用于回复打分,每个回复会被llama3-8B分成多个claims,然后将每个claims转成qa问题用开源模型来打分,最后,用不合理的claims数的负数当作最后的response的分数。
- Direct Preference Optimization:构建了6K偏好数据
4. 结果
5. 总结
- 模型结构层面和llava类似,只不过connection layer一个是MLP,一个是perceiver resampler,但对模型效果影响不大;
- 预训练阶段仅训练vit和compression layer;
- 多语言能力仅靠LLM和sft阶段;
- 为了降低幻觉使用了RLAIF-V;
目前MiniCPM-V2.6已经发布了,有了更强的OCR,多语言,可靠性,因为目前technical report还没发布,技术细节还不清楚。
6. 参考文献
- [1] MiniCPM-V: A GPT-4V Level MLLM on Your Phone
- [2] RLHF-V: Towards trustworthy MLLMs via behavior alignment from fine-grained correctional human feedback
- [3] RLAIF-V: Aligning MLLMs through open-source AI feedback for super GPT-4V trustworthiness