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

KeyFormer:使用注意力分数压缩KV缓存

Keyformer: KV Cache Reduction through Key Tokens Selection for Efficient Generative Inference

202403,发表在Mlsys

Introduction

优化KV cache的策略,主要是集中在系统级别的优化上,比如FlashAttention、PagedAttention,它们能够优化KV缓存的访问,但是没有减少缓存的读取。即使有MQA、GQA这样,能够真正减少缓存访问量的技术,也是需要在预训练阶段就用上。

有些其他丢弃不重要KV的方式,比如滑动窗口(下图b),它会限制模型捕获全面语义的能力

基于某些token比其他token更有意义的观察,Keyformer提出了一种丢弃不重要token的KV的方式。下图是这种方法和其他方法的对比。

具体来说,观察到90%的注意力权重会集中到关键token的小子集上。这些token对于LLM理解上下文至关重要,但可能超出了滑动窗口注意力的范围。

Keyformer引入了一种混合注意力方法,如上图(d)所示,它在生成下一个token时结合了最近的token和前面的关键token。

实验表明,Keyformer在与H2O等方法相比,有显著改进。这是因为Keyformer在识别关键标记时考虑了被丢弃标记的重要性,而不同于H2O仅基于注意力分数来识别“重头标记”。这句话有点难懂,还看不出来和H2O相比有什么优势

具体步骤

  • 在生成过程中,Keyformer 会在prefill阶段丢弃掉 n - k 个 token,保持 k 个 token 用于后续处理,从而避免显存的过度扩展。

  • 为了适应丢弃 token 后可能出现的挑战,Keyformer 引入了logits 正则化,即通过向未归一化的 logits 添加噪声来增强模型的鲁棒性。这可以帮助模型在推理时识别关键的 token,即使某些上下文信息缺失。

  • Keyformer 选择使用 Gumbel 分布 来进行 logits 调整。Gumbel 分布有一个很好的特性,即它倾向于描述一组样本中的最大值,因此非常适合用于识别关键 token。也就是给归一化前的logits添加Gumbel分布的噪声。

  • Keyformer有一个大小为w的滑动窗口,用于保留最近的w个token。因此每次decode用到的KV就是k-w个关键token的KV和w个最近token的KV

  • 针对每一个token,有一个分数函数:

    其中是温度,和解码采样一样,温度越高越平均,温度越低越不平均;是Gumbel噪声;就是token的注意力分数。这个分数函数用来衡量token对当前解码的重要程度

  • 这个注意力分数每次decode都累积

这个方法需要在显存中一直保存所有的KV缓存,只不过是在计算时只取部分缓存。没有减少显存占用,但减少了访存和计算。

实验部分

baseline:以full attention作为golden标准,目标是达到它的99%-99.9%;以滑动窗口注意力和H2O这两种方法进行比较。

实验从两个方面进行比较,一个是使用了多少比例的KV缓存,能够达到可接受的正确率;另一个是和baseline相比,吞吐量上有多少提升

正确率的实验结果:

横坐标百分之多少,表示保留了百分之多少的KV缓存。显示使用了70%的缓存,就能达到使用全部缓存的99%的效果。

在吞吐量提升的实验上,由于前面实验表明H2O如果只使用50%缓存的情况下,准确率是明显不如keyformer的;因此为了公平起见,就将keyformer设置为保留50% cache,而H2O保持90% cache。

那么显然keyformer的吞吐量会高于H2O

还做了消融实验,主要是这几点:

  1. 计算每个token得分时,是对每个层进行累积分数还是每个层各保留一个分数:结果表明,每个层各保留一个分数的准确率更高

  2. 位置编码使用原始文本中的位置进行编码,还是使用丢弃非关键token后的位置进行编码:前者更好

  3. 不同正则化方式的影响,比较了无正则化、恒定数正则化、高斯正则化和Gumbel正则化,发现高斯正则化还不如不使用正则化,而显然是Gumbel正则化分数最高

  4. 滑动窗口大小在比例为20%-30%时效果最好

相关文章:

