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

大模型(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,一经查实,立即删除!

相关文章

Vue 2看这篇就够了

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

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

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

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

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

【西瓜书】9.聚类

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

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

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

LangChain开发【NL2SQL】应用

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

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

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

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…

【教学类-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错误,且请求没有打到后端中(无报错日志),一开始以为是谷歌浏览器的问题,可百度上关于这个错误的解决方案都是清除缓…

转让北京劳务分包地基基础施工资质条件和流程

地基基础资质转让流程是怎样的?对于企业来说,资质证书不仅是实力的证明,更是获得工程承包的前提。而在有了资质证书后,企业才可以安心的准备工程投标,进而在工程竣工后获得收益。而对于从事地基基础工程施工的企业,需…

特种设备起重机指挥题库附答案

1、【多选题】力的三要素是指:( )。(ACD) A、力的大小 B、力的单位 C、力的方向 D、力的作用点 2、【多选题】司索作业规范正确的要求是( )(ABC) A、吊点正确 B、吊索挂设合理 C、绑扎牢靠 D、吊索长短一致 3、【多选题】圆柱形物体兜吊时,一定要放空圈&#…

【python】python GUI编程--tkinter模块初探

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Keil软件仿真的使用

一、软件的初始化设置 初始设置可以按照下图,这里我使用的是STM32F103C8T6,所以单片机型号为STM32F103C8,这个设置在Debug目录下。然后进行时钟的设置,我们板上晶振为8M,这里将时钟改为8. 或许有人想问如果是别的型号单…

Effective Java 1 用静态工厂方法代替构造器

知识点上本书需要会Java语法和lang、util、io库,涉及concurrent和function包。 内容上主要和设计模式相关,代码风格力求清晰简洁,代码尽量复用,组件尽量少依赖,错误尽早发现。 第1个经验法则:用静态工厂方…

Chroium 源码目录结构分析(1):源码目录体积一栏

获取源码 首先,我们拉一份最新的源代码(笔者是2024.6.6日拉取的): fetch --nohistory chromium 源码预处理 如果运行build,会生成许多生成的代码,因此我们不运行build。 然后,把干扰后续分析…

sqlilabs靶场安装

05-sqllabs靶场安装 1 安装 1 把靶场sqli-labs-master.zip上传到 /opt/lampp/htdocs 目录下 2 解压缩 unzip sqli-labs-master.zip3 数据库配置 找到配置文件,修改数据库配置信息 用户名密码,修改为你lampp下mysql的用户名密码,root/123456host:la…

贪吃蛇双人模式设计(2)

敲上瘾-CSDN博客控制台程序设置_c语言控制程序窗口大小-CSDN博客贪吃蛇小游戏_贪吃蛇小游戏csdn-CSDN博客​​​​​​​ 一、功能实现: 玩家1使用↓ → ← ↑按键来操作蛇的方向,使用右Shift键加速,右Ctrl键减速玩家2使用W A S D按键来操…

matlab演示地月碰撞

代码 function EarthMoonCollisionSimulation()% 初始化参数earth_radius 6371; % 地球半径,单位:公里moon_radius 1737; % 月球半径,单位:公里distance 384400; % 地月距离,单位:公里collision_tim…