为什么KV Cache只需缓存K矩阵和V矩阵,无需缓存Q矩阵?

大家都知道大模型是通过语言序列预测下一个词的概率。假定{ x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3,…, x n − 1 x_{n-1} xn1}为已知序列,其中 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3,…, x n − 1 x_{n-1} xn1均为维度是 d m o d e l d_{model} dmodel的向量, q n q_{n} qn k n k_{n} kn v n v_{n} vn同为向量。当输入 x n x_n xn时,需要预测 x n + 1 x_{n+1} xn+1的概率分布。

KV Cache干了什么?

Attention机制的目标是输入 x n x_n xn,输出 z n z_n zn。在具体实现过程中,输入 x n x_n xn,生成 q n q_n qn k n k_n kn v n v_n vn,并在实际计算中不再需要重复计算 k 1 k_1 k1 k 2 k_2 k2,…, k n − 1 k_{n-1} kn1 v 1 v_1 v1 v 2 v_2 v2,…, v n − 1 v_{n-1} vn1,直接从缓存中取即可。

具体Attention机制计算流程如下图所示。

图1

观察注意力矩阵最下面一行(放大图我放下面了)。新输入的 x n x_n xn通过矩阵 W q W_q Wq生成 q n q_n qn,其中 q n q_n qn k 1 k_1 k1 k 2 k_2 k2,…, k n k_n kn均有运算关系。所以可以通过缓存 k 1 k_1 k1 k 2 k_2 k2,…, k n − 1 k_{n-1} kn1向量加速推理。这是K矩阵需要缓存的原因

图2

不过很意外的发现最右边一列 q 1 q_1 q1 q 2 q_2 q2,…, q n − 1 q_{n-1} qn1 k n k_{n} kn之间存在计算。

不是说好的只有KV缓存,没有Q矩阵缓存?如果推导成立,新输入 x n x_{n} xn是否会改变 x 1 x_1 x1 x 2 x_2 x2,…, x n − 1 x_{n-1} xn1的注意力分布?

推导没有错,也没有Q矩阵缓存。因为在推理阶段,Attention机制有一个非常重要的细节:mask掩码

注意力矩阵在训练推理过程中,为了模拟真实推理场景,当前位置token是看不到下一位置的,且只能看到上一位置以及前面序列的信息,所以在训练推理的时候加了attention mask。具体实现如下图所示:

将上图灰色区域全部重置为-inf(负无穷大) ,这样方便softmax的时候置为0。当新输入 x n x_n xn,注意力的计算(见注意力矩阵最下面一行)与 q 1 q_1 q1 q 2 q_2 q2,…, q n − 1 q_{n-1} qn1无关,因此无需缓存Q矩阵

另外,还有个V矩阵,参照图1就干了一件事。

z n = a 1 ∗ v 1 + a 2 ∗ v 2 + . . . + a n ∗ v n z_n = a1*v_1+a2*v_2+...+a_n*v_n zn=a1v1+a2v2+...+anvn

我可以提前缓存 v 1 v_1 v1 v 2 v_2 v2,…, v n − 1 v_{n-1} vn1,计算的时候从缓存中取即可,这是V矩阵需要缓存的原因

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

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

相关文章

拓展中国剩余定理