KeyFormer:使用注意力分数压缩KV缓存

Keyformer: KV Cache Reduction through Key Tokens Selection for Efficient Generative Inference 202403,发表在Mlsys Introduction 优化KV cache的策略,主要是集中在系统级别的优化上,比如FlashAttention、PagedAttention,它…...

ElementPlus Table 表格实现可编辑单元格

通过基础的Table表格来实现单元格内容的可编辑 1.首先定位到需要编辑的列&#xff0c;替换el-table-column <el-table-column label"Editable Column" width"300"><template #default"{ row, column, $index }"><el-inputsize&qu…...

ASR-LLM-TTS 实时语音对话助手:语音识别、大模型对话、声音生成

参考:https://blog.csdn.net/weixin_42357472/article/details/137020794 asr:funasr-SenseVoiceSmall 离线 llm:deepseek 在线api tts:edge-tts 在线api import pyaudio import wave import threading import numpy as np import time from queue import Queue import web…...

怎样正确做 Web 应用的压力测试?

Web应用&#xff0c;通俗来讲就是一个网站&#xff0c;主要依托于浏览器来访问其功能。 那怎么正确做网站的压力测试呢&#xff1f; 提到压力测试&#xff0c;我们想到的是服务端压力测试&#xff0c;其实这是片面的&#xff0c;完整的压力测试包含服务端压力测试和前端压力测…...

什么是MyBatis?

MyBatis 是一个优秀的持久层框架&#xff0c;它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 使用简单的 XML 或注解用于配置和原始映射&#xff0c;将接口和 Java 的 POJOs&#xff08;Plain Old Java Objects&#xff0c;普通的 Java对象&#xf…...

【网络云计算】2024第50周-每日【2024/12/13】小测-理论-写10个Bash Shell脚本-解析

文章目录 1. 计算1到100的和2. 列出当前目录下所有文件和文件夹3. 检查文件是否存在4. 备份文件到指定目录&#xff08;简单示例&#xff09;5. 打印系统当前日期和时间6. 统计文件中的行数7. 批量重命名文件&#xff08;将.txt后缀改为.bak&#xff09;8. 查找进程并杀死&…...

联发科MTK8788_MT8788安卓核心板安兔兔跑分_安卓主板方案商

MT8788安卓核心板具有集成的蓝牙、fm、WLAN和gps模块&#xff0c;是一个高度集成的基带平台&#xff0c;包括调制解调器和应用处理子系统&#xff0c;启用LTE/LTE-A和C2K智能设备应用程序。该芯片集成了工作在2.0GHz的ARM Cortex-A73、最高可达2.0GHz的ARM Cortex-A53和功能强大…...

文本情感分类

一、文本情感分类的基本概念 文本情感分类是自然语言处理&#xff08;NLP&#xff09;中的一个重要任务&#xff0c;它主要是对文本中所包含的情感倾向进行分类。情感倾向通常可以分为正面&#xff08;如赞美、高兴等&#xff09;、负面&#xff08;如批评、愤怒等&#xff09;…...

【已解决】启动此实时调试器时未使用必需的安全权限。要调试该进程,必须以管理员身份运行此实时调试器。是否调试该进程?

【已解决】启动此实时调试器时未使用必需的安全权限。要调试该进程&#xff0c;必须以管理员身份运行此实时调试器。是否调试该进程? 目录一、前言二、具体原因三、解决方法 目录 报错截图 一、前言 进行应用程序开发时&#xff0c;需要对w3wp进行附加调试等场景&#xff…...

3D工具显微镜的测量范围

一、测量尺寸范围 样品尺寸&#xff1a; 3D工具显微镜通常能够测量各种尺寸和形状的样品&#xff0c;从小至微米级别的微小结构到大至几厘米甚至更大的物体。具体的测量尺寸范围取决于显微镜的载物台大小、镜头焦距以及软件处理能力。测量精度&#xff1a; 3D工具显微镜的测量…...

电脑丢失dll文件一键修复的多种方法分析,电脑故障修复攻略

