LLM推理优化综述.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

1摘要

自?OpenAI?发布ChatGPT以来,基于Transformer架构的大语言模型(LLM)在全球范围内引发了深度的技术关注,并取得了令人瞩目的成就。其强大的理解和生成能力,正在深刻改变我们对人工智能的认知和应用。然而大语言模型的推理应用成本过高,高昂的成本大大阻碍了技术落地。因此,大语言模型的推理性能优化成为业界研究的热点。

大语言模型推理面临计算资源的巨大需求和计算效率的挑战。优化推理性能不仅可以减少硬件成本,还可以提高模型的实时响应速度。它使模型能够更快速地执行自然语言理解、翻译、文本生成等任务,从而改善用户体验,加速科学研究,推动各行业应用的发展。

本文从推理服务系统全局视角介绍典型性能优化技术和各自特点,最后分析未来大语言模型推理优化技术的发展趋势和演进方向,最终为未来的人工智能应用打开更广阔的可能性。

2优化技术

LLM推理服务重点关注两个指标:吞吐量和时延:

吞吐量:主要从系统的角度来看,即系统在单位时间内能处理的tokens数量。计算方法为系统处理完成的tokens个数除以对应耗时,其中tokens个数一般指输入序列和输出序列长度之和。吞吐量越高,代表LLM服务系统的资源利用率越高,对应的系统成本越低。

时延:主要从用户的视角来看,即用户平均收到每个token所需位时间。计算方法为用户从发出请求到收到完整响应所需的时间除以生成序列长度。一般来讲,当时延不大于50ms/token时,用户使用体验会比较流畅。

吞吐量关注系统成本,高吞吐量代表系统单位时间处理的请求大,系统利用率高。时延关注用户使用体验,即返回结果要快。这两个指标一般情况下需要会相互影响,因此需要权衡。例如,提高吞吐量的方法一般是提升batchsize,即将用户的请求由串行改为并行。但batchsize的增大会在一定程度上损害每个用户的时延,因为以前只计算一个请求,现在合并计算多个请求,每个用户等待的时间变长。

LLM推理性能优化主要以提高吞吐量和降低时延为目的,具体可以划分为如下六部分,下面详细展开描述。

2.1显存相关优化

2.1.1KVCache

大模型推理性能优化的一个最常用技术就是KVCache,该技术可以在不影响任何计算精度的前提下,通过空间换时间思想,提高推理性能。目前业界主流LLM推理框架均默认支持并开启了该功能。

Transformer模型具有自回归推理的特点,即每次推理只会预测输出一个token,当前轮输出token与历史输入tokens拼接,作为下一轮的输入tokens,反复执行多次。该过程中,前后两轮的输入只相差一个token,存在重复计算。KVCache技术实现了将可复用的键值向量结果保存下来,从而避免了重复计算。

具体来讲,KVCache技术是指每次自回归推理过程中,将Transformer每层的Attention模块中的??和??结果保存保存在一个数据结构(称为KVCache)中,当执行下一次自回归推理时,直接将??和??与KVCache拼接在一起,供后续计算使用。其中,?代表第??步推理的输入,?和??分别代表键值权重矩阵。

KVCache缓存每一轮已计算完毕的键值向量,因此会额外增加显存开销。以LLaMA-7B模型为例,每个token对应的KVCache空间??可通过如下公式计算:

公式中第一个因子2代表Key/Value两个向量,每层都需存储这两个向量,?为Transformerlayer个数,?代表KVhead个数(模型为多头注意力时,该值即注意力头数,模型为多查询注意力时,该值为1),?为每个KVhead的维度,?为每存放一个数据所需的字节数。模型推理所需的KVCache总量为公式如下,其中??为输入和输出序列长度之和。因此,KVCache与batchsize和序列长度呈线性关系。

KVCache的引入也使得推理过程分为如下两个不同阶段,进而影响到后续的其他优化方法。

预填充阶段:发生在计算第一个输出token过程中,计算时需要为每个Transformerlayer计算并保存keycache和valuecache;FLOPs?同KVCache关闭一致,存在大量GEMM(GEneralMatrix-Matrixmultiply)操作,属于Compute-bound类型计算。

解码阶段:发生在计算第二个输出token至最后一个token过程中,这时KVCache已存有历史键值结果,每轮推理只需读取Cache,同时将当前轮计算出的新的Key、Value追加写入至Cache;GE

文档评论(0)

外卖人-小何 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档