推测性解码:加速多模态大型语言模型的推理

大模型(LLMs)以其卓越的性能在多个应用场景中大放异彩。然而,随着应用的深入,这些模型的推理速度问题逐渐凸显。为了解决这一挑战,推测性解码(Speculative Decoding, SPD)技术应运而生。本文深入探讨了SPD在多模态大型语言模型(MLLMs)中的应用,尤其是针对LLaVA 7B模型的优化。MLLMs通过融合视觉和文本数据,极大地丰富了模型与用户的互动,但同时也面临着自回归生成和内存带宽的瓶颈。SPD技术通过小型草稿模型预测未来标记,并由目标LLM进行快速验证,有效提升了推理效率。实验结果更是令人振奋:即便不依赖图像信息,仅利用文本数据的草稿模型也能实现与使用图像特征的模型相媲美的加速效果。这一发现不仅为MLLMs的高效推理提供了新思路,也为未来在更广泛的应用场景中利用SPD技术奠定了基础。

推测性解码(SPD)

推测性解码是一种创新的解码技术,旨在加速大型语言模型(LLMs)的推理过程。在传统的自回归生成中,模型在生成每个新词时都必须等待前一个词的完成,这限制了生成速度。SPD通过使用一个小型的草稿模型来预测一系列未来的词,然后由目标大型语言模型(LLM)并行验证这些预测,从而显著提高了效率。这种方法允许模型在单个调用中评估多个候选词,而不是逐个生成,从而减少了整体的推理时间。

使用多模态大型语言模型(MLLM)作为目标模型的推测性解码(SPD)的流程图。该图包括三个主要组件:视觉编码器、图像投影器和目标语言模型,以及一个较小的草稿语言模型。

MLLMs通过整合视觉编码器、适配器和语言模型后端,能够处理和理解图像信息,并将这些信息转换为语言模型能够理解的嵌入空间。这种模型能够接收图像和文本的输入,通过内部的融合机制,生成更加丰富和准确的输出。例如,给定一张图片和相关的文本查询,MLLMs能够生成描述图片内容的文本,或者回答与图片相关的复杂问题。

视觉编码器首先将输入图像转换成一系列的图像编码,适配器随后将这些编码转换为与语言模型兼容的嵌入向量。这些图像嵌入与文本标记一起被送入语言模型,模型根据这些信息生成响应。MLLMs的设计允许它们在多种任务中表现出色,包括图像描述、视觉问答和多模态推理等。

然而,MLLMs在处理大量数据时仍然面临内存带宽限制和生成速度的挑战。SPD技术的应用为解决这些问题提供了新的可能性,通过减少对内存的依赖和加速生成过程,SPD有助于提升MLLMs的整体性能和应用范围。接下来的章节将详细介绍SPD在MLLMs中的应用,并通过实验验证其效果。

SPD在MLLMs中的应用

为了充分利用SPD的优势,关键在于设计一个与目标模型(如LLaVA-7B)显著较小但高度一致的草稿模型。在以往的研究中,草稿模型通常是目标模型同系列的小型预训练模型,或者具有相同架构的小型模型。由于LLaVA家族中没有公开可用的小型模型,研究者们不得不从头开始训练一个草稿模型。

草稿模型的设计遵循LLaVA的架构,包括一个适配器和一个语言模型后端,但参数数量远少于LLaVA 7B。研究者们采用了两种草稿模型:

  1. 小型LLaVA草稿模型:包含一个较小的图像适配器和一个草稿语言模型。
  2. 文本草稿模型:仅依赖于输入文本标记生成草稿标记,不涉及图像信息。程

草稿模型的生成过程是一个预测性的任务,它在多模态大型语言模型(MLLMs)中起着至关重要的作用。这个过程开始于输入数据的准备,包括一张图像和相关的文本信息。图像首先被一个视觉编码器处理,转换成一系列的嵌入向量,这些向量捕捉了图像的主要内容和特征。与此同时,文本信息也被转换成一系列标记的嵌入向量,这些向量代表了文本的语义信息。