电脑在使用过程中&#xff0c;有时会遇到DLL文件丢失的情况&#xff0c;这可能导致软件无法正常运行或系统出现故障。当面对这种状况时&#xff0c;不必过于慌张&#xff0c;因为有多种有效的修复方法可供选择。下面我们一起来看看电脑丢失dll文件的多种解决方法。 一.了解什么…...

Elasticsearch 集群快照的定期备份设置指南

Elasticsearch 集群快照的定期备份设置指南 概述 快照&#xff1a; 在给定时刻对整个集群或者单个索引进行备份&#xff0c;以便在之后出现故障时可以基于之前备份的快照进行快速恢复。 前提条件&#xff1a; 准备一个备份存储盘&#xff0c;本指南采用的是AWS EFS文件系统做…...

【YashanDB知识库】kettle同步大表提示java内存溢出

【问题分类】数据导入导出 【关键字】数据同步&#xff0c;kettle&#xff0c;数据迁移&#xff0c;java内存溢出 【问题描述】kettle同步大表提示ERROR&#xff1a;could not create the java virtual machine! 【问题原因分析】java内存溢出 【解决/规避方法】 ①增加JV…...

HP服务器开启性能模式

ENERGY PERF BIAS CFG 模式指的是通过特定配置(通常是 BIOS 或操作系统中的设置)来控制处理器的能源性能偏置(Energy Performance Bias, EPB)。EPB 是一种机制,允许用户或系统管理员在性能和功耗之间进行权衡。不同的设置可以影响系统的响应速度、能效等。 ENERGY PERF B…...

【kubernetes】资源管理方式

目录 1. 说明2. 命令式对象管理3. 命令式对象配置4. 声明式对象配置5. 三种方式的对比 1. 说明 1.在Kubernetes&#xff08;k8s&#xff09;中&#xff0c;资源管理是一个核心功能&#xff0c;它允许用户通过操作资源来管理Kubernetes集群。2.Kubernetes将所有的内容都抽象为资…...

react源码探索之预先知识了解

最近快期末考试&#xff0c;本来不打算写博客的&#xff0c;但是一旦停下不知又是何年&#xff0c;或许是我工作之后&#xff0c;也或许是永远把。毕竟这只是用来记录我大学的殷实生活&#xff0c;大四我不再着重记录&#xff0c;而是投身于找工作。时光匆匆&#xff0c;重大一…...

【工具】Git 操作大全

文章目录 1. Git 基础操作1.1 初始化 Git 仓库1.2 克隆现有仓库1.3 配置 Git 用户信息1.4 查看 Git 配置信息 2. 文件操作2.1 查看文件状态2.2 添加文件到暂存区2.3 提交文件到本地仓库2.4 查看提交历史2.5 回退到上一个提交 3. 分支操作3.1 创建新分支3.2 切换分支3.3 查看所有…...

2024年12月17日Github流行趋势

项目名称&#xff1a;google-gemini / cookbook 项目维护者&#xff1a;MarkDaoust markmcd random-forests shilpakancharla Giom-V项目介绍&#xff1a;Gemini API 的使用示例和指南。项目star数&#xff1a;7,977项目fork数&#xff1a;998 项目名称&#xff1a;TEN-framew…...

揭秘语言模型后训练:指令微调、偏好调优与强化学习的深度解析

揭秘语言模型后训练&#xff1a;指令微调、偏好调优与强化学习的深度解析 前言1. 什么是后训练&#xff1f;2. 指令微调&#xff08;Instruction Fine-Tuning, SFT&#xff09;概念训练流程实践示例&#xff1a;TLU 3 3. 偏好调优&#xff08;Preference Tuning, DPO&#xff0…...

AIDD-人工智能药物设计-ChemDraw Mac版pojie安装

AIDD-人工智能药物设计-ChemDraw Mac版pojie安装 Mac系统12.X版本需要安装chemdraw v20及以上。 https://github.com/Z-H-Sun/CS_CCME_Posts/blob/hidden/cos/cdm2.md 一、准备工作 软件下载地址&#xff1a;https://pan.baidu.com/s/1SDZCriXsxPZvcHMoA7WzUA 提取码&#…...

