VLM 系列——MiniCPM-Llama3-V 2.5——论文解读

32 篇文章 11 订阅 ¥89.90 ¥99.00

一、概述

1、是什么

     是一款面向终端设备的多模态大型语言模型(MLLM),论文全称《 MiniCPM-V: A GPT-4V Level MLLM on Your Phone 》,它专注于实现在手机等资源受限设备上的高级AI功能,参数8B(llama3 7B + SigLIP ViT-400m/14 + 视觉标记压缩层 )。该模型能够处理包括文本、图像在内的多种数据类型,具备图片描述、图文问答等功能 (论文没有提到代码、json格式、函数调用和多图能力,目前20240809官方已经更新了2.6版本,但是没有更新论文,按照2.5的时间估计论文得年底了)。

2、亮点

    主要是是端侧推理和增强OCR能力,具体如下:
  • 高效的语言理解与生成:高效的终端部署,系统地整合了一系列终端优化技术,包括量化、内存优化、编译优化和NPU加速,实现了在终端设备上的高效部署(4bit 6G 占用,吞吐)。
  • 强大的光学字符识别(OCR)能力: 任何纵横比下的180万像素高分辨率 (例如1344×1344)图像感知技术, 在OCRBench上超越了GPT-4V、Gemini Pro和Qwen-VL-Max。表格转Markdown转换和完整的OCR内容转录。
  • 多语言支持: 高质量的多语言多模态指令调整帮助MiniCPM-Llama3-V 2.5将其多模态能力推广到30多种语言。
  • 值得信赖的行为:基于RLAIF-V和RLHF-V技术,通过AI/人类反馈对MLLM行为进行对齐,在Object HalBench上比GPT-4V-1106实现了更低的幻觉率。
  • 开源。

PS

    MiniCPM-V模型的提出,为在移动设备上部署高性能AI模型提供了新的可能性。论文中关于模型压缩、多语言支持和端侧优化的策略,对于相关领域的研究者和开发者具有重要的参考价值。
    整体模型结构是比较常规,重点关注一下高分辨率图像的处理方式和三阶段预训练+微调和强化学习。
    当官方放出论文的三天后2.6版本已经开源了,所以建议尝试2.6,但估计论文又要几个月后了。

二、模型

    1、模型结构

    由三部分组成:视觉编码器、压缩层、大语言模型,一共8B参数。具体如下:

    视觉编码器

    采用SigLIP SoViT-400m/14,将输入图像转换为视觉标记。
    这里需要注意,图片的分割方式,如上面figure3 a 首先有一张完整的原图直接进行缩放,然后根据如下公式来匹配最终要切成几个子图( 为了处理具有不同纵横比的原始高分辨率图像,将 图像分割成切片,每个切片在分辨率和纵横比方面更好地匹配ViT的预训练设置,并且有利于处理密集的文本任务)。 给定一个分辨率为(WI, HI)的图像,和一个在分辨率为(Wv, Hv)的图像上预训练的ViT:
    1)计算理想切片数量: N = ⌈WI×HI / (Wv×Hv)⌉,这里 是向上取整的意思。
    2)从集合CN = {(m, n)|m × n = N, m ∈ N, n ∈ N}中选择行数n和列数m的组合,选择策略:
    

 

    注意这里有两个限制:
    *当N 大于10的的时候按照10算。
    *当N是质数的时候,也就是m=N、n=1 或者m=1、n=N, 将N进行扩展,变为N-1、N、N+1,目的是上面是强制向上取整,这样更好的找到一个分割方式。

    压缩层

    具有一层交叉注意的感知器重采样结构,其中包含96个可学习的query,将每个图像切片 1024个token 压缩成96个,大大降低token数。(注意如果图像产生了1个总图+9个分图共10个切片,那么将需要96*10=960 个token输入LLM)

    大语言模型

    采用Llama3-8B-Instruct,接收压缩后的视觉和文本标记,生成输出。这里注意后面数据标签部分提到的对图片token的特殊处理方式。

    2、模型亮点

    自适应视觉编码:能够处理高达1.8M像素的高分辨率图像,适应任意纵横比。
    多语言支持:基于VisCPM的多语言泛化方法,显著提升了模型对低资源语言的支持。
    端侧优化:通过量化、内存优化等技术,实现了在终端设备上的高效部署。

    PS

    这里面有一点我也没看太懂,就是“2D Positional Embedding Interpolation”,如果按照figure3 来说就是输入vit 的分辨率可能与训练时不同,所以需要这个技术来对图片的2D位置编码做差值。但是论文的“slice encoding”部分说每个切片编码成1024个token,然后压缩成96,这不就是直接将切片resize 448*448 就不需要“2D Positional Embedding Interpolation”了,这点存疑吧,因为已经出了2.6版本,后续看2.6怎么做吧,这里就不深究了。

