但目前的多模态大语言模型,距离真正人类级别的 AGI,总感觉少了点「内味」。没错,人类的认知和沟通必须无缝地在任何信息模态之间进行转换。作为人类,我们不仅仅可以理解多模态内容,还能够以多模态的方式灵活输出信息。
对于现有的大语言模型,一方面,其大多局限于关注于某种单一模态信息的处理,而缺乏真正「任意模态」的理解;另一方面,其都关注于多模态内容在输入端的理解,而不能以任意多种模态的灵活形式输出内容。
正当大家都在期待 OpenAI 未来要发布的 GPT-5 是否能实现任意模态大一统功能时,几天前,来自于新加坡国立大学的 NExT++ 实验室的华人团队率先开源了一款「大一统」通用多模态大模型「NExT-GPT」,支持任意模态输入到任意模态输出。目前 NExT-GPT 的代码已经开源,并且上线了 Demo 系统。
- 项目地址:https://next-gpt.github.io
- 代码地址:https://github.com/NExT-GPT/NExT-GPT
- 论文地址:https://arxiv.org/abs/2309.05519
该实验室在多模态学习方向的研究有着多年的耕耘,具有深厚的积累,而 NExT-GPT 的取名也双关了实验室的名字以及 GPT of Next generation 的寓意。
NExT-GPT 一经发布便受到了 AI 社区的大量关注。有网友表示,NExT-GPT 标识着全能型 LLM 的到来:
也有网友赞叹,这才是未来的 LLM 大趋势(大一统任意模态输入输出的 LLM):
接下来,我们来看看 NExT-GPT 可以实现哪些功能:
- Text → Text + Image + Audio
- Text + Image → Text + Image + Video + Image
- Text + Video → Text + Image
- Text + Video → Text + Audio
- Text + Audio → Text + Image + Video
- Text → Text + Image + Audio + Video
- Text → Text + Image
- Text + Video → Text + Image + Audio
- Text → Text + Image + Audio + Video
- Text → Text + Image
可看到,NExT-GPT 能够准确理解用户所输入的各类组合模态下的内容,并准确灵活地返回用户所要求的甚至隐含的多模态内容,常见的图生文、图生视频、看图像 / 声音 / 视频说话、图像 / 声音 / 视频问答等问题统统不在话下,统一了跨模态领域的大部分常见任务,做到了真正意义上的任意到任意模态的通用理解能力。
作者在论文中还给出一些定量的实验结果验证,感兴趣的读者可以阅读论文内容。
技术细节
那 NExT-GPT 是如何实现任意模态输入到任意模态输出的?原理非常简单,作者甚至表示在技术层面上「没有显著的创新点」:通过有机地连接现有的开源 1) LLM, 2) 多模态编码器和 3) 各种模态扩散解码器,便构成了 NExT-GPT 的整体框架,实现任意模态的输入和输出,可谓大道至简。
NExT-GPT 整体呈现为一个「编码端 - 推理中枢 - 解码器」三层架构:
- 多模编码阶段:利用已开源的编码器对各种输入模态进行编码,然后通过一个投影层将这些特征投影为 LLM 所能够理解的「类似语言的」表征。作者采用了 MetaAI 的 ImageBind 统一多模态编码器。
- 推理中枢阶段:利用开源 LLM 作为核心大脑来处理输入信息,进行语义理解和推理。LLM 可以直接输出文本,同时其还将输出一种「模态信号」token,作为传递给后层解码端的指令,通知他们是否输出相应的模态信息,以及输出什么内容。作者目前采用了 Vicuna 作为其 LLM。
- 多模生成阶段:利用各类开源的图像扩散模型、声音扩散模型以及视频扩散模型,接收来自 LLM 的特定指令信号,并输出所对应的模型内容(如果需要生成的指令)。
模型在推理时,给定任意组合模态的用户输入,通过模态编码器编码后,投影器将其转换为特征传递给 LLM(文本部分的输入将会直接出入到 LLM)。然后 LLM 将决定所生成内容,一方面直接输出文本,另一方面输出模态信号 token。如果 LLM 确定要生成某种模态内容(除语言外),则会输出对应的模态信号 token,表示该模态被激活。技术示意图如下:
文中作者指出,NExT-GPT 可能并不是实现任意模态输入到任意模态输出功能的首个工作。目前有两类前驱工作:
- 一类是不久前所发布的 CoDi 模型,其整合了各种模态的 diffusion 模型,可以同时处理和生成各种组合的模态内容。然而作者指出,CoDi 由于缺乏 LLMs 作为其核心部件,其仅限于成对(Parallel)内容的输入和生成,而无法实现复杂的内容推理和决策,根据用户输入的指令灵活响应。
- 另一类工作则试图将 LLMs 与现有的外部工具结合,以实现近似的「任意多模态」理解和生成,代表性的系统如 Visual-ChatGPT 和 HuggingGPT。但作者指出,由于这类系统在不同模块之间的信息传递完全依赖于 LLM 所生成的文本,其割裂、级联的架构容易不可避免地引入了噪音,降低不同模块之间的特征信息传递效用。并且其仅利用现有外部工作进行预测,缺乏一种整体的端到端训练,这对于充分理解用户的输入内容和指令是不利的。
而 NExT-GPT 可以良好地解决如上所述的现有工作问题。那么 NExT-GPT 有哪些关键点呢?
- 关键点-1:低成本实现复杂推理 + 多模态 in 和多模态 out
如前文所述,不仅要继承 LLM 所具备的复杂内容理解和推理能力,还需要实现任意模态的输入和输出。若考虑从零开始构建整个系统,代价将会巨大(除非是大厂才能承担成本),也不利于开源和传播。考虑到现有的大模型已经基本实现了多模态的输入,为实现全能的大一统多模态能力,因此最关键的一点在于高性能的多模态输出。为此,NExT-GPT 完全基于现有开源的高性能模块(比如目前性能最强的扩散模型),充分站在巨人的肩膀上,以最低的成本实现大一统多模态大模型的构建目标(实验室可承担级别的成本)。
- 关键点-2:高效率端到端训练和模态对齐学习
妥当的、端到端的系统训练是 NExT-GPT 区别于现有其他组合型统一大模型系统最重要的一点,也是保证 NExT-GPT 具有优秀性能的前提。另一方面,还需要充分对齐系统中的所有模态的特征表征。为了既保证具有较好的学习成效,又全面降低、控制学习成本,本工作包含了以下的亮点。
首先,NExT-GPT 考虑分别在编码层 - LLM 之间以及 LLM - 解码层之间插入投影层(Projection Layers)。在冻结大规模参数的基座「编码层 - LLM - 解码层」情况下,仅去训练参数量极低的投影层部分(以及在指令微调时基于 LoRA 的 LLM 低代价更新),作者实现了仅仅 1% 参数量的训练代价。
具体通过 1)以 LLM 为中心的编码端多模态对齐学习,和 2)局部微调的解码端指令跟随增强学习实现。
另外,对于多模态大模型,为确保其能够充分忠于用户指令而响应,进一步的指令调整(IT)是非常有必要的。不同于现有的多模态大模型其输出端仅涉及到文本,我们的 NExT-GPT 系统,其输入和输出端同时覆盖了各类模态信息。
为此,作者提出了一种模态切换指令微调学习(Modality-switching Instruction Tuning,MosIT),技术内涵如下图所示。同时,由于现存的多模态指令微调数据集都无法满足任意多模态 LLM 场景(即 MosIT)的要求,我们因此构建了一套 MosIT 数据集。该数据涵盖了各种多模态输入和输出,提供了必要的复杂性和变异性,帮助提升 NExT-GPT 获得优越的多模态指令跟随和相应能力。
结论和未来展望
总体上,NExT-GPT 系统展示了构建一个通用大一统多模态的 AI 模型的美好景愿和喜人的可能性,这将为 AI 社区中后续的更「人类水平」的人工智能研究提供宝贵的借鉴。
基于 NExT-GPT,后续的研究工作可以考虑以下几个方面:
1. 模态与任务扩展:受限于现有资源,目前作者所开源的 NExT-GPT 系统仅支持四种模态:语言、图像、视频和音频。作者表示,后续会逐步扩展到更多的模态(例如,网页、3D 视觉、热图、表格和图表)和任务(例如,对象检测、分割、定位和跟踪),以扩大系统的普遍适用性。
2. 考虑更多基座 LLM:目前作者实现了基于 7B 版本的 Vicuna LLM,其表示下一步将整合不同大小的 LLM,以及其他 LLM 类型。
3. 多模态生成策略:目前版本的 NExT-GPT 系统仅考虑了基于扩散模型的纯输出方式的多模态输出。然而生成模式容易输出错误幻想内容(Hallucination),并且输出内容的质量往往容易受到扩散模型能力的限制。因此,进一步提升扩散模型的性能很关键,这能直接帮助提高多模态内容的输出质量。另外,实际上可以整合基于检索的方法来补充基于生成的过程的弊端,从而提升整体系统的输出可靠性。
4. 降低多模态支持成本:可以考虑进一步降低对更多模态的支持的成本。NExT-GPT 考虑了 ImageBind 来统一多种模态的编码,从而节省了在编码端的代价。而对于多模态输出端,作者简单地集成了多个不同模态的扩散模型。如何防止随着模态的增加而动态增加解码器是后续的重要研究方面。比如可以考虑将一些支持不同模态生成(但具有模态共性)的扩散模型进行复用。
5. MosIT 数据集扩展:目前 NExT-GPT 所使用的 MosIT 数据集规模受限,这也会限制其与用户的交互表现。后续研究可以进一步提升模态切换指令微调学习策略以及数据集。