MySQL 入门大全:运算符

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

如何使用Kimi进行学术仿写?

目录 1.Kimi分析仿写选题 2.Kimi拆解论文框架 3.Kimi分析论证方法 学习如何从别的优秀论文中吸取精华是提高学术论文写作的一个高效的方法。适当的模仿能帮助理解研究方向相关内容&#xff0c;还可以借鉴一些可取的论证方法。当然我们也应该要知道&#xff0c;即使是在顶刊发…...

算法训练day2|209.长度最小的字符串,59.螺旋矩阵,

两道题都做过 209 没注意是大于等于&#xff0c;改了一下马上通过了。 class Solution {public int minSubArrayLen(int target, int[] nums) {int l 0, r 0, len nums.length;int count 0, ans len 1, now 0;while(r < len){count nums[r];//r是下一个要加的whil…...

网络安全问题概述

1.1.计算机网络面临的安全性威胁 计算机网络上的通信面临以下的四种威胁&#xff1a; (1) 截获——从网络上窃听他人的通信内容。 (2) 中断——有意中断他人在网络上的通信。 (3) 篡改——故意篡改网络上传送的报文。可应用于域名重定向&#xff0c;即钓鱼网站。 (4) 伪造——伪…...

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:教室信息管理系统(前后端源码 + 数据库 sql 脚本)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 1.0 项目介绍 开发工具&#xff1a;IDEA、VScode 服务器&#xff1a;Tomcat&#xff0c; JDK 17 项目构建&#xff1a;maven 数据库&#xff1a;mysql 8.0 系统用户前台和管理…...

C# 模式匹配

文章目录 前言一、is模式二、switch语句中的模式三、解构模式四、总结 前言 在 C# 中&#xff0c;模式匹配是一种强大的技术&#xff0c;它允许你在代码中更简洁、更安全地检查和处理对象的类型和值。本教程将介绍 C# 中的模式匹配功能&#xff0c;包括is模式、switch语句中的模…...

JWT报CORSFilter错误原因(以Java SpringBoot为例)

JWT 报 CorsFilter 原因&#xff0c;通常是因为跨域请求未通过浏览器的同源策略检查&#xff0c;而 CorsFilter 是用来处理跨域问题的过滤器。如果后端未正确配置 CORS 或 JWT 的传递方式不符合跨域要求&#xff0c;可能导致此类问题。 以下是具体原因及解决方法&#xff1a; …...

百度智能云千帆AppBuilder升级,百度AI搜索组件上线,RAG支持无限容量向量存储!

百度智能云千帆 AppBuilder 发版升级&#xff01; 进一步降低开发门槛&#xff0c;落地大模型到应用的最后一公里。在千帆 AppBuilder 最新升级的 V1.1版本中&#xff0c;企业级 RAG 和 Agent 能力再度提升&#xff0c;同时组件生态与应用集成分发更加优化。 • 企业级 RAG&am…...

【bash】linux中打包某个可执行文件及其依赖文件

linux中打包某个可执行文件及其依赖文件 下面是一个 Bash 脚本&#xff0c;用于一键化地打包指定可执行文件及其依赖库&#xff1a; #!/bin/bash# 脚本用于打包可执行文件及其依赖库&#xff0c;并打印详细信息 # 使用方法&#xff1a; ./package_executable.sh <可执行文…...

FPGA 17 ,FPGA 与 SR-IOV虚拟化技术,高性能计算与虚拟化技术的结合(FPGA 与 SR-IOV 和 PCI,高性能计算与虚拟化的完美融合)

目录 前言 一. SR-IOV 的起源与发展 1. SR-IOV 的起源与时间线 2. SR-IOV 的诞生原因 3. SR-IOV 的详细介绍 二. SR-IOV 和 PCI 之间的关系 三. PCI 的起源与演进 1. PCI 的起源与时间线 2. PCI 的关键特性 四. FPGA 的独特魅力 1. FPGA 的定义与特性 2. FPGA 的内…...