三、数据

    分为三个阶段数据,对应三阶段的训练:pre-train(又分为3个阶段)、SFT、RLAIF-V。

    1、数据标签

     为了指示每个切片相对于整个图像的位置,额外引入了一个空间标记:首先用两个特殊标记 <slice> 和<\slice>包装每个切片的标记,然后使用特殊标记“\n”分隔不同行的切片。参见figure 3。

    2、数据构成

     Pre-train

      SFT

    将SFT数据分为两部分。 这两部分数据被串联并顺序输入到模型中。
    *第一部分专注于增强模型的基本识别能力,包括:传统QA/字幕数据集,这些数据集的响应长度相对较短,有助于增强模型的基本识别能力。
    *第二部分旨在提高它们在生成详细响应和遵循人类指令方面的高级能力,包含:具有长响应和复杂交互的数据集,无论是在文本还是多模态上下文中。
    

    RLAIF-V

    论文没有提及原始数据从哪里获得。    

    3、数据清洗

    pre-train

    标题重写。来自网络的图文对可能存在标题数据质量问题,包括内容不流畅、语法错误和重复词语。这些低质量数据会导致训练过程不稳定。为了解决这个问题,引入了一个辅助模型用于低质量标题重写。重写模型以原始标题为输入,将其转换为问答对。这个过程中的答案被采用为更新后的标题。在实践中,利用 GPT-4 对少量种子样本进行标注,然后用这些样本微调一个大型语言模型(LLM)以完成重写任务。
    数据打包。来自不同数据源的样本通常具有不同的长度。样本长度在批次间的高差异性会导致内存使用效率低下和内存溢出(OOM)错误的风险。为了解决这个问题,将多个样本打包成一个固定长度的序列。通过截断序列中的最后一个样本,确保序列长度的一致性,从而实现更稳定的内存消耗和计算效率。同时,修改了位置标识和注意力掩码,以避免不同样本之间的干扰。在实验中,数据打包策略可以在预训练阶段带来2到3倍的加速效果。

    SFT

    多语言泛化。跨多种语言的多模态能力对于服务更广泛的用户群体至关重要。传统的解决方案涉及大量的多模态数据收集和清洗,并针对目标语言进行训练。幸运的是,VisCPM 最近的研究表明,通过一个强大的多语言LLM中枢,可以高效地实现多模态能力在不同语言间的泛化。这种解决方案在很大程度上减轻了对低资源语言中多模态数据的重度依赖。在实践中,仅在英中文多模态数据上预训练模型,然后进行轻量但高质量的多语言监督微调以对齐目标语言。尽管方法简单,我们发现最终的 MiniCPMLlama3-V 2.5 在超过30种语言中表现良好,与显著更大的多语言大模型(MLLM)相比也有竞争力。 整合了最近Cauldron数据集中的200万数据进行多模态知识增强,以及涵盖36种语言的90万多语言数据,以增强多语言对话能力。

    RLAIF-V

    本质是从开源模型获得可扩展的高质量反馈,以进行直接偏好优化(DPO)。论文中分了三个步骤:响应生成、反馈收集、直接偏好优化。这三步合起来叫做RLAIF-V,其实对应到训练和数据的话,其实响应生成、反馈收集、算是数据清洗,直接偏好优化算是训练的第三步。这里不再严格排版区分。
    *响应生成。RLAIF-V的第一步是使用策略模型为给定指令生成多个响应。具体来说,对于等待对齐的模型M,我们使用高温度的采样解码从M中采样10个响应Y = {y1, y2, ..., yn}。使用策略模型M进行响应生成有几个好处:(1) 反馈收集和学习可以更好地关注可信度,因为避免了来自多个MLLM的不同文本风格。(2) 反馈学习更加高效,因为偏好是直接在策略模型的分布上收集的。
    *反馈收集。从开源MLLM收集高质量反馈可能具有挑战性,因为它们通常比专有模型的能力要弱。为了解决这个问题,RLAIF-V使用分而治之的策略对响应进行评分。具体来说,每个响应yi被Llama-3 8B分割成原子声明Ci = {c1, c2, ..., cm},其中原子声明的正确性更容易评估。然后,我们通过将每个声明转换为是非问题,并使用开源MLLM对每个声明进行评分来验证声明。在实践中,我们采用OmniLMM 12B对MiniCPM-V 2.0进行评分,采用LLaVA-NeXT-Yi 34B对MiniCPM-Llama3-V 2.5进行评分。响应yi的最终得分si由−nrej给出,其中nrej是无效原子声明的数量。
    *直接偏好优化。在收集到高质量的AI反馈后,我们通过DPO方法进行偏好学习。DPO算法需要在偏好对上进行训练,其中一个样本yw比另一个样本yl更受偏好。为了组成偏好数据集,我们从每个响应集Y = {y1, y2, ..., yn}中随机采样对,并根据它们的相对得分确定(yw, yl)。最后,我们构建了一个由3000个独特图像组成的6000个偏好对的偏好数据集,用于偏好学习。

