大模型中 KV Cache 原理及显存占用分析

news2024/9/23 7:32:59

本文记录大模型推理阶段 KV Cache 的原理及显存占用情况。

Self-Attention 与 KV Cache

如图,当新生成的 token x 进到模型计算 Attention 时,先分别乘上参数矩阵 W q W_q Wq W k W_k Wk W v W_v Wv 得到向量 q,以及矩阵 K、V。然后根据下面公式计算当前 token 跟前面 tokens 的注意力权重(本文为了简化,不考虑多头 MHA)。
在这里插入图片描述
自回归生成过程中,K和V矩阵并没有太大变化,比如下图中 cold 这个词对应了 K 的某一列和 V 的某一行,算完就放那里不再变了。
在这里插入图片描述
轮到生成 chill 这个词时,其实只需要在原始 K 矩阵追加一列,原始 V 矩阵追加一行,而没必要每生成一个 token 都重新计算一遍 K、V 矩阵,这便是 KV Cache 的意义。
在这里插入图片描述

因此在推理的时候,不用每次传入前面全部 token 序列的 embedding,而只需传入 KV Cache 以及当前 token x 的 embedding。Transformer 在算完当前 token x 的 Attention 之后,会把新的 K’ 和 V’ 更新到 GPU 显存中。 左图中 Masked Multi Self Attention 这块也是唯一和前面序列有交互的模块,其他模块(比如 Layer Norm、FFN、位置编码等)都不涉及跟已生成 token 的交互。
在这里插入图片描述

KV Cache 显存占用分析

KV Cache 显存计算方式如下:
2 ∗ p r e c i s i o n ∗ n l a y e r ∗ d m o d e l ∗ s e q _ l e n ∗ b a t c h _ s i z e 2 * precision * n_{layer} * d_{model} * seq\_len * batch\_size 2precisionnlayerdmodelseq_lenbatch_size

  • 2 2 2 是指 K 跟 V 俩矩阵。
  • p r e c i s i o n precision precision 是模型每个参数的字节数,比如 fp32 精度下每个参数 4 字节。
  • n l a y e r n_{layer} nlayer n m o d e l n_{model} nmodel 分别是模型 Decoder layer 层数和 embedding 维度大小。
  • s e q _ l e n seq\_len seq_len b a t c h _ s i z e batch\_size batch_size 顾名思义分别是最大序列长度和 global batch size。

比如以 OPT-30B 模型(bf16,48层,7168维,1024上下文,128 batch size)为例,KV Cache 占的显存是:
2 ∗ 2 ∗ 48 ∗ 7168 ∗ 1024 ∗ 128 = 180 , 388 , 626 , 432 b y t e s ≈ 180 G B 2*2*48*7168*1024*128 \\=180,388,626,432 bytes \\≈ 180GB 224871681024128=180,388,626,432bytes180GB

模型本身仅占显存: 2 ∗ 30 B = 60 B b y t e s = 60 G B 2*30B=60Bbytes=60GB 230B=60Bbytes=60GB
光 KV Cache 就顶模型本身占显存的3倍。(当然一般推理时 batch size是1,这时候KV Cache显存占用就砍到 1/128 了,不过 batch 模式能够最大化利用显存,所以这也是为啥各个大模型厂商 batch 模型都比较便宜了)


参考资料:油管《The KV Cache: Memory Usage in Transformers》

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

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

相关文章

汽车零配件行业看板管理系统应用

生产制造已经走向了精益生产,计算时效产出、物料周转时间等问题,成为每一个制造企业要面临的问题,工厂更需要加快自动化,信息化,数字化的布局和应用。 之前的文章多次讲解了企业MES管理系统,本篇文章就为大…

华为机试题-从(0,0)开始,计算绘图面积-Java

代码在最后面 1 题目描述 绘图机器的绘图笔初始位置在原点(0,0),机器启动后按照以下规则来进行绘制直线。 尝试沿着横线坐标正向绘制直线直到给定的终点E。期间可以通过指令在纵坐标轴方向进行偏移,offset Y为正数表示正向偏移,为负数表示负…

linux源码安装mysql8.0的小白教程

1.下载8.x版本的mysql MySQL :: Download MySQL Community Server (Archived Versions) 2.安装linux 我安装的是Rocky Linux8.6 3.设置ip地址,方便远程连接 使用nmcli或者nmtui设置或修改ip地址 4.使用远程连接工具MobaXterm操作: (1)将mysql8版本的压缩包上传到mybaxterm…

【电商选品干货】差异化卖点要这样打造,80%商家却做不到

今天就给大家说说,如何去挖掘产品的差异化卖点?我们要找差异化卖点,就是因为我们的产品转化率不足,通常有下面几点原因: 1、产品差异化卖点不足,商家占比30% 2、流量和产品卖点不匹配,商家占比…

U-2 Net原理+代码实战教程

目录 一、显著性目标检测1.1 核心目标1.2 技术方法 二、U2-Net2.1 双层嵌套U结构2.2 残差U块(RSU)2.3 网络训练和监督 三、代码实战3.1 克隆仓库3.2 下载预训练模型3.3 安装依赖3.4 运行模型显著性目标检测:训练模型: 一、显著性目…

美团到家平台业务探索

背景 到家业务发展已经近10年,目前最为火热的应该有美团到家、抖音到家等,这种极具挑战性的业务,值得学习和思考。 既然是服务平台化,那一定是兼容了多种业务以及多种模式。 挑战 订单、骑手规模大,供需匹配过程的…

