LLM Accelerator:使用参考文本无损加速大语言模型推理

news2024/11/24 8:31:36

编者按:如今,基础大模型正在诸多应用中发挥着日益重要的作用。大多数大语言模型的训练都是采取自回归的方式进行生成,虽然自回归模型生成的文本质量有所保证,但却导致了高昂的推理成本和长时间的延迟。由于大模型的参数量巨大、推理成本高,因此如何在大规模部署大模型的过程中降低成本、减小延迟是一个关键课题。针对此问题,微软亚洲研究院的研究员们提出了一种使用参考文本无损加速大语言模型推理的方法 LLM Accelerator,在大模型典型的应用场景中可以取得两到三倍的加速。


随着人工智能技术的快速发展,ChatGPT、New Bing、GPT-4 等新产品和新技术陆续发布,基础大模型在诸多应用中将发挥日益重要的作用。目前的大语言模型大多是自回归模型。自回归是指模型在输出时往往采用逐词输出的方式,即在输出每个词时,模型需要将之前输出的词作为输入。而这种自回归模式通常在输出时制约着并行加速器的充分利用。

在许多应用场景中,大模型的输出常常与一些参考文本有很大的相似性,例如在以下三个常见的场景中:

1. 检索增强的生成。New Bing 等检索应用在响应用户输入的内容时,会先返回一些与用户输入相关的信息,然后用语言模型总结检索出的信息,再回答用户输入的内容。在这种场景中,模型的输出往往包含大量检索结果中的文本片段。

2. 使用缓存的生成。大规模部署语言模型的过程中,历史的输入输出会被缓存。在处理新的输入时,检索应用会在缓存中寻找相似的输入。因此,模型的输出往往和缓存中对应的输出有很大的相似性。

3. 多轮对话中的生成。在使用 ChatGPT 等应用时,用户往往会根据模型的输出反复提出修改要求。在这种多轮对话的场景下,模型的多次输出往往只有少量的变化,重复度较高。

图1:大模型的输出与参考文本存在相似性的常见场景

基于以上观察,研究员们以参考文本与模型输出的重复性作为突破自回归瓶颈的着力点,希望可以提高并行加速器利用率,加速大语言模型推理,进而提出了一种利用输出与参考文本的重复性来实现一步输出多个词的方法 LLM Accelerator。

图2:LLM Accelerator 解码算法

具体来说,在每一步解码时,让模型先匹配已有的输出结果与参考文本,如果发现某个参考文本与已有的输出相符,那么模型很可能顺延已有的参考文本继续输出。因此,研究员们将参考文本的后续词也作为输入加入到模型中,从而使得一个解码步骤可以输出多个词。

为了保证输入输出准确,研究员们进一步对比了模型输出的词与从参考文档输入的词。如果两者不一致,那么不正确的输入输出结果将被舍弃。以上方法能够保证解码结果与基准方法完全一致,并可以提高每个解码步骤的输出词数,从而实现大模型推理的无损加速。LLM Accelerator 无需额外辅助模型,简单易用,可以方便地部署到各种应用场景中。

论文链接:https://arxiv.org/pdf/2304.04487.pdf

项目链接:https://github.com/microsoft/LMOps

使用 LLM Accelerator,有两个超参数需要调整。一是触发匹配机制所需的输出与参考文本的匹配词数:匹配词数越长往往越准确,可以更好地保证从参考文本拷贝的词是正确的输出,减少不必要的触发和计算;更短的匹配,解码步骤更少,潜在加速更快。二是每次拷贝词的数量:拷贝词数越多,加速潜力越大,但也可能造成更多不正确的输出被舍弃,浪费计算资源。研究员们通过实验发现,更加激进的策略(匹配单个词触发,一次拷贝15到20个词)往往能够取得更好的加速比。

为了验证 LLM Accelerator 的有效性,研究员们在检索增强和缓存辅助生成方面进行了实验,利用 MS-MARCO 段落检索数据集构造了实验样本。在检索增强实验中,研究员们使用检索模型对每个查询返回10个最相关的文档,然后拼接到查询后作为模型输入,将这10个文档作为参考文本。在缓存辅助生成实验中,每个查询生成四个相似的查询,然后用模型输出对应的查询作为参考文本。

表1:检索增强的生成场景下的时间对比

表2:使用缓存的生成场景下的时间对比

