当前位置: 首页 > news >正文

为什么Transformer推理需要做KV缓存

一、我们先来回忆一下在transformer中KV在哪里出现过,都有什么作用?

α的计算过程:

这里引入三个向量:

图中的q为Query,用来匹配key值

图中的k为key,用来被Query匹配

图中的Value,是用来被进行加权平均的

这一步我们知道α就是K与Q的匹配程度,匹配程度越高则权重越大。

Wq、Wk、Wv这三个参数矩阵都需要从训练数据中学习

二、为什么要使用KV缓存

使用KV缓存是为减少生成token时候的矩阵运算。

        因为在transformer中文本是逐个token生成的,每次新的预测会基于之前生成的所有token的上下文信息,这种对顺序数据的依赖会减慢生成过程,因为每次预测下一个token都需要重新处理序列中所有之前的token。

        比说我们要预测第100个token,那么模型必须使用前面99个token的信息,这就需要对这些token做矩阵运算,而这个矩阵运算是非常耗时的。所以KV缓存就是为了减少这种耗时的矩阵运算,在推理过程中会把键和值放在缓存中,这样模型就可以在后续生成token的时候,直接访问缓存,而不需要重新计算

三、KV缓存具体是怎么实现的?

这两张图分别是有缓存和没有缓存的情况

因为是第一个token,所以有没有缓存计算过程没有差别

      接下来到第二个token时,可以看到紫色标出的就是缓存下来的key和value,在没有缓存的情况下KV都要重新计算。如果做了缓存就只需要把历史的KV拿出来,同时只计算最新的那个token的KV再拼接成一个大矩阵就行了。

对比一下,有缓存的计算量明显减少了一半

那后面的token一样,每次历史计算过的键和值就不用重新计算了,这样就极大减少了self attention 的计算量,从序列长度的二次方直接变成了线性

相关文章:

  • Kotlin-访问权限控制
  • Python推导式进阶指南:优雅初始化序列的科学与艺术
  • 高光谱相机赋能烟叶分选:精准、高效与智能化的新突破
  • 信息时代的政治重构:网络空间与主权的未来
  • wrod生成pdf。[特殊字符]改背景
  • 【25软考网工】第五章(6)TCP和UDP协议、流量控制和拥塞控制、重点协议与端口
  • 嵌入式开发学习日志Day14
  • Elasticsearch:我们如何在全球范围内实现支付基础设施的现代化?
  • 【BUG】‘DetDataSample‘ object has no attribute ‘_gt_sem_seg‘
  • BRAFAR: Bidirectional Refactoring, Alignment, Fault Localization, and Repair...
  • Listremove数据时报错:Caused by: java.lang.UnsupportedOperationException
  • Win11/Win10无法保存ip设置提示请检查一个或多个设置并重试怎么办?
  • [人机交互]协作与通信的设计
  • 二叉树—中序遍历—非递归
  • centos的根目录占了大量空间怎么办
  • 大语言模型(LLM)领域,有几项显著的进展和技术突破
  • 如何用Java读取PDF
  • 自然语言处理之情感分析:ALBERT在社交媒体的应用技术教程
  • 家庭宽带IP与IDC机房IP
  • ϵ-prediction和z0-prediction是什么意思
  • 全国首例在沪完成,这项近视治疗手术不到10秒
  • 马上评|不再提“智驾”,新能源车企回归理性
  • 外交部:印巴都表示不希望局势升级,望双方都能保持冷静克制
  • 五一期间7名游客接连被困青海荒漠,警方提醒严禁非法穿越
  • 同观·德国|默茨当总理后,能否带领德国在欧盟“说了算”?
  • 央行行长详解降准:将释放长期流动性1万亿,整体存款准备金率平均水平降至6.2%