4秒看完2小时电影,阿里团队新成果正式亮相——
推出通用多模态大模型mPLUG-Owl3,专门用来理解多图、长视频。
具体来说,以LLaVA-Next-Interleave为基准,mPLUG-Owl3将模型的First Token Latency缩小了6倍,且单张A100能建模的图像数目提升了8倍,达到了400张图片,实测4秒就能看完一部2小时的电影。
换句话说,模型的推理效率有了极大提升。
而且不牺牲模型的准确性。
mPLUG-Owl3还在多模态大模型所涉及的各种场景,包括单图、多图、视频领域的诸多Benchmarks上达到了SOTA。
论文作者来自阿里mPLUG团队,他们一直深耕多模态大模型底座,在此之前还提出了:
- 高效多模态底座mPLUG系列
- 模块化多模态大语言模型底座mPLUG-Owl系列
- 文档理解底座mPLUG-DocOwl系列
下面就让我们来了解一下本次发布的mPLUG-Owl3究竟带来了什么黑科技吧。
玩法解锁
团队展示了mPLUG-Owl3的几种常见用法。
多模态检索增强
一般来说,对于模型没有学过的知识,通过检索系统进行补充是常见的做法。这需要模型能准确理解传入的多模态知识,并用于解答问题。
在下面这个例子中,mPLUG-Owl3不仅能基于检索知识正确回复,还能给出它基于哪一条知识做出的判断,并且给出详细的判断依据。这对于下游研发人员开发和调试都是非常友好的。
检索部分:以下是为你检索到的几个多模态知识,供你做出决定。
提问:根据你对上面四张狗的照片的观察,你能对图片5中的狗进行分类吗?给出理由。
回答:根据对四张狗的照片的观察,图片5中的狗可以被归类为爱尔兰梗犬。图片1中的狗被描述为爱尔兰梗犬,图片5中的狗与图片1中的狗在身体特征上有相似之处……
多图推理
生活中经常会出现这样的情况——
很多用户并非只围绕一张图片进行对话,而是用户可能有几份材料,需要模型能正确理解不同材料中的内容的关系。
在下面这个例子中,mPLUG-Owl3能通过两张图像所见,激活语言模型的常识知识,并围绕两张图片进行推理。
提问:左边的动物能在右边的环境中存活吗?需要回答并给出解释。
回答(正确答案标绿):大意是,不能存活,因为环境太冷了。
在另一个例子中,mPLUG-Owl3不仅能察觉两张图片风格上的差异性,并且也能意识到两张图中的人物虽然风格不同,但其实是同一个角色。
第一次提问:图片中描绘了哪些艺术风格,它们有何不同?
回答:第一张是像素风,第二张是卡通风格……(给出理由)
第二次提问:在两幅画中都出现了谁?他们的特征是什么?
回答:在两幅画中,都出现了一个戴着牛仔帽的男人,他被两种不同的风格描绘。
长视频理解
观看超长视频是现在大部分模型都无法端到端完成的任务,若是基于Agent框架,则又难以保证响应速度。
mPLUG-Owl3能够看一部2小时电影,并且4秒就能开始回答用户的问题。
不管用户是对电影的开头、中间和结尾的非常细致的片段进行提问,mPLUG-Owl3都能对答如流。
咋做到的?
与传统模型不同,mPLUG-Owl3不需要提前将视觉序列拼接到语言模型的文本序列中。
换句话说,不管输入了啥(几十张图或几小时视频),都不占用语言模型序列容量,这就规避了长视觉序列带来的巨额计算开销和显存占用。
有人可能会问了,那视觉信息如何融入到语言模型中呢?
为实现这一点,该团队提出了一种轻量化的Hyper Attention模块,它可以将一个已有的只能建模文本的Transformer Block扩展成一个能够同时做图文特征交互和文本建模的新模块。
通过在整个语言模型中稀疏地扩展4个Transformer Block,mPLUG-Owl3就能用非常小的代价将LLM升级成多模态LLM。
视觉特征在从视觉编码器抽取出来后,会通过一个简单的线性映射把维度对齐到语言模型的维度。
随后,视觉特征只会在这4层Transformer Block与文本交互,由于视觉Token没有经过任何压缩,所以细粒度的信息都能得到保留。
下面来看一下Hyper Attention内又是如何设计的。
Hyper Attention为了让语言模型能感知到视觉特征,引入了一个Cross-Attention操作,将视觉特征作为Key和Value,将语言模型的hidden state作为Query去析取视觉特征。
近年也有其他研究考虑将Cross-Attention用于多模态融合,比如Flamingo和IDEFICS,但这些工作都没能取得较好的性能表现。
在mPLUG-Owl3的技术报告中,团队对比了Flamingo的设计,来进一步说明Hyper Attention的关键技术点:
首先,Hyper Attention没有采用Cross-Attention和Self-Attention级联的设计,而是嵌入在Self-Attention区块内。
它的好处是大幅度降低了额外引入的新参数,使得模型更容易训练,并且训练和推理效率也能进一步提升。
其次,Hyper Attention选择共享语言模型的LayerNorm,因为LayerNorm所输出的分布正是Attention层已经训练稳定的分布,共享这一层对于稳定学习新引入的Cross-Attention至关重要。
事实上,Hyper Attention采取了一种并行Cross-Attention和Self-Attention的策略,使用共享的Query去与视觉特征交互,通过一个Adaptive Gate融合两者的特征。
这使得Query可以根据自身语义针对性地选择与之相关的视觉特征。
团队发现,图像在原始上下文中与文本的相对位置关系对于模型更好的理解多模态输入非常重要。
为了建模这一性质,他们引入了一种多模态交错的旋转位置编码MI-Rope来给视觉的Key建模位置信息。
具体来说,他们预先记录了每张图片在原文中的位置信息,会取这一位置来计算对应的Rope embedding,而同一张图的各个patch会共享这个embedding。
此外,他们也在Cross-Attention引入了Attention mask,让原始上下文中在图片之前的文本不能看到后面的图片对应的特征。
概括而言,Hyper Attention的这些设计点,为mPLUG-Owl3带来了进一步的效率提升,并且保障了它仍然能具备一流的多模态能力。
实验结果
通过在广泛的数据集上进行实验,mPLUG-Owl3在大多数单图多模态Benchmarks都能取得SOTA的效果,甚至不少测评还能超过模型尺寸更大的模型。
同时,在多图测评中,mPLUG-Owl3同样超越了专门针对多图场景优化的LLAVA-Next-Interleave和Mantis。
另外,在LongVideoBench(52.1分)这一专门评估模型对长视频理解的榜单上更是超越现有模型。
研发团队还提出了一个有趣的长视觉序列测评方法。
众所周知,真实的人机交互场景,并非所有图片都是为了用户问题服务的,历史上下文中会充斥着与问题无关的多模态内容,序列越长,这一现象越严重。
为了评估模型在长视觉序列输入中的抗干扰能力,他们基于MMBench-dev构建了一个新的测评数据集。
通过为每一个MMBench循环评估样本引入无关的图片并打乱图片顺序,再针对原本的图片进行提问,看模型是否能稳定地正确回复。(对于同一个问题,会构造4个选项顺序和干扰图片均不同的样本,全都答对才记一次正确回答。)
实验中根据输入图片数目分为了多个层级。
可以看出,没有经过多图训练的模型例如Qwen-VL和mPLUG-Owl2很快就败下阵来。
而经过多图训练的LLAVA-Next-Interleave和Mantis在最开始能和mPLUG-Owl3保持近似的衰减曲线,但随着图片数目达到了50这个量级,这些模型也不再能正确回答了。
而mPLUG-Owl3坚持到了400张图片还能保持40%的准确率。
不过有一说一,尽管mPLUG-Owl3超越了现有模型,但其准确率远未达到优秀水平,只能说这一测评方法揭示了所有模型未来需要进一步提升的长序列下的抗干扰能力。
更多详情欢迎查阅论文及代码。
论文:https://arxiv.org/abs/2408.04840
代码:https://github.com/X-PLUG/mPLUG-Owl/tree/main/mPLUG-Owl3
demo(抱抱脸):https://huggingface.co/spaces/mPLUG/mPLUG-Owl3
demo(魔搭社区):https://modelscope.cn/studios/iic/mPLUG-Owl3
7B模型(抱抱脸):https://huggingface.co/mPLUG/mPLUG-Owl3-7B-240728
7B模型(魔搭社区)https://modelscope.cn/models/iic/mPLUG-Owl3-7B-240728