MiniCPM-V: A GPT-4V Level MLLM on Your Phone 手机上的 GPT-4V 级多模态大模型

news2024/9/26 5:17:04

GitHub - OpenBMB/MiniCPM-V: MiniCPM-V 2.6: A GPT-4V Level MLLM for Single Image, Multi Image and Video on Your Phone

2408.01800 (arxiv.org)

目录

Introduction

Model Architecture

Training

End-side Deployment


MiniCPM-V是一种高效的多模态大型语言模型,可在移动设备上部署。它在单图、多图和视频理解方面表现出色,超越了GPT-4V,并且在单图理解方面优于GPT-4o mini、Gemini 1.5 Pro和Claude 3.5 Sonnet。这是首次能够在iPad等终端设备上实时支持视频理解!代码已开源,由面壁智能提供。

-------------------------------------------

近期,多模态大语言模型(MLLM)的兴起对AI研究和行业产生了重要影响,并为实现下一个AI里程碑指明了方向。然而,MLLM仍存在一些挑战,限制其广泛应用于实际场景中。其中最主要的挑战来自运行具有大量参数和计算需求的MLLM所带来的巨大成本。因此,许多MLLM需要部署在高性能云服务器上,从而限制了它们在移动、离线、低功耗以及隐私保护场景中的应用范围。基于此,在本研究中我们提出了MiniCPM-V系列,这是一种可以高效运行于终端设备上的MLLM模型集合体系结构。最新版本MiniCPM-Llama3-V 2.5整合了最先进的MLLM技术包括架构设计、预训练方法以及对齐策略,并具有以下几个显著特点:(1)强劲性能,在11个流行基准测试中OpenCompass表现优于GPT-4V-1106、Gemini Pro和Claude 3;(2)卓越OCR功能以及对任意宽高比下180万像素高分辨率图像感知;(3)可靠性强且幻觉率低;(4)支持30多种语言;(5)适用于手机等终端设备进行高效部署。更重要的是,MiniCPM-V代表着一个有希望发展趋势:随着终端计算能力快速增长,在不久之后将会出现类似规模更小但与GPT-4V相当性能水平的MLLM部署到终端设备上变得越来越可能,并将推动人工智能技术更广泛地应用于真实世界场景。

Introduction

MiniCPM-V Series Techniques. In this paper, we will take the latest MiniCPM-Llama3-V 2.5 as an example, and systematically introduce the notable features of MiniCPM-V series and the key techniques behind them:

• Leading Performance. MiniCPM-Llama3-V 2.5 achieves better performance than GPT-4V-1106, Gemini Pro and Claude 3 on OpenCompass collection, a comprehensive evaluation over 11 popular benchmarks. This is jointly contributed by its careful design in architecture, data and training recipes, which we will detail in the following. 

性能卓越。在 OpenCompass 集合上,MiniCPM-Llama3-V 2.5 在涵盖 11 个流行基准的综合评估中,其性能优于 GPT-4V-1106、Gemini Pro 和 Claude 3。这一成果得益于其在架构、数据和训练配方方面的精心设计。

• Strong OCR Capability. MiniCPM-Llama3-V 2.5 outperforms GPT-4V, Gemini Pro and Qwen-VL-Max on OCRBench. It also supports high-utility functions such as table-to-markdown conversion and full OCR content transcribtion. These are largely attributed to the 1.8M pixel high-resolution (e.g., 1344 × 1344) image perception technique across any aspect ratios [107].

OCR能力强大。MiniCPM-Llama3-V 2.5 在 OCRBench 上的表现优于 GPT-4V、Gemini Pro 和 Qwen-VL-Max。它还支持高实用性功能,如表格到 Markdown 的转换和完整的 OCR 内容转录。这些能力主要归功于其跨任何纵横比的 180 万像素高分辨率(例如 1344x1344)图像感知技术。

• Trustworthy Behavior. Based on the RLAIF-V [112] and RLHF-V [111] techniques that align MLLM behaviors from AI/human feedback, MiniCPM-Llama3-V 2.5 exhibits more trustworthy behaviors, achieving lower hallucination rates than GPT-4V-1106 on Object HalBench.

