【MLLM系列】MiniCPM-V

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=WvHvWIHI。在得到总共的patch数N后,需要选择合适的 m , n m,n m,n,且 N = m ∗ n N=m*n N=mn。为了得到合适的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
<think>好的,用户想了解Dify、Ollama和MiniCPM-V相关的技术文档、教程和帮助。首先,我需要确认这些技术之间的关系和各自的用途。 Dify看起来是一个AI应用开发平台,可能支持集成不同的模型。Ollama是运行大型语言模型的工具,而MiniCPM-V是具体的多模态模型,特别是图像识别方面。用户可能是在尝试将MiniCPM-V通过Ollama部署到Dify平台上,或者想了解如何结合使用这些工具。 接下来,我需要根据提供的引用内容来组织信息。引用[1]提到MiniCPM-V2_6适用于手机上的图像识别,类似于GPT-4V。引用[2]给出了Ollama运行该模型的命令。引用[3]虽然关于YOLOX,但可能用户误贴,不过YOLOX的目标检测可能与MiniCPM-V的图像识别有联系,但暂时不考虑。 用户的问题主要集中在技术文档、教程和帮助上,所以需要分别针对Dify、Ollama和MiniCPM-V提供资源链接和使用步骤。同时,可能涉及如何将模型集成到Dify中,使用Ollama作为后端。 需要确保回答结构清晰,分点说明每个技术的资源,并给出示例命令或步骤。还要生成相关问题,帮助用户深入探索可能的需求,比如部署问题、API集成、性能优化等。 最后,检查是否符合格式要求:使用中文,数学表达式正确,引用标识正确添加,代码块格式正确,相关问题部分合理。</think>### Dify、Ollama 与 MiniCPM-V 技术集成指南 #### 1. **Dify 技术文档与教程** Dify 是一个开源的 AI 应用开发平台,支持快速集成大语言模型(LLM)和多模态模型(如 MiniCPM-V)。以下是关键资源: - **官方文档**:提供模型部署、API 配置、应用开发流程等,涵盖从基础到进阶的操作[^1]。 - 链接:[Dify 文档中心](https://docs.dify.ai/) - **核心功能**:支持模型微调、Prompt 工程、数据管理,可结合 Ollama 本地部署的模型(如 MiniCPM-V)实现端到端应用开发。 --- #### 2. **Ollama 运行 MiniCPM-V 的步骤** Ollama 是本地运行 LLM/MLLM 的工具,通过命令行直接调用模型: ```bash # 拉取并运行 MiniCPM-V2.6 模型(需确认模型名称是否匹配) ollama run aiden_lu/minicpm-v2.6:Q4_K_M # 引用[2] ``` - **常见问题**: - 模型兼容性:需检查 Ollama 支持的模型格式(如 GGUF 量化版本)。 - 性能优化:使用 `Q4_K_M` 等量化参数平衡速度与精度[^2]。 --- #### 3. **MiniCPM-V 多模态能力** MiniCPM-V 是面向移动端优化的多模态模型,特点包括: - **功能**:支持单图/多图/视频理解,性能对标 GPT-4V。 - **部署场景**:适用于手机端图像分类、目标检测(可结合 YOLOX 等框架增强检测能力[^3])。 --- #### 4. **集成示例:Dify + Ollama + MiniCPM-V** 1. **本地部署 Ollama 服务**:确保模型已下载并运行。 2. **Dify 配置模型接口**:在 Dify 后台添加 Ollama 的 API 地址,绑定 MiniCPM-V 模型。 3. **构建应用**:通过 Dify 可视化界面设计多模态 AI 应用(如图像问答系统)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一夜了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值