UDS协议——Authentication(29服务)

诊断协议那些事儿 诊断协议那些事儿专栏系列文章,本文介绍诊断和通讯管理功能单元下的29服务Authentication (29 16) service。此服务是在ISO 14229-2020版本中首次增加的为应对网联汽车日益增加的安全风险的新服务。为Client和Server之间的身份认证提供一种方法,以便对意图…

常用3D建模软件有哪些?如何实现3D模型在线预览?

3D建模是指使用计算机软件或其他工具创建三维物体模型的过程。3D建模大概可分为NURBS和多边形网格两类。NURBS对要求精细、弹性与复杂的模型有较好的应用,适合量化生产用途;多边形网格建模则靠拉面方式,适合做效果图与复杂场景动画。建模方法…

论文AIGC率超标,专业去痕工具是快速整改的钥匙,降低学术风险。

在学术领域,独创性是每位研究者梦寐以求的桂冠。随着AI技术的突飞猛进,AI辅助写作软件已成为学术工作者的得力伙伴。尽管如此,这些工具在提供帮助的同时,也引发了一个问题——如何有效减少论文的AI率。AI率,也就是由人…

ubuntu重装系统后,安装cuda,cudnn

一、 先安装驱动,如果驱动安装不成功,会影响桌面,再重装系统还来得及,尝试了很多方法,还是用系统安装最靠谱: 首先进入Ubuntu搜索栏目,找到软件更新器的一个图标,点开之后是这样的。…

Datawhale 2024 年 AI 夏令营第二期——基于术语词典干预的机器翻译挑战赛

#AI夏令营 #Datawhale #夏令营 1.赛事简介 目前神经机器翻译技术已经取得了很大的突破,但在特定领域或行业中,由于机器翻译难以保证术语的一致性,导致翻译效果还不够理想。对于术语名词、人名地名等机器翻译不准确的结果,可以通…

这本书太好了!150页就能让你上手大模型应用开发(免费分享PDF)

如果问个问题:有哪些产品曾经创造了伟大的奇迹?ChatGPT 应该会当之无愧入选。仅仅发布 5 天,ChatGPT 就吸引了 100 万用户——当然,数据不是关键,关键是其背后的技术开启了新的 AI 狂潮,成为技术变革的点火…

浏览器书签助手mTab

本文软件由网友 P家单推人 推荐 什么是 mTab ? mTab 是免费无广告的浏览器书签助手,多端同步、美观易用的在线导航和书签工具,可以用 mTab 书签收藏并自定义常用网站的图标样式,帮助您高效管理网页和应用,提升在线体验。 官方提供…

解决Abaqus2023界面模糊的问题

有没有友友Abaqus成功安装后,打开页面很模糊的。像这个样子,看得时间长了很影响观感。 同样的安装包安装,同样的安装方法在其他电脑上安装后打开是清晰的。这与电脑的屏幕分辨率是有关系的。 下面给出解决办法: 找到你电脑里Ab…

【POSIX信号量】基于环形队列的生产消费模型

文章目录 POSIX信号量初始化信号量销毁信号量等待信号量(P操作)发送信号量(V操作) 基于环形队列的生产消费模型设计思路代码实现 POSIX信号量 POSIX和System V一样,都是unix下的一套管理方法,下面介绍POSIX标准下的信号量。 POSIX…

亚马逊云科技 Amazon Bedrock 构建 AI 应用体验

前言 大模型应用发展迅速,部署一套AI应用的需求也越来越多,从头部署花费时间太长,然而亚马逊科技全托管式生成式 AI 服务 Amazon Bedrock,Amazon Bedrock 简化了从基础模型到生成式AI应用构建的复杂流程,为客户铺设了…

跳水板00

题目链接 跳水板 题目描述 注意点 返回的长度需要从小到大排列必须正好使用k块木板0 < shorter < longer0 < k < 100000 解答思路 用k块两种不同的木板&#xff0c;组合数为k 1&#xff0c;最小的组合为全部使用shorter&#xff0c;每多一块longer&#xff0…

实验04 白盒测试

知识点 白盒测试概述 白盒测试基于程序内部逻辑结构进行测试&#xff0c;关注程序语句、路径、变量状态等。单元测试主要采用白盒测试方法&#xff0c;辅以黑盒测试方法。程序内部结构示意图 白盒测试关注的对象 源代码 检验代码规范性&#xff0c;查找逻辑、内存管理、数…

Jupyter + Pyspark + Yarn 交互式大数据分析

背景: ​ 小批量数据可以使用pandas 进行分析&#xff0c;方便灵活。但大批量&#xff08;千万级别&#xff09;数据&#xff0c;使用pandas分析处理&#xff0c;速度很慢&#xff0c;且需一次性读取全部数据&#xff0c;内存可能溢出。 ​ 此时使用spark分布式分析处理速度很…

记VMware网络适配器里的自定义特定虚拟网络一直加载问题解决办法

1、问题描述 VMware网络适配器里的自定义特定虚拟网络一直加载问题&#xff1a; 在自定义&#xff1a;特定虚拟网络选择的时候 没有上图所示的三个选择&#xff0c;而是正在加载虚拟网络.... 如下图所示&#xff1a; 2、解决办法 2.1、原因分析&#xff1a; 是安装时候出现…