行为可信。基于从AI/人类反馈中调整多语言大型模型(MLLM)行为的RLAIF-V[112]和RLHF-V[111]技术,MiniCPM-Llama3-V 2.5 展现了更可信的行为,在Object HalBench上的幻觉率低于GPT-4V-1106。

• Multilingual Support. Inspired by the findings from VisCPM [41], the integration of multilingual LLM significantly alleviates the heavy reliance on multimodal training data in low-resource languages. Based on the foundation, a high-quality multilingual multimodal instruction tuning helps MiniCPM-Llama3-V 2.5 generalize its multimodal capabilities to more than 30 languages.

• 支持多语言。受VisCPM[41]研究成果的启发,集成多语言大型语言模型(LLM)显著减轻了低资源语言对多模态训练数据的严重依赖。基于这一基础,高质量的多语言多模态指令调整帮助MiniCPM-Llama3-V 2.5将其多模态能力推广到30多种语言。

• Efficient End-side Deployment. We systematically integrate a suite of end-side optimization techniques, encompassing quantization, memory optimization, compilation optimization and NPU acceleration, enabling efficient deployment on end-side devices.

终端部署高效。系统地集成了一套终端优化技术,包括量化、内存优化、编译优化和NPU加速,从而实现了在终端设备上的高效部署。

Model Architecture

  1. 模型总体结构
    • 视觉编码器:采用SigLIP SoViT-400m/14作为视觉编码器,负责将输入图像进行编码。
    • 压缩层:通过具有一层交叉注意力的感知器重采样结构,对视觉标记进行压缩。
    • LLM:将压缩后的视觉标记与文本输入一起送入大语言模型,进行条件文本生成。
    • 平衡目标:MiniCPM-V系列的设计哲学是在性能和效率之间实现良好平衡,以满足更广泛的现实世界应用需求。
  2. 自适应高分辨率视觉编码
    • 视觉编码的重要性:视觉编码在MLLM性能中扮演关键角色,特别是对于OCR等细粒度能力。
    • 图像分区:根据输入图像的分辨率和ViT的预训练设置,计算并选择合适的图像分区,以匹配ViT的预训练分辨率和宽高比。
    • 切片编码:通过调整每个切片的大小和插值ViT的位置嵌入,使切片更好地适应ViT的预训练设置。
    • 标记压缩:利用压缩模块将每个切片的视觉标记压缩成更少的查询,减少GPU内存消耗,提升推理速度和首令牌延迟。
  3. 空间模式
    • 切片位置表示:引入空间模式,通过特殊标记<slice><\slice>包装每个切片的标记,并使用特殊标记\n分隔不同行的切片,以指示每个切片相对于整个图像的位置。
  4. 模块间交互
    • 编码与压缩:视觉编码器生成的视觉标记经过压缩层压缩后,与文本输入一同被送入LLM进行后续处理。
    • 高效处理:通过优化视觉编码和标记压缩,MiniCPM-V能够在保证性能的同时,实现高效的资源利用。
  5. 设计优势
    • 灵活性:自适应视觉编码方法能够处理不同分辨率和宽高比的输入图像。
    • 效率:显著减少的视觉标记数量使MiniCPM-V在GPU内存消耗、推理速度等方面具有优势。
    • 实用性:平衡性能与效率的设计哲学使MiniCPM-V适用于更广泛的设备和场景。

Training

