Redian新闻
>
图解大模型推理优化之KV Cache

图解大模型推理优化之KV Cache

公众号新闻
来自:YeungNLP

此前,我们更多专注于大模型训练方面的技术分享和介绍,然而在完成模型训练之后,上线推理也是一项非常重要的工作。后续,我们将陆续撰写更多关于大模型推理优化的技术文章,包括但不限于KV Cache、PageAttention、FlashAttention、MQA、GQA等。


在本文中,我们将详细介绍KV Cache,这是一种大模型推理加速的方法。正如其名称所示,该方法通过缓存Attention中的K和V来实现推理优化。


01

大模型推理的冗余计算

我们先简单观察一下基于Decoder架构的大模型的生成过程。假设模型只是一层Self Attention,用户输入“中国的首都”,模型续写得到的输出为“是北京”,模型的生成过程如下:

  1. 将“中国的首都”输入模型,得到每个token的注意力表示(绿色部分)。使用“首都”的注意力表示,预测得到下一个token为“是”(实际还需要将该注意力表示映射成概率分布logits,为了方便叙述,我们忽略该步骤)。

  2. 将“是”拼接到原来的输入,得到“中国的首都是”,将其输入模型,得到注意力表示,使用“是”的注意力表示,预测得到下一个token为“北”。

  3. 将“北”拼接到原来的输入,依此类推,预测得到“京”,最终得到“中国的首都是北京”

在每一步生成中,仅使用输入序列中的最后一个token的注意力表示,即可预测出下一个token。但模型还是并行计算了所有token的注意力表示,其中产生了大量冗余的计算(包含qkv映射,attention计算等),并且输入的长度越长,产生的冗余计算量越大。例如:

  1. 在第一步中,我们仅需使用“首都”的注意力表示,即可预测得到“是”,但模型仍然会并行计算出“中国”,“的”这两个token的注意力表示。

  2. 在第二步中,我们仅需使用“是”的注意力表示,即可预测得到“北”,但模型仍然会并行计算“中国”,“的”,“首都”这三个token的注意力表示。


02

Self Attention

KV Cache正是通过某种缓存机制,避免上述的冗余计算,从而提升推理速度。在介绍KV Cache之前,我们有必要简单回顾self attention的计算机制,假设输入序列长度为  ,第  个token对于整个输入序列的注意力表示如下公式: 第  个token对于整个输入序列的注意力表示的计算步骤大致如下:

  1. 向量映射:将输入序列中的每个token的词向量分别映射为  三个向量。

  2. 注意力计算:使用  分别与每个  进行点乘,得到第  个token对每个token的注意力分数。

  3. 注意力分数归一化:对注意力分数进行softmax,得到注意力权重。

  4. 加权求和:注意力权重与对应的向量  加权求和,最终得到第  个token的注意力表示。


下面将以图像的方式帮助大家更形象地理解Self Attention。假设输入序列  ,  对于整个输入序列  的注意力表示为  ,它的计算过程如下图所示,  。


继续观察  对于整个输入序列  的注意力表示  ,它的计算过程如下图所示  。


03

KV Cache

在推理阶段,当输入长度为  ,我们仅需使用  即可预测出下一个token,但模型却会并行计算出  ,这部分会产生大量的冗余计算。而实际上  可直接通过公式  算出,即  的计算只与  、所有  和  有关。


KV Cache的本质是以空间换时间,它将历史输入的token的  和  缓存下来,避免每步生成都重新计算历史token的  和  以及注意力表示  ,而是直接通过  的方式计算得到  ,然后预测下一个token。


举个例子,用户输入“中国的首都”,模型续写得到的输出为“是北京”,KV Cache每一步的计算过程如下。


第一步生成时,缓存  均为空,输入为“中国的首都”,模型将按照常规方式并行计算:

  1. 并行计算得到每个token对应的  ,以及注意力表示  。

  2. 使用  预测下一个token,得到“是”。

  3. 更新缓存,令  ,  。


第二步生成时,计算流程如下:

  1. 仅将“是”输入模型,对其词向量进行映射,得到  。

  2. 更新缓存,令  ,  

  3. 计算  ,预测下一个token,得到“北”

第三步生成时,计算流程如下:

  1. 仅将“北”输入模型,对其词向量进行映射,得到  。

  2. 更新缓存,令  ,  

  3. 计算  ,预测下一个token,得到“京”。


上述生成流程中,只有在第一步生成时,模型需要计算所有token的  ,并且缓存下来。此后的每一步,仅需计算当前token的  ,更新缓存  ,然后使用  即可算出当前token的注意力表示,最后用来预测一下个token。