RabbitMQ 安装、配置和使用介绍 使用前端js直接调用方式

1. 安装 RabbitMQ 1.1 安装 Erlang RabbitMQ 是基于 Erlang 语言开发的&#xff0c;因此首先需要安装 Erlang。 在 Ubuntu 上安装 Erlang&#xff1a; bash sudo apt-get update sudo apt-get install erlang 在 CentOS 上安装 Erlang&#xff1a; bash sudo yum insta…...

MySQL基础大全(看这一篇足够!!!)

文章目录 前言一、初识MySQL1.1 数据库基础1.2 数据库技术构成1.2.1 数据库系统1.2.2 SQL语言1.2.3 数据库访问接口 1.3 什么是MySQL 二、数据库的基本操作2.1 数据库创建和删除2.2 数据库存储引擎2.2.1 MySQL存储引擎简介2.2.2 InnoDB存储引擎2.2.3 MyISAM存储引擎2.2.4 存储引…...

芯品荟|SWM221系列芯片之TFTLCD彩屏显示及控制

“革新未来&#xff0c;智驭控制新纪元”&#xff0c;由广东华芯微特集成电路有限公司市场总监张琢&#xff0c;对SWM221系列的强大功能表现进行了整体介绍。 确实&#xff0c;华芯微特在TFTLCD显示及控制有十多年应用基础和积累的团队&#xff0c;仍勇于挑战&#xff0c;自我…...

贪心算法【1】

文章目录 860. 柠檬水找零题目解析算法原理代码实现交换论证法 2208. 将数组和减半的最少操作次数题目解析算法原理代码实现交换论证法 179. 最大数题目解析算法原理代码实现 860. 柠檬水找零 题目链接&#xff1a;860. 柠檬水找零 题目解析 一杯柠檬水5块钱&#xff0c;每个…...

Python PPT合并与拆分 – 详解

目录 使用工具 Python 合并 PPT 合并多个PPT文档 合并每个PPT文档中的特定幻灯片 Python 拆分 PPT 按幻灯片数量拆分 按幻灯片范围拆分 按幻灯片内容拆分 按节 (Section) 拆分 在日常工作或学习中&#xff0c;我们经常需要对PPT文件进行调整&#xff0c;比如将多个PPT…...

JSX:JavaScript的XML

简介 JSX是一种JavaScript的语法扩展&#xff0c;它允许你在JavaScript代码中写类似于HTML的标记。它被React框架广泛使用&#xff0c;以声明式地描述UI组件。JSX最终会被编译成JavaScript对象。 为什么使用JSX&#xff1f; 可读性&#xff1a;JSX使得组件的结构更加清晰&am…...

SAP ABAP-日期格式问题 SAP内部错误,反序列化JSON字符串时发生异常 值 20241215 不是根据 ABAP 的 XML 格式的有效日期

SAP ABAP-日期格式问题 SAP内部错误,反序列化JSON字符串时发生异常 值 20241215 不是根据 ABAP 的 XML 格式的有效日期 在SAP内部用 YYYYMMDD没有问题 外部传入参数...

Golang学习笔记_05——延迟调用

Golang学习笔记_02——函数 Golang学习笔记_03——匿名函数和闭包 Golang学习笔记_04——递归函数 文章目录 延迟调用1. 延迟调用1.1 使用场景1.2 示例 2. panic2.1 使用场景2.2 示例 3. recover3.1 使用场景3.2 示例 源码 延迟调用 在Go语言中&#xff0c;延迟调用&#xff0…...

C++:异常(下)

异常上&#xff1a;C&#xff1a;异常&#xff08;上&#xff09;-CSDN博客 一&#xff1a;异常的重新抛出 大家看下面如果不在里面处理一下的话delete没有运行过。 #include<iostream> #include<string> using namespace std; double division(int a, int b) {if…...

从〇开始深度学习(番外)——下载包