MiniCPM-V模型的训练过程,主要包括三个关键阶段:预训练(Pre-training)、监督微调(Supervised Fine-tuning)和基于反馈的学习(RLAIF-V)。以下是详细总结:

  1. 预训练(Pre-training)
    • 阶段一(Stage-1):目标是初步训练压缩层,连接视觉编码器和LLM。通过随机初始化和训练压缩层,同时保持其他参数冻结,使用200M的图像描述数据进行训练。视觉编码器分辨率设为224x224,与预训练设置相同。
    • 阶段二(Stage-2):扩展预训练视觉编码器的输入分辨率,从224x224提升到448x448。此阶段仅训练视觉编码器,保持其他模块参数冻结,并再次使用200M图像描述数据。
    • 阶段三(Stage-3):采用自适应视觉编码策略训练视觉模块,以适应任意纵横比的高分辨率输入。同时训练压缩层和视觉编码器,LLM保持冻结。引入OCR数据增强视觉编码器的OCR能力。
    • 辅助技术:引入低质量标题重写模型和数据打包策略。标题重写模型用于改善网络数据的质量,数据打包策略则提高内存使用效率和计算效率。
  2. 监督微调(Supervised Fine-tuning)
    • 训练目标:在高质量视觉问答数据集上进一步学习知识和交互能力。
    • 可训练模块:解锁所有模型参数,以充分利用高质量数据。
    • 数据分类:将微调数据分为两部分:Part-1注重提升基础识别能力,包括短回答的数据集;Part-2则旨在增强生成详细响应和遵循人类指令的能力,包括长回答和复杂交互的数据集。
    • 多语言泛化:通过轻量级但高质量的多语言监督微调,实现跨语言的多模态能力。
  3. 基于反馈的学习(RLAIF-V)
    • 目标:解决MLLMs中的幻觉问题,即生成未基于输入图像的事实性响应。
    • 方法:采用RLAIF-V框架,通过从开源模型获取可扩展的高质量反馈,进行直接偏好优化(DPO)。
    • 步骤
      • 响应生成:使用策略模型为给定指令生成多个响应。
      • 反馈收集:以分而治之的方式评估每个响应的正确性。
      • 直接偏好优化(DPO):在偏好数据集上优化模型。
  4. 训练效果与数据增强
    • 在MiniCPM-Llama3-V 2.5中,集成了2M的Cauldron数据集用于多模态知识增强,以及90K多语言数据以提升多语言对话能力。
    • 通过上述训练流程,MiniCPM-V系列模型在GPU内存消耗、推理速度、首令牌延迟和功耗方面表现出色,具有广泛的应用前景和社区友好性。

End-side Deployment

MiniCPM-V在终端设备上的部署情况,包括面临的挑战、基本实践、高级实践以及部署结果。以下是详细总结:

  1. 部署挑战
    • 内存限制:高性能服务器通常具有超过100GB甚至1TB的内存容量,而智能手机的内存通常在12GB到16GB之间,这对于部署大型MLLM(多模态大语言模型)来说可能不足。
    • CPU/GPU速度限制:智能手机CPU的处理速度远低于高性能服务器,且GPU性能也较弱。例如,Snapdragon 8Gen3拥有8个CPU核心,而Intel Xeon Platinum 8580拥有60个CPU核心;Qualcomm Adreno 750 GPU仅具有6TFLOPS,而NVIDIA 4090 GPU可达到83TFLOPS。
  2. 基本实践
    • 量化技术:采用量化技术减少内存消耗。通过统一缩放因子将多个权重压缩到更窄的范围内,并进行离散化。对于MiniCPM-Llama3-V 2.5,使用GGML框架的Q4_K_M模式(4位量化策略),将内存需求从约16~17GB减少到约5GB。
    • 部署框架:针对不同芯片类型(CPU、GPU、NPU)选择不同的部署框架。由于CPU在设备中的普及性,优先使用llama.cpp框架。
  3. 高级实践
    • 内存使用优化:通过顺序加载ViT和LLM到内存中,避免在ViT编码期间因内存不足导致的频繁分页,从而提高了程序效率。这一优化显著减少了图像处理时间。
    • 编译优化:直接在目标设备上编译模型可以显著改善编码延迟和解码吞吐量。这归因于编译与目标设备指令集架构之间的一致性提高。
    • 配置优化:自动参数搜索算法动态确定最适合的配置(如不同CPU核心上的计算分配),显著提高了解码吞吐量。
    • NPU加速:利用NPUs(神经网络处理单元)加速视觉编码,特别是在智能手机上,显著减少了视觉编码时间。
  4. 部署结果
    • 实验设备:在Xiaomi 14Pro(Snapdragon 8Gen 3)、vivo X100Pro(Mediatek Dimensity 9300)和Mac M1上进行了测试。
    • 性能评估:优化后的MiniCPM-Llama3-V 2.5在不同设备上均表现出良好的性能和用户友好的延迟。特别是,利用NPU的Xiaomi 14Pro在编码速度上与Mac M1相近,且所有设备的解码吞吐量均达到或超过人类阅读速度。
  5. 讨论
    • 计算瓶颈:当前计算瓶颈主要来自LLM预填充,即图像和文本令牌的编码。未来研究可以集中在开发更有效的视觉编码方法和更好地利用GPU/NPU加速LLM编码。
    • 未来展望:随着对终端MLLM的关注增加和GPU/NPU加速技术的快速发展,预计很快可以实现与终端MLLM的实时交互。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1988909.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】常用指令集合

