AnyGPT: Unified Multimodal LLM with Discrete Sequence Modeling

news2024/12/26 22:33:57

发表时间:arXiv 2024年2月26日

论文链接:https://arxiv.org/pdf/2402.12226 作者单位: Fudan University

Motivation

LLM 在理解和生成人类语言方面表现出非凡的能力。但是,LLM 的能力仅限于针对文本的处理。而现实世界的环境本质上是多模态的:生物体通过不同的通道感知和交换信息,包括视觉、语言、声音和触觉。

因此,开发 LLM 的多模态能力,势必对 LLM 来讲是个有前途的方向。当前的方法主要是将一个多模态的编码器 (比如视觉的 ViT) 和 LLM 相结合,使其能够处理各种模态的信息,并利用 LLM 强大的文本处理能力来产生有效的输出。但是这种策略仅限于文本生成,不包括多种模态的输出。比如 Emu[1],SEED-LLaMA[2] 等等。虽然将文本与一个额外的模态对齐相对简单,但在单个框架内集成3种以上的模态,并在它们之间实现双向对齐,就是个更加困难的挑战

解决方法

(1)提出 AnyGPT,一种 any-to-any 的多模态大语言模型。采用离散的表征统一处理语音、文本、图像和音乐等多种不同模态信号。实现方案:使用多模态分词器 (tokenizer),将原始的多模态数据,比如图像和语音,压缩成离散语义 token 的序列。再使用多模态解分词器 (de-tokenizer),将离散语义 token 的序列转换回原始模态数据。离散表征的好处是能够过滤掉高频的,特定于模态的感知信息,同时保留基本的低频语义信息。架构层面,继承现有的 LLM 架构,无需任何修改。同时允许直接应用现有的 LLM 工具,从而提高训练和推理的效率。

(2) 构建了一个多模态,以文本为中心的数据集 AnyInstruct-108k。该数据集利用生成模型合成,是一个大规模多模态指令数据集。实现方案:该数据集包含 108k 个多轮对话样本,这些样本复杂交织了各种模态,从而使 AnyGPT 模型能够处理多模态输入和输出的任意组合。在这个数据集中,文本作为中间对齐的媒介。通过将不同的模态与文本模态对齐,来实现在所有模态之间的相互对齐

(3) 非常有趣的一点:证明了离散表征可以非常有效地使用 LLM 来统一多种模态的数据。

实现方式:AnyGPT 方法包含3个部分:多模态 tokenizer,LLM 架构,和多模态 de-tokenizer。tokenizer 将连续的非文本模态转换为离散的 token 序列。LLM 使用 next token prediction 的训练目标进行训练。在推理时,通过多模态 de-tokenizer 将 tokens 解码回原始模态的表征。

实现方式

AnyGPT 生成过程:

高质量多模态数据的生成,包括高清图像和高保真音频。这是一个很有挑战性的问题,因为这些数据需要更长的位宽,导致更长的序列。但是 LLM 的计算量随着序列长度增加而指数级增加,因此需要想其他方法。

为了解决这个问题,AnyGPT 采用两阶段框架进行高保真生成,包括语义信息建模和感知信息建模。第一阶段,LLM 任务是语义级别的生成。第2阶段,非自回归模型将多模态语义标记转换为感知级别的高保真多模态内容,在性能和效率之间取得平衡。

对于图像,SEED tokens 通过扩散模型解码为高质量图像。对于语音,使用 SoundStorm[7]这个非自回归掩码语言模型,经过训练可以从语义 tokens 中生成 SpeechTokenizer 的声学 tokens。对于音乐,作者使用 Encodec tokens 过滤掉人类感知之外的高频细节,然后使用 Encodec 解码器将这些 tokens 重建为高保真音频数据。