接下来,草稿模型利用这些嵌入向量作为输入,开始生成一系列草稿标记。这个过程是自回归的,意味着每个新生成的标记都依赖于之前生成的所有标记。草稿模型会逐个生成标记,每个新标记都是在已经生成的标记序列的基础上进行预测的。这个过程不需要考虑图像的视觉信息,因为它完全依赖于文本标记来生成草稿标记。

草稿模型会考虑输入的文本标记序列,并基于这些信息,通过其内部的语言模型机制,预测下一个可能出现的标记。然后,这个预测的标记被添加到序列的末尾,成为新的上下文,为下一个标记的生成提供参考。这个过程会一直持续,直到生成了预定数量的标记,形成了一个完整的草稿序列。

这个生成过程的目的是快速产出一个候选的标记序列,这个序列将作为草稿提交给目标模型进行进一步的验证和筛选。草稿模型的生成过程是高效且自主的,它通过预测文本序列的延续,为后续的精确生成打下基础。尽管草稿模型生成的标记可能并不完全准确,但它们为推测性解码提供了必要的原材料,使得目标模型能够在此基础上进行快速且精确的迭代优化。

目标模型的验证过程:一旦草稿模型生成了一系列预测标记,目标LLaVA模型将对这些标记进行评估。目标模型在评估时会考虑图像的嵌入向量和文本标记嵌入,以计算每个草稿标记被接受的概率。如果一个草稿标记与目标模型的预测高度一致,即草稿模型和目标模型对这个标记的预测非常接近,那么这个草稿标记就很可能被接受。如果草稿标记与目标模型的预测不一致,即草稿模型的预测与目标模型相差较远,那么这个标记将被拒绝,并从残差分布中重新采样一个新的标记。残差分布是一种调整后的概率分布,它基于目标模型和草稿模型的概率差异来生成新的标记。

通过这种方式,SPD技术能够有效地利用草稿模型快速生成一系列预测标记,并通过目标模型进行验证,以确保生成的标记符合目标模型的预期输出。这个过程不仅提高了生成速度,还保持了生成质量,使得MLLMs能够更高效地处理复杂的多模态任务。

使用文本草稿模型相较于具有LLaVA架构的草稿模型更为高效,因为它不需要额外的适配器,也不需要适配器的训练。此外,实验结果表明,即使不使用图像信息,仅使用文本的草稿模型也能实现显著的加速效果,这为MLLMs的推理提供了新的思路。

通过上述方法,研究者们能够显著提高MLLMs的推理效率,同时保持了模型性能。接下来的章节将展示具体的实验设置和结果,进一步验证SPD在MLLMs中的有效性。

实验

实验采用了LLaVA-7B模型作为目标模型,它是基于LLaMA-7B语言模型后端构建的。为了探索SPD的性能,研究者训练了一系列规模较小的草稿模型,这些模型的参数量固定为115M。草稿模型经过了不同阶段的训练和微调,包括基础的LLaMA模型、经过指令微调的聊天LLaMA模型,以及进一步在特定数据集上微调的LLaVA模型。

目标模型(7B)和草稿模型(115M)的配置细节,包括层数、注意力头、中间维度、隐藏维度和激活函数

评估任务涵盖了图像问答、图像描述和科学问题回答等多个视觉指令任务,这些任务要求模型生成大量文本,从而充分发挥SPD的优势。研究者使用了LLaVA Instruct 150K数据集、COCO数据集和ScienceQA数据集进行评估,这些数据集不仅提供了丰富的图像和文本信息,也为评估模型的多模态理解能力提供了良好的平台。

在评估指标方面,研究者关注了块效率、内存限制加速和标记率这三个关键指标。块效率反映了每个目标模型运行生成的平均标记数,而内存限制加速则基于块效率和模型参数比值来估计加速效果。标记率则是衡量SPD生成速度的直接指标,即每秒生成的标记数。

在不同数据集(LLaVA-eval、COCO-Caption和SQA)上使用SPD时的内存限制加速(MBSU)、块效率和标记速率的比较。图中比较了不同的草稿模型,包括基础的LLaMA、经过指令微调的LLaMA、仅文本的LLaVA草稿模型和包含图像适配器的LLaVA草稿模型