目录 1.who&#xff1a;查看使用云服务器的账号 2.pwd&#xff1a;显示当前所处的工作目录 3.ls&#xff1a;列出当前目录中的文件和子目录 ls 查看目录中的文件和子目录 ls -l 或者 ll 显示文件和目录的详细信息 ls -a 列出全部文件&#xff0c;包含隐藏文件 4.cd&#xf…

新火种AI|ChatGPT架构师突然离职!OpenAI为什么总留不住大佬和高手?

作者&#xff1a;小岩 编辑&#xff1a;彩云 8月6日&#xff0c;OpenAI内部再次传出人员大地震的消息。 根据Information的消息&#xff0c;OpenAI的联合创始人John Schulman突然官宣离职&#xff0c;而他要跳槽去的地方正是OpenAI的老冤家老对手——Anthropic。与此同时&am…

remote: Support for password authentication was removed on August 13, 2021.

remote: Support for password authentication was removed on August 13, 2021. 2021年8月13日 github修改了验证的方法&#xff0c;相关的密码不能够直接输入&#xff0c;需要通过相关的秘钥token进行输入。 因此我们需要在自己的账户生成对应的token才可以正常的在本地push对…

python-报数(赛氪OJ)

[题目描述] 有 n 人围成一圈&#xff0c;顺序排号。 从第 1 个人开始报数&#xff08;从 1 到 3 报数&#xff09;&#xff0c;凡是报到 3 的人退出圈子&#xff0c;问最后留下的是原来的第几号的那位。输入格式&#xff1a; 初始人数 n 。输出格式&#xff1a; 最后一人的初始…

在Jmeter中通过正则提取表达器和BeanShell提取器将接口返回的结果写入到指定txt文件中

jmeter 把响应结果数据写入到指定文件_jmeter输出返回结果到文件-CSDN博客 上面是参考链接 1、如图所示&#xff0c;需要在jmeter中将所有接口中返回的响应数据写入到指定的文件中 2、选择需要的接口右击-添加-后置处理器-正则表达式提取器&#xff1b; 3、在正则表达式提取器…

1.mysql-DDL-数据库操作

