KVCache原理简述

简介: KVCache原理简述

在GPT的推理过程中,它根据完整的提问和回答的已生成部分,来生测下一个词(的概率)。

例如,我们的提问是【天王盖地虎,】,回答是【宝塔镇河妖。】。

那么第一次,GPT根据【天王盖地虎,】生成【宝】,之后根据【天王盖地虎,宝】生成【塔】,以此类推,直到碰上终止符。

这里面提问【天王盖地虎,】的QKV实际上重复计算了很多遍。由于GPT是单向注意力,每层的提问的KV只根据上一层的提问的KV(或提问的嵌入向量)计算,不跟据回答中任何字符的KV计算,完全可以把它们缓存起来避免重复计算。

如下图所示:

改进之后,我们GPT根据【天王盖地虎,】生成【宝】,同时还有KV(天王盖地虎,),然后根据KV(天王盖地虎,)和【宝】生成【塔】以及KV(天王盖地虎,宝),以此类推。

至于为什么不缓存Q,因为推理场景下我们只取最后一个词,那么每层输出HS[-1]就可以了。HS[-1]根据全部的V和注意力矩阵的最后一行A[-1]计算,而A[-1]根据Q[-1]和全部的K计算,Q[-1]只根据输入最后一个字符X[-1]计算。

所以我们通过传入KVCache保证K和V是完整的,输入字符只传入最后一个,也就是上一次GPT生成出来的字符,就可以了。

相关文章
|
9月前
|
存储 Kubernetes 负载均衡
k8s是什么以及它的原理和如何去使用它?
k8s是什么以及它的原理和如何去使用它?
|
6月前
|
Kubernetes Cloud Native 调度
k8s 自身原理 2
k8s 自身原理 2
|
6月前
|
Kubernetes 监控 Cloud Native
k8s 自身原理 3
k8s 自身原理 3
|
6月前
|
Kubernetes 监控 调度
k8s 自身原理 4
k8s 自身原理 4
|
6月前
|
存储 Kubernetes API
k8s 自身原理 1
k8s 自身原理 1
简述for in 和 for of 的区别
1、推荐在循环对象属性的时候使用 for...in,在遍历数组的时候的时候使用 for...of 2、for...in 循环出的是 key,for...of 循环出的是 value
128 0
简述for in 和 for of 的区别
个人简述
以下是我的个人简述
|
存储 Unix 程序员
说了这么多次 I/O,可你知道其中的原理么(一)
现在让我们转向对 I/O 软件的研究,I/O 软件设计一个很重要的目标就是设备独立性(device independence)。啥意思呢?这意味着我们能够编写访问任何设备的应用程序,而不用事先指定特定的设备。
说了这么多次 I/O,可你知道其中的原理么(一)
|
存储 缓存 程序员
说了这么多次 I/O,可你知道其中的原理么(三)
现在让我们转向对 I/O 软件的研究,I/O 软件设计一个很重要的目标就是设备独立性(device independence)。啥意思呢?这意味着我们能够编写访问任何设备的应用程序,而不用事先指定特定的设备。
说了这么多次 I/O,可你知道其中的原理么(三)
|
XML 前端开发 编译器
clingrootsys原理剖析(2):the pme
本文关键字:cern root,rint,root6 cling,clang cling
216 0
clingrootsys原理剖析(2):the pme