实验结果显示,SPD技术显著提升了LLaVA 7B目标模型的输出生成速度。特别是在不使用图像信息的情况下,仅依靠文本的草稿模型也能达到与使用图像特征的草稿模型相当的加速效果。在不同的任务中,经过微调的LLaVA文本模型和LLaVA模型均展现出了优异的性能,这证明了SPD技术在加速MLLMs推理中的潜力。

通过定性分析,研究者观察到草稿模型能够准确预测常见的词汇、短语,甚至是单词的一部分。例如,在COCO图像描述任务中,草稿模型能够基于给定的上下文预测出完整的单词。这种能力在开放的文本生成任务中尤为重要,因为许多标记由常见词汇、短语和单词补全组成,而这些并不依赖于图像信息。

在使用草稿模型进行图像描述任务时的输出生成过程。这些示例显示了输入提示、助手的输出生成,以及图像内容的详细描述。

综合实验结果,研究者得出结论,SPD是一种有效的技术,能够显著提高MLLMs的推理速度。文本草稿模型在没有图像信息的情况下也能达到显著的加速效果,这些发现对于推动人工智能领域的发展具有重要意义。它们不仅证明了SPD技术在提高MLLMs效率方面的实际应用价值,而且也为未来在更广泛的任务和应用场景中利用SPD技术提供了坚实的基础。随着技术的不断进步和优化,SPD有望成为加速大型语言模型推理的重要工具,进一步拓展人工智能在各个领域的应用边界。

研究者们的工作也启发了对未来研究方向的思考。例如,如何进一步优化草稿模型的结构,以实现更高的块效率和内存限制加速;如何将SPD技术应用于其他类型的多模态模型,以及如何结合最新的算法进展进一步提升SPD的性能。这些探索将继续推动MLLMs的发展,为构建更加智能和高效的人工智能系统铺平道路。

论文链接:https://arxiv.org/abs/2404.08856

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

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

相关文章

volatile、extern、static关键字

一、volatile volatile关键字用于告诉编译器,一个变量的值可能在程序执行期间以不可预见的方式发生变化,编译器不应对该变量进行优化。即:编译器不能对这个变量进行优化,必须每次都从内存中读取它的值,而不能缓存到寄存…

Vue 2看这篇就够了