研究员们使用通过 OpenAI 接口得到的 Davinci-003 模型的输出结果作为目标输出,以获得高质量的输出。得到所需输入、输出和参考文本后,研究员们在开源的 LLaMA 语言模型上进行了实验。由于 LLaMA 模型的输出与 Davinci-003 输出不一致,所以研究员们采用了目标导向的解码方法来测试理想输出(Davinci-003 模型结果)结果下的加速比。研究员们利用算法2得到了贪婪解码时生成目标输出所需的解码步骤,并强制 LLaMA 模型按照得到的解码步骤进行解码。

图3:利用算法2得到了贪婪解码时生成目标输出所需的解码步骤

对于参数量为 7B 和 13B 的模型,研究员们在单个 32G NVIDIA V100 GPU 上进行实验;对于参数量为 30B 的模型,在四块同样的 GPU 上进行实验。所有的实验均采用了半精度浮点数,解码均为贪婪解码,且批量大小为1。实验结果表明,LLM Accelerator 在不同模型大小(7B,13B,30B)与不同的应用场景中(检索增强、缓存辅助)都取得了两到三倍的加速比。

进一步实验分析发现,LLM Accelertator 能显著减少所需的解码步骤,并且加速比与解码步骤的减少比例呈正相关。更少的解码步骤一方面意味着每个解码步骤生成的输出词数更多,可以提高 GPU 计算的计算效率;另一方面,对于需要多卡并行的30B模型,这意味着更少的多卡同步,从而达到更快的速度提升。在消融实验中,在开发集上对 LLM Accelertator 的超参数进行分析的结果显示,匹配单个单词(即触发拷贝机制)时,一次拷贝15到20个单词时的加速比可达到最大 (图4所示)。在图5中我们可以看出,匹配词数为1能更多地触发拷贝机制,并且随着拷贝长度的增加,每个解码步骤接受的输出词增加,解码步骤减少,从而达到更高的加速比。

图4:消融实验中,在开发集上对 LLM Accelertator 的超参数的分析结果

图5:在开发集上,具有不同匹配词数 n 和拷贝词数 k 的解码步骤统计数据

LLM Accelertator 是微软亚洲研究院自然语言计算组在大语言模型加速系列工作的一部分,未来,研究员们将持续对相关问题进行更加深入的探索。

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

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

相关文章

被App包围 苹果Vision Pro将你推入空间“大屏”

2小时,这是2023年苹果开发者大会(WWDC)首日发布会的直播总时长,仅YouTube上,就有483.9万次观看。发布会开启时,北京时间是6月6日凌晨1点,众多科技博主串流直播了这场发布会。 苹果CEO蒂姆库克引…

3.2 继续完善的Vue.js响应式系统

前文提要: 3.0 响应式系统的设计与实现 3.1 一个稍微完善的Vue.js响应式系统 1、解决副作用函数的死循环问题 在解决了分支的切换的问题,此时还有一个代码死循环的问题,其这个死循环很容易触发,如下代码: const dat…

Netty Incubator Codec QUIC 0.0.41.Final 发布

导读Netty Incubator Codec QUIC 是一款基于 QUIC 协议的编解码器,为 Netty 提供了 QUIC 协议的支持。 近日,该团队发布了 0.0.41.Final 版本,这是一个错误修复版本,主要包括以下变化: 允许在派发前通过添加到读完队列来合并刷新…

嵌入式软件测试笔记3 | 嵌入式软件测试开发的多V模型

3 | 嵌入式软件测试开发的多V模型 1 简单的多V模型2 迭代与并行开发2.1 开发模型2.2 嵌入式开发过程的复杂性 3 多V模型中的测试活动3.1 测试活动和因素3.2 模型开发周期中与测试相关的元素分配3.3 原型开发周期中与测试相关的元素分配3.4 最终产品开发周期中与测试相关的元素分…

NineData x 华为云正式上线

6月5日,NineData 企业级 SQL 开发平台正式成为华为云“联营联运”商品。通过联营联运模式,双方将在产品、解决方案和生态等多个方面开展深度合作,共同提供高效、智能、安全的数据管理服务,帮助客户轻松构建一站式云端数据库管理平…

【随想录】一篇水文

前排许愿池: 我是一个没有梦想的咸鱼捏 自从知道成电优营了也不给offer之后 遂开始摆烂了(哈哈) 以及看了一下数据 好像前期存的资本够多的话 后面还是能混混的 however,已经快过去2/3了 前排致谢: 感谢好人一姐的助力 果然人是靠别人活着的 或者说伟人是站在巨人…

基于显扬科技3D视觉相机的芯片外观检测系统

Part.1 行业背景 电子元器件制造业是我国的支柱产业之一,具有产量大、技术投入高的特点,因此产品质量把控与生产成本优化是电子行业关注的发展重点。 芯片作为电子元器件中的核心组成部分,在现代社会被广泛应用,在芯片生产制造过…

