KV Cache

大模型推理加速的一个常用技术是KV Cache,在不牺牲任何计算精度的前提下,通过空间换时间,提高推理性能。注意,这里的Cache概念非常简单,跟浏览器缓存、CPU缓存不是一个概念。

在生成式模型的推理过程中,假设给定一个输入文本,模型会输出一个长度为N的文本,但是该过程执行了N次推理。因为模型每次推理只输出一个token,然后将输出token与输入tokens拼接在一起,作为下一次推理的输入,这样不断反复直到遇到终止符。

由于生成式模型推理过程是单向的,即已经输出的token的embedding是不会再变化的,所以上述步骤可以优化。将Key和Value缓存起来,不用再经历前向传播算出embedding,只需要将上一轮输出的token前向传播算出embedding,然后与KV拼接,来预测出下一个token。这样模型的计算量大大减少,推理大幅加速。

伪代码如下:

query = self._split_heads(query, self.num_heads, self.head_dim)
key = self._split_heads(key, self.num_heads, self.head_dim)
value = self._split_heads(value, self.num_heads, self.head_dim)if layer_past is not None: # 当输出第一个token后,layer_past就是非None了past_key, past_value = layer_past # 取出之前计算好的 key, valuekey = torch.cat((past_key, key), dim=-2) # past_key 与当前 token 对应的 key 拼接value = torch.cat((past_value, value), dim=-2) # past_value 与当前 token 对应的 value 拼接if use_cache is True:present = (key, value)
else:present = None

参考

  • KV Cache

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

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

相关文章

Trinitycore学习之在vscode查看远端服务器上源码配置

1:安装vscode,去官网下载,这里下载windows版本安装包 .zip https://code.visualstudio.com/Download 2:安装后,安装扩展chinese,使用中文设置,需要重启vscode。 3:安装ssh相关插件…

Springmvc之JSR303和拦截器

JSR303拦截器 1.JSR303 什么是JSR303 JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的…

06目标检测-One-stage的目标检测算法