Vue 2 技术文档 Vue.js 是一款用于构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。而 Vue.js 2(以下简称 Vue…

Vue2基础:.sync修饰符的使用,认识,作用,本质案例演示,实现父子之间的通信。

.sync的作用: 可以实现子组件与父组件数据的双向绑定,简化代码。 与v-model的不同点,prop属性名可以自定义,不要一定要用value. .sync的本质: 就是:属性名和update:属性名合写。 下面我们进行代码演示…

探索智慧景区票务系统的架构与应用

随着旅游业的迅速发展,智慧景区票务系统已经成为提升景区管理效率、优化游客体验的重要工具。智慧景区票务系统的架构设计与应用,将现代信息技术与景区管理相结合,为景区的门票销售、入园管理和游客服务提供了全新的解决方案。本文将深入探讨…

每天一个数据分析题(三百五十六)-图表决策树

图表决策树中将图表分成四类,分别是? A. 比较类 B. 序列类 C. 构成类 D. 描述类 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案

【西瓜书】9.聚类

聚类任务是无监督学习的一种用于分类等其他任务的前驱过程,作为数据清洗,基于聚类结果训练分类模型 1.聚类性能度量(有效性指标) 分类任务的性能度量有错误率、精度、准确率P、召回率R、F1度量(P-R的调和平均)、TPR、FPR、AUC回归…

滑动窗口算法:巧妙玩转数据的窗外世界

✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一 滑动窗口是什么? 二 相关题目解析 1. 长度最小的子数组 🥳题目解析 🥳算法原理 ✏️思路1 暴力枚举出所有子数组之和 ✏️思路2 滑动窗…

docker-compose部署mysql+nginx+redis

docker部署 参考: docker部署mysqlnginxredis docker-compose部署mysqlnginxredis mysql 1、创建docker-compose-mysql.yml version: "3" services:mysql:image: mysql:5.7restart: alwayscontainer_name: mysqlports:- 3306:3306volumes:- /home/my…

LangChain开发【NL2SQL】应用

前言 关于LangGraph的简单介绍,请参考这篇博客: LangGraph开发Agent智能体应用【基础聊天机器人】-CSDN博客 对比LangChain实现NL2SQL 关于用LangChain开发NL2SQL的Agent应用,在这篇博客提供了完整的代码实现: LangChain开发…

AI网络爬虫:批量爬取豆瓣图书搜索结果

工作任务:爬取豆瓣图书搜索结果页面的全部图书信息 在ChatGPT中输入提示词: 你是一个Python编程专家,要完成一个爬虫Python脚本编写的任务,具体步骤如下: 用 fake-useragent库设置随机的请求头; 设置chr…

深拷贝浅拷贝解析,从原理理解深拷贝

这块应该都有过比较深刻的了解了。今天加深下印象和查漏补缺下。 浅拷贝: let original { a: 1, b: { c: 2 } };//这边定一个obj,来供拷贝 let shallowCopy Object.assign({}, original);// let shallowCopy { ...original }; 创建一个浅拷贝对象拷贝…

NFT 智能合约实战-快速开始(1)NFT发展历史 | NFT合约标准(ERC-721、ERC-1155和ERC-998)介绍

文章目录 NFT 智能合约实战-快速开始(1)NFT发展历史国内NFT市场国内NFT合规性如何获得NFT?如何查询NFT信息?在 OpenSea 上查看我们的 NFT什么是ERC721NFT合约标准ERC-721、ERC-1155和ERC-998 对比ERC721IERC721.sol 接口内容关于合约需要接收 ERC721 资产 onERC721Received…

Nginx面试题精选及参考答案(3万字长文)

目录 什么是Nginx,它主要用于哪些场景? Nginx和Apache有什么区别? 描述一下Nginx的事件驱动模型。 Nginx如何处理静态文件和动态请求? 什么是反向代理,Nginx如何实现反向代理? 如何在Linux系统中安装Nginx? Nginx的主要配置文件有哪些? 如何修改Nginx的配置以实…

软考初级网络管理员_01_计算机系统基础知识(硬件)单选题

1.在字长为16位、32位、62位或128位的计算机中,字长为()位的计算机数据运算精度最高。 16 32 64 128 2.8位、16位、32位和64位字长的计算机中,()位字长计算机的数据运算精度最高。 9 8 16 64 3.声卡的性能指标主要包括-和采样位数:在采样位数分…

如何随机化列表中的元素?

一、技术难点 在Python中,随机化列表中的元素通常指的是对列表进行洗牌(shuffle)操作,即在不改变列表中元素数量的前提下,随机改变元素的顺序。这个过程看似简单,但在实际实现中需要考虑一些技术细节和难点…

插入排序(Insertion_sort)

最简单的一种排序 基本思想就是从第一个元素开始,每次排列一个元素,一直排列到结尾 例如: 3 1 4 5 7 2 6 第一个元素不用排序,从第二个开始 因为3 > 1所以直接将3覆盖到1上 3 3 4 5 7 2 6 而1用一个变量先…

【CMake】install用法

以前一直不清楚install的具体作用,现在明白了,其实就是把你的文件(生成的二进制,源代码或者任意)给复制(也可以说安装)到指定路径。 将二进制安装到Bin文件夹 比如我生成了一个test程序&#…

【教学类-64-02】20240610色块眼力挑战(二)-2-25宫格色差10-100(10倍)(星火讯飞)

背景需求 以下的色块眼里挑战需要人工筛选图片,非常繁琐。 【教学类-64-01】20240607色块眼力挑战(一)-0-255随机底色-CSDN博客文章浏览阅读446次,点赞12次,收藏5次。【教学类-64-01】20240607色块眼力挑战&#xff…

Linux安装Docker | 使用国内镜像

环境 CentOS7 先确认能够上网 curl www.baidu.com返回该输出说明网络OK 步骤一:安装gcc 和 gcc-c yum -y install gccyum -y install gcc-c步骤二:安装Docker仓库 yum install -y yum-utils接下来配置yum的国内镜像 yum-config-manager --add-re…

tomcat服务器之maxHttpHeaderSize

背景:在OA流程表单中,填写了200条数据,一提交,秒报400错误,且请求没有打到后端中(无报错日志),一开始以为是谷歌浏览器的问题,可百度上关于这个错误的解决方案都是清除缓…