Hungging Face对于KV Cache的实现代码如下,结合注释可以更加清晰地理解其运算过程:

query, key, value = self.c_attn(hidden_states).split(self.split_size, dim=2)
query = self._split_heads(query, self.num_heads, self.head_dim) # 当前token对应的querykey = self._split_heads(key, self.num_heads, self.head_dim) # 当前token对应的keyvalue = self._split_heads(value, self.num_heads, self.head_dim) # 当前token对应的value
if layer_past is not None: past_key, past_value = layer_past # KV Cache key = torch.cat((past_key, key), dim=-2) # 将当前token的key与历史的K拼接 value = torch.cat((past_value, value), dim=-2) # 将当前token的value与历史的V拼接
if use_cache is True: present = (key, value)else: present = None
# 使用当前token的query与K和V计算注意力表示if self.reorder_and_upcast_attn: attn_output, attn_weights = self._upcast_and_reordered_attn(query, key, value, attention_mask, head_mask)else: attn_output, attn_weights = self._attn(query, key, value, attention_mask, head_mask)


KV Cache是以空间换时间,当输入序列非常长的时候,需要缓存非常多k和v,显存占用非常大。为了缓解该问题,可以使用MQA、GQA、Page Attention等技术,在后续的文章中,我们也将对这些技术进行介绍。




备注:昵称-学校/公司-方向/会议(eg.ACL),进入技术/投稿群


id:DLNLPer,记得备注呦

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
专家学者看大陆经济超美 (图 smh)今日arXiv最热NLP大模型论文:北京大学警惕ChatGPT等大模型遏制人类的创新能力AI早知道|自定义ChatGPT商店下周上线;腾讯推出语音识别大模型;美图大模型上线无注意力大模型Eagle7B:基于RWKV,推理成本降低10-100 倍大模型推理速度飙升3.6倍,「美杜莎」论文来了,贾扬清:最优雅加速推理方案之一老师木新创业项目曝光:瞄准大模型成本问题,推理性能将得到数量级的提升AI早知道|ChatGPT模型大更新;阿里云发布多模态大模型;百度推多模态模型UNIMO-G【图解】聚焦主导产业、提升服务水平、优化园区布局……我市发布关于推进张江高新区改革创新发展建设世界领先科技园区的若干意见拆解大语言模型RLHF中的PPO算法语言大模型推理加速指南线上闭门会上新!北航、MIT、莫纳什和商汤四位专家直播探讨大模型微调与推理部署truth还有个时变性/人能得到碎片facts深挖RLHF潜力,复旦语言和视觉团队创新奖励模型优化,让大模型更对齐阿里云联手英特尔「压榨」CPU性能,跑起了72B大模型推理龙年,用Loong还是Chinesische Drachen?张郎郎:关露及其他AI早知道|百度推出视频生成模型UniVG;Soul APP上线自研语言大模型;清华大学首个大模型 Debug大模型推理核心技术:Continuous Batching详解AI早知道|Stability AI推出最小模型;国内首个视频大模型通过备案;内蒙古首个AI大模型工业互联网平台发布“我们比云厂商做得好”!老师木新创业项目曝光:瞄准大模型成本问题,推理性能将得到数量级的提升比A100性价比更高!FlightLLM让大模型推理不再为性能和成本同时发愁破解大模型安全难题,360推出大模型安全能力框架微软教小模型推理进阶版:Orca 2性能媲美10倍参数模型,已开源如何高效部署大模型?CMU最新万字综述纵览LLM推理MLSys优化技术库克:苹果将「开辟 AI 新天地」;比特币突破 6 万美元,市场兴奋;百度文心大模型推理成本骤降 99% | 极客早知道一文详解大模型归因机制,幻觉问题有救了!开源大模型火了!(附99个大模型微调模型/数据/工具)!十一月和十二月给王友琴博士的礼物与问候:既是对过去的记忆,也是对将来的希望AI早知道|Gemini推理能力强于GPT-3.5;美图AI视觉大模型将向公众开放;Meta推全新视频生成模型FlowVid我的1976年谷歌AI大模型Gemini亮相:擅长复杂学科推理,能懂编程语言 PK GPT-4计算机视觉GPT时刻!UC伯克利三巨头祭出首个纯CV大模型,推理惊现AGI火花图解大模型计算加速系列:Flash Attention V1,从硬件到计算逻辑通用视觉推理显现,UC伯克利炼出单一纯CV大模型,三位资深学者参与千元成本搞定专业大模型,系统优化+开源大模型是关键 | 潞晨卞正达@MEET2024
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。