四、策略

    1、训练过程

    这篇论文发布的时候经历的三个版本,如下表(其实三天后就又有了2.6版)。
    

    接下来主要介绍MiniCPM-Llama3-V 2.5版本,分为三个阶段:pre-train(又分为3个阶段)、SFT、RLAIF-V。

    pre-train

    使用大规模的图像-文本对进行MLLM预训练。这个阶段的主要目标是将视觉模块(即视觉编码器和压缩层)与LLM的输入空间对齐,并学习基础的多模态知识。预训练阶段进一步细分为三个阶段。
    阶段-1
    模型: 随机初始化压缩层,并在此阶段训练这个模块,同时保持其他参数冻结。视觉编码器的分辨率设置为224×224,与视觉编码器的预训练设置相同。
    数据:从表1中的图像字幕数据中随机选择200M数据。执行数据清洗以去除相关性差和格式不良的文本数据,确保数据质量。
    阶段-2
    模型: 整个视觉编码器被训练,而其他参数保持冻结。 将图像分辨率从224×224扩展到448×448。
    数据:另外从表1中的图像字幕数据中选择200M数据。
    阶段-3
    模型:压缩层和视觉编码器都被训练以适应语言模型嵌入空间。LLM被保持冻结,以避免相对低质量的预训练数据造成的干扰。
    数据:与之前阶段仅有图像字幕数据不同,在高分辨率预训练阶段,使用自适应视觉编码策略训练视觉模块,这可以进一步适应任何纵横比的高分辨率输入。另外引入OCR数据以增强视觉编码器的OCR能力。

    SFT

     在高质量的视觉问题回答数据集上执行超级微调(SFT),以进一步从人工注释中学习知识和交互能力。
    模型: 解锁了所有模型参数,以更好地利用数据,在SFT阶段学习丰富的知识。
    数据: 使用由人工标注者或像GPT-4这样的强模型注释的高质量数据集。 这两部分数据被串联并顺序输入到模型中。

    RLAIF-V

    参考数据清洗部分RLAIF-V的第三步,就是DPO,我这里为了看着方便直接复制一遍。不包含响应生成、反馈收集。
     直接偏好优化。在收集到高质量的AI反馈后,我们通过DPO方法进行偏好学习。DPO算法需要在偏好对上进行训练,其中一个样本yw比另一个样本yl更受偏好。为了组成偏好数据集,我们从每个响应集Y = {y1, y2, ..., yn}中随机采样对,并根据它们的相对得分确定(yw, yl)。最后,我们构建了一个由3000个独特图像组成的6000个偏好对的偏好数据集,用于偏好学习。
    这里作者没有说优化哪部分参数,应该是和SFT一样,解锁全参数。

    2、推理过程

     这里除了参看git 的服务器端推理,这篇论文模型的重点是手机端部署。主要受限于手机内存和推理能力限制。综合使用了:量化、内存使用优化、编译优化、配置优化和NPU加速。
    *模型量化:对于MiniCPM-Llama3-V 2.5,其fp16版本模型通常需要16~17GB的内存。我们选择在GGML4框架内使用4位量化策略Q4_K_M,这将内存需求降低到大约5GB。
    *CPU内存使用优化:不是同时将ViT和LLM加载到内存中,而是采用顺序加载方法。具体来说,我们首先加载ViT进行视觉编码,然后加载LLM进行视觉和文本标记编码。通过释放LLM占用的大量内存,我们可以防止在ViT编码期间频繁的分页(换入和换出),从而提高程序效率。
    *CPU编译优化:编译与目标设备指令集架构之间的更好一致性。
    *CPU配置优化:单一的默认配置llama.cpp框架可能对多样化的终端设备并不都是最优的。为了最大化推理速度,我们设计了一个自动参数搜索算法,动态确定最合适的配置(例如,在不同CPU核心上的计算分配)。
    *NPU加速:尽管GPU有潜力,但在实验中发现,目前的手机GPU框架并没有优化或兼容到足以超过CPU的结果。作为替代,转向NPU(神经处理单元),将ViT的后端框架替换为QNN,同时保留LLM组件的llama.cpp后端。
    