一、 One-stage目标检测算法 使用CNN卷积特征直接回归物体的类别概率和位置坐标值(无region proposal)准确度低,速度相对two-stage快 二、One-stage基本流程 输入图片------对图片进行深度特征的提取(主干神经网络&#…

常用命令(Linux、Git、g++、gdb)

文章目录 一、Linux1、解压缩2、远程操作文件 二、Git三、g四、gdb 一、Linux 1、解压缩 // 压缩文件及文件夹 tar -zcvf test.tar.gz file1 file2 dir1 dir2// 解压到当前目录 tar -xvf qtcreator-v7.0.0.tar.xz2、远程操作文件 (1)远程操作服务器&a…

跨平台游戏引擎 Axmol-2.0.0 正式发布

下载 https://github.com/axmolengine/axmol/releases/tag/v2.0.0 更新日志 添加实验性的 WebAssembly 构建支持(WebGL 2.0),由 nowasm 贡献 已知问题 WebGL context lost 尚未处理 部署在 github pages 的 demo 可快速预览,注意:由于 Git…

苹果数据恢复软件:Omni Recover Mac

Omni Recover是一款十分实用的Mac数据恢复软件,为用户提供了简单、安全、快速和高效的数据恢复服务。如果您遇到了Mac或iOS设备中的数据丢失和误删情况,不要着急,不妨尝试一下Omni Recover,相信它一定会给您带来惊喜。 首先&…

CSS选择器

基本选择器 通配选择器 可以选中所有的HTML元素,清除样式时可以使用 * {color: orange;font-size: 40px; }元素选择器 为元素统一设置样式,故无法实现差异化设置 /* 为所有h1元素添加样式 */ h1 {color: red;font-size: 60px; }/* 为所有p元素添加样…

【C++ • STL • 力扣】详解string相关OJ

文章目录 1、仅仅翻转字母2、字符串中的第一个唯一字符3、字符串里最后一个单词的长度4、验证一个字符串是否是回文5、字符串相加总结 ヾ(๑╹◡╹)ノ" 人总要为过去的懒惰而付出代价 ヾ(๑╹◡╹)ノ" 1、仅仅翻转字母 力扣链接 代码1展示&…

ENVI_IDL: 基础语法详解

01 题目 02 代码说明 题目本身很简单,但是我自己加了一些东西进去增加难度。主要包括print函数的封装、格式化字符串,但是不影响代码的阅读。(注:对于没有语言基础的人而言相对阅读困难,但是由于IDL是解释型语言&…

antd react 文件上传只允许上传一个文件且上传后隐藏上传按钮

antd react 文件上传只允许上传一个文件且上传后隐藏上传按钮 效果图代码解析 效果图 代码解析 import { Form, Upload, message } from antd; import { PlusOutlined } from ant-design/icons; import { useState, useEffect } from react; import { BASE_URL } from /utils/…

网络爬虫-----初识爬虫

目录 1. 什么是爬虫? 1.1 初识网络爬虫 1.1.1 百度新闻案例说明 1.1.2 网站排名(访问权重pv) 2. 爬虫的领域(为什么学习爬虫 ?) 2.1 数据的来源 2.2 爬虫等于黑客吗? 2.3 大数据和爬虫又有啥关系&…

stm32---基本定时器(TIM6,TIM7)

STM32F1的定时器非常多,由两个基本定时器(TIM6,TIM7)、4个通用定时器(TIM2-TIM5)和两个高级定时器(TIM1,TIM8)组成。基本定时器的功能最为简单&am…

自动创建设备节点udev机制实现

自动创建设备节点udev机制实现过程: 1.当插入设备,内核会向udev发送一个事件,其中包含着设备的信息。 2.udev会根据收到的设备信息匹配相应的规则文件。 3.udev会根据规则文件中的配置,创建一个唯一的设备节点文件。通常存储在/d…

〔022〕Stable Diffusion 之 生成视频 篇

✨ 目录 🎈 视频转换 / mov2mov🎈 视频转换前奏准备🎈 视频转换 mov2mov 使用🎈 视频转换 mov2mov 效果预览🎈 视频无限缩放 / Infinite Zoom🎈 视频无限缩放 Infinite Zoom 使用 🎈 视频转换 /…

ITIL 4—创建、交付和支持—设定工作优先级和管理供应商

5. 设定工作优先级和管理供应商 5.1 为什么我们要对工作优先级排序? 只要工作需求超出了在预期时间内能完成的产能,就会出现排队的情况。在理想情况下,组织的需求没有任何变化,并且拥有满足需求所需的适当质量和数量的资源。但现实里&…

Tomcat多实例部署和动静分离

一、多实例部署: 多实例:多实例就是在一台服务器上同时开启多个不同的服务端口,同时运行多个服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。 1.前期准备: 1.关闭防火墙:systemctl …

Multi Query Attention Group Query Attention

Multi Query Attention(MQA)在2019年就被提出来了,用于推理加速,但在当时并没有受到很多关注,毕竟一张2080就能跑Bert-base了。随着LLM的大火,MQA所带来的收益得以放大。 思路 Multi Query Attention(MQA)跟Multi Head Attention…

coudn‘t deserialize object in variable ‘entity‘.获取流程变量无法反序列化问题

coudn‘t deserialize object in variable ‘entit y‘.获取流程变量无法反序列化问题 尝试反序列化一个对象到变量 ‘entity’ 时失败。这个问题可能有很多原因,下面是一些可能的情况和解决方案: 1、对象格式不正确:被反序列化的对象可能不…

计算机视觉实战项目(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别)

图像分类 教程博客_传送门链接:链接 在本教程中,您将学习如何使用迁移学习训练卷积神经网络以进行图像分类。您可以在 cs231n 上阅读有关迁移学习的更多信息。 本文主要目的是教会你如何自己搭建分类模型,耐心看完,相信会有很大收获。废话不…

自动驾驶汽车下匝道路径优化控制策略研究

摘要 随着社会不断进步, 经济快速发展, 科学技术也在突飞猛进, 交通行业是典型的领域之一。现阶段的交通发展W 实现智能交通系统为目标, 正逐渐从信息化步入智能化,朝着智慧化迈进。近年来,一系…