从〇开始深度学习(番外)——下载包 文章目录 从〇开始深度学习(番外)——下载包写在前面正文 写在前面 《从〇开始深度学习&#xff08;番外&#xff09;》系列主要记录一些细碎知识点和技能&#xff0c;与主线并不冲突。如果主线笔记中用得到番外篇的知识或技能&#xff0c;会…...

云原生是什么

云原生是一种构建和运行应用程序的方法&#xff0c;它充分利用了云计算的优势。它不仅仅是指在云上运行应用程序&#xff0c;更重要的是指应用程序的设计、开发、部署和运维方式都充分考虑了云环境的特性&#xff0c;从而能够更好地利用云的弹性、可扩展性和灵活性。 更详细地…...

构建Modbus TCP写多个寄存器指令详解

构建Modbus TCP写多个寄存器指令详解 在Modbus TCP通信中&#xff0c;构建正确的指令对于实现设备间的数据交换至关重要。本文将详细解释如何构建一个Modbus TCP指令&#xff0c;用于向设备地址为1的从站&#xff0c;从地址200&#xff08;0xC8&#xff09;开始&#xff0c;连…...

热更新解决方案3 —— xLua

概述 xLua框架导入和AB包相关准备 xLua导入 其它的导入 C#调用Lua 1.Lua解析器 using System.Collections; using System.Collections.Generic; using UnityEngine; //引用命名空间 using XLua;public class Lesson1_LuaEnv : MonoBehaviour {// Start is called before the fi…...

【Linux】——权限

文章目录 权限的概念创建与删除普通用户普通用户与root用户的切换权限管理权限设置 文件掩码权限的作用粘滞位 权限的概念 在Linux系统中&#xff0c;存在两种主要用户类型&#xff0c;即超级用户root与普通用户。超级用户拥有极高的权限&#xff0c;可以在 Linux 统下执行几乎…...

elasticsearch 使用enrich processor填充数据

文章目录 使用 POST 请求手动插入用户数据1. 创建 Enrich Policy步骤 1.1: 创建 Enrich Policy步骤 1.2: 执行 Enrich Policy 2. 创建 Ingest Pipeline步骤 2.1: 创建 Ingest Pipeline步骤 2.2: 配置 Enrich Processor 参数 3. 使用 Ingest Pipeline步骤 3.1: 使用 Pipeline 进…...

etcd性能调优

性能指标 决定 etcd 性能的关键因素&#xff0c;包括&#xff1a; 延迟 (latency)&#xff1a;延迟是完成操作的时间。吞吐量 (throughput)&#xff1a;吞吐量是在某个时间期间之内完成操作的总数量。当 etcd 接收并发客户端请求时&#xff0c;通常平均延迟随着总体吞吐量增加…...

docker离线安装、linux 安装docker

之前写过一篇docker的离线安装&#xff0c;现在从头再看繁琐了&#xff0c;服务器换了&#xff0c;既然要重搭一遍就要改进一下了。下面步入正题&#xff1a; 1.下载离线软件包 https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz 2.下载安装工具包…...

信息安全工程师-选择题考点总结

密码理论知识 基础理论 一个密码系统至少由明文、密文、加密算法、解密算法和密钥五个部分组成,而其安全性是由密钥决定的。 按照密钥特征的不同,密码体制分为:对称密码体制和非对称密码体制。 按照对明文加密方式的不同,密码体制分为:流密码和分组密码。 非对称密码体…...

【C++】四季分类题目分析与讨论

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目说明&#x1f4af;题目代码实现1.我的做法代码示例解析 2. 老师的类C解法代码示例解析 3. 老师的类C解法代码示例解析 4. 老师新增的基于if的解法代码示例解析 &#x…...

mysqlbinglog如何查看进度呢

要查看 MySQL binlog 的进度&#xff0c;通常是指查看 binlog 文件的当前位置&#xff0c;这对于了解复制进度或者进行恢复操作非常重要。以下是一些常用的方法和 SQL 语句来查看 binlog 进度&#xff1a; 查看当前 binlog 文件和位置&#xff1a; SHOW MASTER STATUS;这个命令…...