五、结果

1、多维度对比

在流行的基准测试上进行全面评估,涵盖视觉问题回答、多模态对话、知识与推理、OCR和幻觉等方面,分为三大方向:通用基准测试、OCR基准测试、幻觉基准测试。对比模型涵盖开源模型和专有模型。

通用多模态基准测试

(1) 在OpenCompass基准测试上以显著的优势超越了其他开源模型。还取得了比其他更大模型如Cambrian-34B、LLaVA-NeXT-Yi-34B、Yi-VL-34B更好的结果。
(2) 在Object HalBench上还实现了比GPT-4V-1106更低的幻觉率,表明其在现实世界应用中的可信度。
(3) 较小的MiniCPM-V 2.0(2B参数)与其他2B~3B模型相比,取得了显著更好的性能,甚至与基于Llama3的8B MLLMs如Bunny-Llama-3-8B相当。

OCR基准测试结果

在包括场景文本、文档和屏幕截图理解的OCR能力方面也表现出色。MiniCPM-Llama3-V 2.5在OCRBench、TextVQA和DocVQA上超越了1.7B~34B范围内的开源MLLM,并且与GPT-4V-1106和Gemini Pro等专有模型表现相当。

多语言多模态能力

在多语言LLaVA Bench上超越Yi-VL 34B和Phi-3-vision 128k-instruct,这使得MiniCPM-Llama3-V 2.5对于服务使用不同语言的更广泛群体非常有用。

总结

与其他基于Llama-3的模型的比较。从表4的实验结果中,我们可以观察到:
(1) MiniCPM-Llama3-V 2.5在所有基准测试中都以较大的优势超越了其他基于Llama-3的模型。例如,与强大的LLaVA-NeXT-Llama-3-8B相比,MiniCPM-Llama3-V 2.5在所有基准测试中持续取得了更好的结果。
(2) 此外,值得注意的是,MiniCPM-Llama3-V 2.5所需的推理计算显著减少。例如,MiniCPM-Llama3-V 2.5的视觉标记数量范围是(96, 960),低于LLaVA-NeXT-Llama-3-8B的(1728, 2880)。这对于实际终端应用在推理速度、首标记延迟、内存使用和功耗方面尤为重要。

2、消融实验

主要做了两个消融实验:RLAIF-V和多语言训练。

RLAIF-V的影响

可以观察到RLAIF-V有效地降低了基础模型在响应级别和提及级别的幻觉率。这使得模型在行为上更加可信。重要的是,降低幻觉并没有牺牲模型的一般能力。相反,RLAIF-V在11个基准测试的平均值上进一步将OpenCompass的整体性能提高了0.6个百分点。

多语言泛化

研究了多语言泛化技术的必要性和有效性。使用不到0.5%的多语言SFT数据后,所有语言的性能都提高了25分以上。结果表明,多语言泛化方法可以有效地提高多语言能力,同时保持良好的数据和计算效率。此外,我们注意到不同语言之间的性能提升是不均匀的。我们假设改进程度可能与多种因素有关,例如基础LLM对给定语言的能力。我们将更系统的探索留作未来的工作。

六、使用方法

参见官方git

七、待解决

提高模型在深度和广度方面的能力,并改进智能手机芯片和部署框架。

八、参考链接

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TigerZ*

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

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

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

打赏作者

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

抵扣说明:

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

余额充值