题目链接 代码: /*扩展中国剩余定理的使用范围更广泛,不要求模数全部互质扩展中国剩余定理:两两合并同余方程,合并 n - 1 次之后,就能求解合并两个同余方程:x ≡ r1 (mod p1) --- x a*p1 r1x ≡ r2 (mo…

from transformers.modeling_utils import PreTrainedModel

from transformers.modeling_utils import PreTrainedModel 是用于导入 Hugging Face Transformers 库中的 PreTrainedModel 类。这个类是所有预训练模型的基类,提供了许多通用功能和方法,适用于不同类型的模型(如BERT、GPT、Transformer-XL等…

STM32对数码管显示的控制

1、在项目开发过程中会遇到STM32控制的数码管显示应用,这里以四位共阴极数码管显示控制为例讲解;这里采用的控制芯片为STM32F103RCT6。 2、首先要确定数码管的段选的8个引脚连接的单片机的引脚是哪8个,然后确认位选的4个引脚连接的单片机的4…

ChatGPT:fetch/xhr是什么意思

ChatGPT:fetch/xhr是什么意思 fetch 和 XHR(XMLHttpRequest)是两种用于在客户端与服务器之间进行异步通信的方法。在网页开发中,它们用于从服务器获取数据或将数据发送到服务器,而不需要刷新整个页面。 fetch fetch …

平滑切换/过渡多个控制器的方法

控制系统理论 在控制系统领域,平滑切换多个控制器通常指的是在保持系统稳定性和性能的同时,实现控制器之间的无缝切换。 输出抖动抑制方法:通过设计包含积分作用的控制器实现跟踪控制,并通过设计补偿器来减小控制输入信号在切换…

京东技术团队撰写的整整986页《漫画学Python》到底有什么魅力?

这是一本Python入门书。无论您是想学习编程的小学生,还是想参加计算机竞赛的中学生,抑或是计算机相关专业的大学生,甚至是正在从事软件开发的职场人,本书都适合您阅读和学习。但您若想更深入地学习Python并进行深层次应用&#xf…

第一个vue——01

指定vue实例的挂载位置 <div id ‘app’> </div> 一、创建vue实例 1.为什么要 new vue() ,直接调用vue&#xff08;&#xff09;函数可以吗&#xff1f; No&#xff0c; 因为直接调用vue()函数&#xff0c;不创建实例的话&#xff0c;会出现以下错误&#xff1…

通过 Parallels Desktop 虚拟机安装运行 macOS 15 Sequoia

在 Apple 的 WWDC 24 大会上&#xff0c;macOS Sequoia 15 成为全场热议的焦点。 作为科技爱好者和开发者&#xff0c;我们都迫不及待想要体验这些最新功能。但如果直接把整个 Mac 升级到测试版&#xff0c;可能不太现实&#xff0c;特别是当你需要保持主系统稳定的时候。 幸…

单例模式之饿汉式

文章目录 单例模式&#xff08;饿汉式&#xff09;代码静态变量创建实例代码静态代码块创建实例 单例模式&#xff08;饿汉式&#xff09; 单例模式是一种创建性的设计模式&#xff0c;主要是保证一个类只能有一个实例。全局中保证一个实例的使用。 单例模式饿汉式主要的构成…

数据库常见问题(持续更新)

数据库常见问题(持续更新) 1、数据库范式&#xff1f; 1NF&#xff1a;不可分割2NF&#xff1a;没有非主属性对候选码存在部分依赖3NF&#xff1a;没有非主属性传递依赖候选码BCNF&#xff1a;消除了主属性对对候选码的传递依赖或部分依赖 2、InnoDB事务的实现&#xff1f; …

大数据平台建设概要

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 欢迎关注微信公众号&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&a…

Oracle 19c RAC 心跳异常处理

客户机房异常断电后&#xff0c;启动19c集群报错如下 2024-07-05 17:43:27.934 [GIPCD(5964292)]CRS-42216: No interfaces are configured on the local node for interface definition en3(:.*)?:100.100.100.0: available interface definitions are [en0(:.*)?:10.88.0.…

Unity--射线检测--RayCast

Unity–射线检测–RayCast 1.射线检测的含义 射线检测,根据名称而言,使用一条射线来检测是击中了某个物体/多个物体 射线检测的包含两个部分: 射线和检测 2.射线检测可以用在哪些地方 射击游戏&#xff1a; 玩家的瞄准和射击&#xff1a;检测玩家视线是否与敌人或其他目标…

阶段三:项目开发---大数据开发运行环境搭建:任务5:安装配置Kafka

任务描述 知识点&#xff1a;安装配置Kafka 重 点&#xff1a; 安装配置Kafka 难 点&#xff1a;无 内 容&#xff1a; Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;…

GEE代码实例教程详解:地表温度长时间序列分析

简介 在本篇博客中&#xff0c;我们将使用Google Earth Engine (GEE) 对地表温度 (LST) 进行长时间序列分析。通过结合Landsat 4-9的数据&#xff0c;我们将探索1982年至2024年间地表温度的变化趋势。 背景知识 Landsat数据集 Landsat数据集提供了多时相、多光谱的地表观测…

用起来超爽的4个宝藏软件工具

记得带 “记得带”是一款专为繁忙的都市人设计的生活服务软件&#xff0c;旨在帮助用户轻松管理日常生活中的各种事务。该应用程序集成了多种实用功能&#xff0c;包括购物清单、待办事项、日程安排和健康追踪等。它还具有智能提醒功能&#xff0c;可以根据用户的日常习惯和偏好…

14-41 剑和诗人15 - RLAIF 大模型语言强化培训

​​​​​​ 介绍 大型语言模型 (LLM) 在自然语言理解和生成方面表现出了巨大的能力。然而&#xff0c;这些模型仍然存在严重的缺陷&#xff0c;例如输出不可靠、推理能力有限以及缺乏一致的个性或价值观一致性。 为了解决这些限制&#xff0c;研究人员采用了一种名为“人工…

每天一个数据分析题(四百十六)- 线性回归模型

根据模型假设&#xff0c;线性回归模型中误差项的方差为 A. 常数 B. 函数 C. 随机变量 D. 以上都不是 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python&#xff0c;SQL&#xff0c;统计学&#…

【大模型】多模型在大模型中的调度艺术:解锁效率与协同的新境界

多模型在大模型中的调度艺术&#xff1a;解锁效率与协同的新境界 引言一、多模型与大模型的概念解析二、多模型调度的必要性三、多模型调度的关键技术3.1 负载均衡与动态分配3.2 模型间通信与协作3.3 模型选择与优化 四、多模型运行优化策略4.1 异构计算平台的利用4.2 模型压缩…