实验:多模式理解和生成任务,旨在测试预训练过程中不同模态之间的对齐。具体而言,作者测试了每个模态的文本到X和X到文本任务,其中X分别是图像、音乐和语音。为了模拟现实世界的场景,所有评测都是在 Zero-Shot 的模式下进行的。这意味着在评测过程中不会进行任务对下游任务的微调或训练。评估结果表明,AnyGPT 作为通才多模态语言模型,在各种多模态理解和生成任务上实现了最先进的性能。

结论AnyGPT 是一种 any-to-any 的多模态大语言模型,它可以处理多种模态数据,包括语音、文本、图像和音乐。不同于之前的多模态大模型的点是 AnyGPT 使用了 LLM 的架构和范式。但是与 LLM 不同的是,AnyGPT 把不同模态的数据作了一些恰当的预处理,从而使得这些数据都能使用 LLM 来建模。同时,为了训练这种 any-to-any 的多模态大语言模型,作者构建了一个多模态数据集,是第一个大规模多模态指令数据集。

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

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

相关文章

JVM系列 | 对象的消亡2——HotSpot的设计细节

HotSpot 的细节实现 文章目录 HotSpot 的细节实现OopMap 与 根节点枚举根节点类型及说明HotSpot中的实现 OopMap 与 安全点安全点介绍如何保证程序在安全点上? 安全区域记忆集与卡表记忆集卡表 写屏障并发的可达性分析(与用户线程)并发可达性…

Spring boot框架指南

1. Spring Boot 概述 1.1 定义与起源 Spring Boot是一种基于Spring框架的开源框架,旨在简化Spring应用程序的创建和开发过程。它通过提供一系列默认配置和自动配置功能,减少了开发者在配置上的工作量,使得快速搭建生产级别的Spring应用程序…

OV SSL证书优势及获取渠道

OV证书,即组织验证型SSL证书,通过严格的组织审查流程,为网站提供数据传输加密、身份验证和信息完整性保护。 OV证书优势 1 高信任度 OV证书通过证书颁发机构(CA)对企业实名认证,包括企业名称、注册地址、…

万能门店小程序开发平台功能源码系统 带完整的安装代码包以及安装搭建教程

互联网技术的迅猛发展和用户对于便捷性需求的不断提高,小程序以其轻量、快捷、无需安装的特点,成为了众多商家和开发者关注的焦点。为满足广大商家对于门店线上化、智能化管理的需求,小编给大家分享一款“万能门店小程序开发平台功能源码系统…

kernel32.dll丢失?那么kernel32.dll如何修复?教你几种修复丢失kernel32.dll错误的方法

在使用电脑时你是否遇到过kernel32.dll丢失的情况,那么遇到这种情况应该如何解决呢?遇到kernel32.dll丢失就会导致电脑无法正常运行,应用程序也会无法正常使用,今天就教大家kernel32.dll丢失的解决办法。 几种解决kernel32.dll丢失…

破解USB设备通讯协议实现自定义软件控制的步骤与方法

在设备和计算机之间通过USB进行通讯的情况下,厂家提供的软件可以控制设备,但没有提供任何其他资料和支持,这种情况下,若希望自行开发软件来实现同样的功能,可以通过以下步骤破解通讯协议并开发自定义程序。 1. 捕获US…

干货!如何选择Ai大模型(LLMs)?

过去一年里,大型语言模型(LLMs)在人工智能界风起云涌,纷纷以突破性的进步拓展生成式人工智能的可能性。新模型层出不穷,令人目不暇接。 这些模型依靠日益增长的参数数量和庞大的数据集进行训练,显著提升了…

CentOS版本的Linux系统误删了自带的python和yum,恢复过程

文章借鉴于:Centos误删自带python2.7恢复方法_centos默认的被卸载了-CSDN博客 在进行别的操作的时候,一不小心将我的系统自带的Python2.7.5和yum删除掉了。 后来我尝试重新安装yum,但是安装yum必须要有python。 我又去重新安装了python&am…

前端面试:项目细节重难点问题分享(16)