Redis经典五大数据类型源码及底层实现

Redis经典五大数据类型源码及底层实现 一 面试题引入二 Redis数据类型的底层数据结构三 redis是字典数据库,KV键值对到底是什么?3.1 怎样实现键值对(key-value)数据库的?3.2 redisObject结构的作用3.3 RedisObject各字…

微信支付商户接入指引(企业)

目录 一、官方指引二、申请规则三、申请流程(一)提交资料(二)签署协议(三)绑定场景 一、官方指引 https://kf.qq.com/faq/210423UrIRB7210423by6fQn.html 二、申请规则 1、微信支付商家仅面向企业、个体…

三分钟告诉你录音实时转写软件哪个好

真的不想录音笔记实时转写软件有哪些吗 录音实时转写软件免费有哪些?录音实时转写软件推荐 实时录音转文字软件哪个好?录音实时转写软件分享 录音实时转写软件哪个好?录音实时转写软件盘点 让你知道视频配音文字转语音软件有哪些 让你不…

耗时1周整理了网络安全学习路线,非常详细!

前言 这一期就出一个怎么学习网络安全的学习路线和方法,觉得有用的话三连收藏下 首先咱们聊聊,学习网络安全方向通常会有哪些问题 1、打基础时间太长 学基础花费很长时间,光语言都有几门,有些人会倒在学习linux系统及命令的路上…

selenium基础语法

文章目录 selenium基础语法1.定位页面元素2.元素的操作1) 模拟键盘输入(send_keys)2) 点击操作(click)3) 清除去对象输入的文本内容(clear)4) 获取文本(gettext) 3. 等待4. 信息打印5. 窗口6. 导航7. 弹窗8. 鼠标和弹窗9.选择框10.文件上传11.屏幕截图 selenium基础语法 1.定位…

面试官问:kafka为什么如此之快?

前言 天下武功,唯快不破。同样的,kafka在消息队列领域,也是非常快的,这里的块指的是kafka在单位时间搬运的数据量大小,也就是吞吐量,下图是搬运网上的一个性能测试结果,在同步发送场景下&#…

OpenStack介绍

OpenStack 1. OpenStack1.1 简介1.2 OpenStack和KVM有什么关系和区别?1.3 编写语言 2. 主要模块介绍2.1 OpenStack计算设施 - Nova1. API服务器(nova-api)2. 消息队列(Rabbit MQ Server)3. 运算工作站(nova…

LibTorch部署图像处理相关算法详细教程(附代码)

深度学习图像处理相关代码LibTorch部署详细教程 前言LibTorch简介LibTorch环境安装及问题解决LibTorch涉及的Tensor基本操作张量初始化张量变形张量截取张量间操作 部署过程测试环境推理过程代码Demo扩展部分 前言 本文写于调研深度学习部署方法工作中,需要将图像分…

如何将PDF转Excel并保持原有格式不变?分享三个方法给大家!

在日常办公中,我们常常面临一个问题:领导给我们发了一个PDF文件,并要求我们尽快修改其中的表格数据。然而,当我们将PDF文件转换成Excel格式时,经常会出现文件排版错乱的情况。时间的紧迫和数据的混乱可能会让我们感到十…

【FTP】FTP被动模式跨网传输失败

FTP被动模式所需的端口21、20、60000-60050 假如端口20未开策略的话,造成传输失败 需要在FTP服务端用户配置文件里设置pasv_address(对外的ip地址) 特此记录一下!!!!!!…

NLP(2)N-gram language Model (缺了一些平滑的方式介绍)

文章目录 N-gram Language ModelTrigram Example存在的问题smoothingLaplacian (add-one) smoothing案例 1案例 2 Add-k smoothingAbsolute Discounting案例 Interpolation 在自然语言处理(NLP)中,语言模型&#xff08…

机器鸟实现扇动翅膀功能

1. 功能说明 本文示例将实现机器鸟扇动翅膀的功能。 2. 结构说明 鸟类的翅膀主要由肩关节、肘关节、腕关节组成,本样机利用组合机构设计机器鸟的扑翼机构。 拥有两个关节的机器鸟扑翼机构结构图 单侧翅膀 双翅 尾部 整机 3. 电子硬件 在这个示例中,我们…

使用Optuna进行PyTorch模型的超参数调优

Optuna是一个开源的超参数优化框架,Optuna与框架无关,可以在任何机器学习或深度学习框架中使用它。本文将以表格数据为例,使用Optuna对PyTorch模型进行超参数调优。 Optuna可以使用python pip安装,如pip install Optuna。也可以使…