DDL-数据库操作定义语言 DML-数据库操作语言 DCL-数据库控制语言 DQL-数据库查询语言 DDL-数据库操作 DDL-数据库操作- 查询 查询所有数据 SHOW DATABASES;查询当前数据库 SELECT DATABASE();DDL-数据库操作- 创建 CREATE DATABSE [IF NOT EXISTS] 数据库名 [ DEFAULT CHA…

Haproxy搭建Web群集(群集)

HAProxy是一个使用C语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上&#xff0c;…

“订单循环激励:企业增长新引擎“

在当今竞争白热化的市场洪流中&#xff0c;如何独辟蹊径&#xff0c;让您的企业成为万众瞩目的焦点&#xff0c;吸引并留住海量用户的心&#xff1f;今天&#xff0c;让我们深入探索一种革命性的营销新策略——“订单循环激励模式”&#xff0c;它不仅能够激发用户的参与热情&a…

【大模型学习】快速下载大模型权重和评估大模型占用显存

一、下载模型 1.1 使用Hugging Face Hub下载模型 首先&#xff0c;我们需要设置环境变量以使用镜像站点加速下载。 主要要先安装相应的函数库&#xff1a; pip install huggingface_hub import os os.environ[HF_ENDPOINT] https://hf-mirror.com from huggingface_hub i…

【Redis】持久化机制最全解析

RDB持久化 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff09;。通过将Redis数据集的快照保存到磁盘上的二进制文件中来实现。生成 RDB 文件的过程可以通过手动命令或自动触发。 实现原理 开始 BGSAVE&#xff1a; Redis 主进程接收到 BGSAVE 命…

【数据结构】五、树:2.二叉树(完全二叉树、前中后序遍历)

二、二叉树Binary tree 文章目录 二、二叉树Binary tree1.逻辑结构1.1斜树1.2满二叉树❗1.3完全二叉树1.4排序二叉树BST1.5平衡二叉树AVL1.6线索二叉树 2.性质3.存储结构3.1顺序存储3.2链式存储 4.遍历4.1前序遍历4.1.1前序非递归方式 4.2中序遍历4.2.1中序非递归方式 4.3后序遍…

java 解析 PDF OFD 发票 部分文字缺失

1、pdfbox https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox 到这里用最新的版本 最近碰到发票各式各样&#xff0c;千奇百怪&#xff1a;记录其中一个 解析出来是&#xff1a;缺少一个通字 发票好几处都缺少文字&#xff0c;解析出来的是 一个 圆点 原因&…

赋能未来园区:TSINGSEE视频AI智能管理平台如何引领园区管理智慧化转型

一、建设背景 随着经济的不断发展&#xff0c;园区产业集聚发展已成为趋势&#xff0c;园区逐渐成为产业聚集的重要载体。目前&#xff0c;国内现有的大部分园区的管理方式比较粗放、单一&#xff0c;范围局限于安全、环境等方面且不成体系&#xff0c;并且没有覆盖到应急、消…

计算机网络408考研 2014

1 计算机网络408考研2014年真题解析_哔哩哔哩_bilibili 1 111 1 11

电脑怎么格式化清除所有数据

在出售、捐赠或维修电脑之前或需要处理敏感数据时&#xff0c;格式化硬盘并彻底清除所有数据还是很有必要的。本篇文章将详细介绍如何安全、彻底地格式化你的电脑。 一、准备工作 在开始格式化之前&#xff0c;有一些重要的准备工作需要完成。这些步骤为了能帮你顺利进行格式化…

Java并发编程——线程创建的4种常见方式

文章目录 一、继承 Thread 类创建创建线程类1.1 Thread 类解析1.2 使用方法1.3 优缺点 二、实现 Runable 接口创建线程类2.1 Runable 接口解析2.2 使用方法2.3 优缺点 三、使用 Callable 和 FutureTask 创建线程3.1 Callable 接口解析3.2 RunnableFuture 接口解析3.3 Future 接…

CV/NLP【面经】

CV/NLP【面经】 1x1conv的作用多头注意力与普通注意力的区别&#xff1a;过拟合怎么解决随机森林和GBDT的区别决策树是怎么做回归任务的注意力机制参数量和计算量 1x1conv的作用 1.首先我们需要明确卷积的输入输出不是一个平面&#xff0c;而是一个长方体。所以1x1conv实际上对…

CTFHUB-web-RCE-命令注入

开启题目 检查网页显示内容&#xff0c;可以直接看到源代码。大致意思是&#xff1a;检查用户输入的 GET 请求&#xff0c;判断用户是否输入了 ip 信息。如果输入了 ip 信息&#xff0c;则使用用户输入的这个 ip 数据执行一个 shell 命令 "ping -c 4" 。 在输入框中…

C语言----用指针数组构造字符串数组

用指针数组构造字符串数组 实例说明&#xff1a; 本实例实现输入一个星期中对应的第几天&#xff0c;可显示其英文写法。例如&#xff0c;输入“4”&#xff0c;则显示星期四所对应的英文名。 实现过程&#xff1a; (1)打开 Visual C 6.0开发环境&#xff0c;新建一个C源文件…

【Matlab】零阶保持法:连续状态空间方程(含噪声,非线性)离散化处理方法

常用的离散化方法&#xff1a;零阶保持器&#xff08;zero-order hold&#xff0c;ZOH&#xff09;、欧拉法&#xff08;Euler&#xff09;、一阶保持器&#xff08;First-order hold&#xff0c;FOH&#xff09;。最常用的是前两种。 0.零阶保持器&#xff08;ZOH&#xff09…