💁💁更多详情:爱米的前端小笔记(csdn~xitujuejin~zhiHu~Baidu~小红shu)同步更新,等你来看!都是利用下班时间整理的,整理不易,大家多多👍💛➕&…

数据库|SQLServer数据库:数据的基本查询

哈喽,你好啊,我是雷工! 其实对于数据库的查询以前也应用过,只是使用时一般也是根据要实现的要求从网上搜索,能实现应用要求即可,现在根据视频学习,正好有这么一节,就听一遍&#xff…

ROS 2 话题:使用C++进行发布与订阅

ROS 2 话题:使用C进行发布与订阅 ROS 2提供了一种强大而灵活的通信机制,称为话题(Topics)。话题允许节点之间进行异步消息传递,从而实现松耦合的通信模式。在本文中,我们将介绍如何使用C编程语言在ROS 2中…

常见中间件漏洞大全及其修复方法(未完成)

一.Tomcat tomcat 是一个开源而且免费的 jsp 服务器,默认端口 : 8080 ,属于轻量级应用服务器。它可以实现 JavaWeb程序的装载,是配置 JSP ( Java Server Page )和 JAVA 系统必备的一款环境。 1.1 CVE-2017-12615 Tomc…

Transformers 中的Softmax 和 Layer Norm 如何并行?

1.Softmax 如何并行? Softmax 计算公式: 安全的 Softmax 运算: softmax 有个问题,那就是很容易溢出。比如采用半精度,由于float16的最大值为65504,所以只要x>11,那么softmax就溢出了。即使是…

C语言新手小白详细教程(6)函数

希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 关注 收藏支持一下笔者吧~ 阅读指南: 开篇说明为什么要使用函数?1.定义一个函数2.调用函数3.定义函数详解 开篇说明 截止目前,我们已…

华清IOday7 24-8-5

文章目录 使用有名管道实现,一个进程用于给另一个进程发消息,另一个进程收到消息后,展示到终端上,并且将消息保存到文件上一份使用有名管道实现两个进程间相互通信 使用有名管道实现,一个进程用于给另一个进程发消息&a…

服务器数据恢复—raid5阵列上层Oracle数据库数据恢复案例

服务器数据恢复环境&故障: 一台服务器上有8块SAS硬盘,其中的7块硬盘组建了一组RAID5阵列,另外1块硬盘作为热备盘使用。划分了6个LUN,服务器上部署有oracle数据库。 RAID5磁盘阵列中有2块硬盘出现故障并离线,RAID5阵…

浮点数在计算机中的编码方式

一、前言 我们常能听到,直接用浮点数做运算得出的结果是不准确的了;或者也能看到涉及到浮点数时,会出现一些奇奇怪怪的问题,比如: public class DecimalTest {public static void main(String[] args) {float f1 1.…

STK12.2+Python开发(二):添加访问约束,新建场景、卫星、地面站等,获取当前场景的信息

新建场景 1.获取当前打开的场景 #获取当前打开的场景 scenario root.CurrentScenario2.设置当前场景的时间 scenario.SetTimePeriod(Today,24hr)3.添加一个地面目标到当前的场景 scenario.SetTimePeriod(Today,24hr)4.添加一个地面目标到当前的场景,括号内是三…

空气质量传感器 - 从零开始认识各种传感器【二十八期】

空气质量传感器|从零开始认识各种传感器 1、什么是空气质量传感器? 空气质量传感器是一种检测空气中污染物浓度的设备,广泛应用于环境监测、智能家居、工业控制和健康管理等领域。 2、空气质量传感器是如何工作的? 对于每个人都关心的空气质…

效率何止10倍!利用输入法瞬间调用提示词

我们在日常工作/学习/生活有很多场景需要使用提示词,比如说: 快速总结文章快速排版解释概念翻译其它经常面对的任务 但是使用提示词有几个痛点: 你很难临时写一个非常完整的提示词你凑合写的提示词,又担心结果不满意如果已经保…