大模型面试常考知识点2

文章目录

  • 1. LLM推理attention优化技术
    • KV Cache
    • PageAttention显存优化
    • MHA\GQA\MQA优化技术
    • FlashAttention优化技术
    • 稀疏Attention
      • 1. Atrous Self Attention
      • 2. Local Self Attention
      • 3. Sparse Self Attention
  • 2. LLM数据处理关键
    • 去重
    • 多样性保证
    • 构造扩充数据
    • 充分利用数据
  • 参考文献

1. LLM推理attention优化技术

首先LLM推理的过程是一个自回归的过程,也就是说前i次的token会作为第i+1次的预测数据送入模型,拿到第i+1次的推理token。

kv cache是为了避免每次采样token时重新计算键值向量。利用预先计算好的k值和v值,可以节省大量计算时间,尽管这会占用一定的存储空间。

KV Cache

KV Cache是Transformer标配的推理加速功能,transformer官方use_cache这个参数默认是True,但是它只能用于Decoder架构的模型,这是因为Decoder有Causal Mask,在推理的时候前面已经生成的字符不需要与后面的字符产生attention,从而使得前面已经计算的K和V可以缓存起来。

在这里插入图片描述
在这里插入图片描述
我们每一步其实之需要根据 Q k Q_k Qk计算 A t t k Att_k Attk就可以,之前已经计算的Attention完全不需要重新计算。但是 K K K V V V 是全程参与计算的,所以这里我们需要把每一步的 K K K V V V 缓存起来。所以说叫KV Cache好像有点不太对,因为KV本来就需要全程计算,可能叫增量KV计算会更好理解。

当前轮输出token与输入tokens拼接,并作为下一轮的输入tokens,反复多次。可以看出第i+1轮输入数据只比第i轮输入数据新增了一个token,其他全部相同!因此第i+1轮推理时必然包含了第i轮的部分计算。KV Cache的出发点就在这里,缓存当前轮可重复利用的计算结果,下一轮计算时直接读取缓存结果。

注:KVCache是推理加速用的,训练无需。

所以未来LLM推理优化的方案就比较清晰了,就是尽可能的减少推理过程中kv键值对的重复计算,实现kv cache的优化。
目前减少KV cache的手段有许多,比如page attention、MQA、MGA等,另外flash attention可以通过硬件内存使用的优化,提升推理性能。

PageAttention显存优化

PageAttention是目前kv cache优化的重要技术手段,目前最炙手可热的大模型推理加速项目VLLM的核心就是PageAttention技术。在缓存中,这些 KV cache 都很大,并且大小是动态变化的,难以预测。已有的系统中,由于显存碎片和过度预留,浪费了60%-80%的显存。PageAttention提供了一种技术手段解决显存碎片化的问题,从而可以减少显存占用,提高KV cache可使用的显存空间,提升推理性能。

首先,PageAttention命名的灵感来自OS系统中虚拟内存和分页的思想。可以实现在不连续的空间存储连续的kv键值。另外,因为所有键值都是分布存储的,需要通过分页管理彼此的关系。序列的连续逻辑块通过 block table 映射到非连续物理块。

MHA\GQA\MQA优化技术

在这里插入图片描述
MQA,全称 Multi Query Attention, 而 GQA 则是前段时间 Google 提出的 MQA 变种,全称 Group-Query Attention。MHA(Multi-head Attention)是标准的多头注意力机制,h个Query、Key 和 Value 矩阵。MQA 让所有的头之间共享同一份 Key 和 Value 矩阵,每个头只单独保留了一份 Query 参数,从而大大减少 Key 和 Value 矩阵的参数量。GQA将查询头分成N组,每个组共享一个Key 和 Value 矩阵。

如上图,GQA以及MQA都可以实现一定程度的Key value的共享,从而可以使模型体积减小,GQA是MQA和MHA的折中方案。这两种技术的加速原理是(1)减少了数据的读取(2)减少了推理过程中的KV Cache。需要注意的是GQA和MQA需要在模型训练的时候开启,按照相应的模式生成模型。

FlashAttention优化技术

Flash attention推理加速技术是利用GPU硬件非均匀的存储器层次结构实现内存节省和推理加速,通过合理的应用GPU显存实现IO的优化,从而提升资源利用率,提高性能。

在这里插入图片描述

稀疏Attention

Attention中,QK的维度为nd,可以发现Q和K的乘积会产生一个nn的矩阵,而计算这种大型矩阵的行方向softmax的复杂度是 O ( n 2 ) O(n^2) O(n2)

对于超长序列,计算全局自注意力(每个元素与其他每个元素相乘)会变得非常困难,因此也就有了后来的一些研究对自注意力机制的复杂度进行优化,当然这样做也可能会失去自注意力能够处理长距离上下文的优势。

在这里插入图片描述在上图中,左边显示了注意力矩阵,右边显示了关联性,这表明每个元素都跟序列内所有元素有关联。

所以,如果要节省显存,加快计算速度,那么一个基本的思路就是减少关联性的计算,也就是认为每个元素只跟序列内的一部分元素相关,这就是稀疏Attention的基本原理。

1. Atrous Self Attention

在这里插入图片描述
Atrous Self Attention就是启发于“膨胀卷积(Atrous Convolution)”,如下右图所示,它对相关性进行了约束,强行要求每个元素只跟它相对距离为k,2k,3k,…的元素关联,其中k>1是预先设定的超参数。

由于现在计算注意力是“跳着”来了,所以实际上每个元素只跟大约n/k个元素算相关性,这样一来理想情况下运行效率和显存占用都变成了 O ( n 2 / k ) O(n^2/k) O(n2/k),也就是说能直接降低到原来的1/k。

2. Local Self Attention

另一个要引入的过渡概念是Local Self Attention,中文可称之为“局部自注意力”。具体来说也很简单,就是约束每个元素只与前后k个元素以及自身有关联,如下图所示:

在这里插入图片描述
其实Local Self Attention就跟普通卷积很像了,都是保留了一个2k+1大小的窗口,然后在窗口内进行一些运算,不同的是普通卷积是把窗口展平然后接一个全连接层得到输出,而现在是窗口内通过注意力来加权平均得到输出。对于Local Self Attention来说,每个元素只跟2k+1个元素算相关性,这样一来理想情况下运行效率和显存占用都变成了𝒪((2k+1)n)∼𝒪(kn)了,也就是说随着n而线性增长,这是一个很理想的性质——当然也直接牺牲了长程关联性。

3. Sparse Self Attention

Atrous Self Attention是带有一些洞的,而Local Self Attention正好填补了这些洞,所以一个简单的方式就是将Local Self Attention和Atrous Self Attention交替使用,两者累积起来,理论上也可以学习到全局关联性,也省了显存。

直接将两个Atrous Self Attention和Local Self Attention合并为一个:
在这里插入图片描述从注意力矩阵上看就很容易理解了,就是除了相对距离不超过k的、相对距离为k,2k,3k,…的注意力都设为0,这样一来Attention就具有“局部紧密相关和远程稀疏相关”的特性,这对很多任务来说可能是一个不错的先验,因为真正需要密集的长程关联的任务事实上是很少的。

2. LLM数据处理关键

去重

重复数据、冲突数据识别
minHash、Kmeans

多样性保证

构造扩充数据

例如:表格问答 利用GPT4答案扩写

充分利用数据

例如:多轮对话数据利用
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

参考文献

看图学KV Cache
LLM推理优化技术综述
从标准Attention到稀疏Attention
如何充分高效训练多轮对话大模型

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

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

相关文章

【电路笔记】-无源高通滤波器

无源高通滤波器 文章目录 无源高通滤波器1、概述2、一阶高通滤波器的频率响应3、高通滤波器示例4、二阶高通滤波器5、RC 差异化因素高通滤波器与低通滤波器电路完全相反,因为这两个组件已互换,滤波器输出信号现在从电阻器两端获取。 1、概述 由于低通滤波器只允许低于其截止…

Shell编程之循环语句

目录 1.for循环语句(遍历循环) 1.1 for语句的结构 1.2 for语句的执行流程 1.3 for语句应用示例 1.4 echo命令参数 2.while循环语句 2.1 while语句应用示例 2.2 通过while循环读取行内容 3.until 4.双重循环 4.1 双重循环案例 4.2 循环的退出 …

从零开始详解OpenCV条形码区域分割

前言 在识别二维码之前,首先要划分出二维码的区域,在本篇文章中将从零开始实现二维码分割的功能,并详细介绍用到的方法。 我们需要处理的图像如下: 完整代码 首先我们先放出完整代码,然后根据整个分割流程介绍用到…

基于fastapi sqladmin开发,实现可动态配置admin

1. 功能介绍: 1. 支持动态创建表、类,属性,唯一约束、外键,索引,关系,无需写代码,快速创建业务对象; 2. 支持配置admin显示参数,支持sqladmin原生参数设置,动…

Istio 使用 Apache SkyWalking 进行服务链路追踪、链路监控告警

一、Istio 使用 Apache SkyWalking 链路追踪和告警 SkyWalking是一个开源的观测平台,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据,SkyWalking 提供了一种简便的方式来清晰地观测分布式系统,甚至可以观测横跨不同云的系统…

终端安全管理防护软件排行榜2024(四大终端监控软件推荐)

你的企业存在这些问题吗? 数字化转型的深入和远程办公模式的普及,企业对终端安全管理的需求日益凸显。 确保终端设备的安全性不仅关乎数据保护、业务连续性,更直接影响企业的声誉与合规性。 2024年终端安全防护软件排行榜,有谁荣…

【MySQL的内置函数】

文章目录 一、日期函数1.current_date()2.current_time()3.current_timestamp4. date_add 穿越未来5.date_sub 回到过去6.datediff案例 二、字符串函数2.1charset2.2 concat ——拼接字符串2.3 ucase——转化成大写2.4 lcase——转化成小写2.5 left()2.6…

树与二叉树之间的转换

树转化成二叉树:兄弟相连留长子 1.加线:在兄弟之间加一条线 2.抹线:对每个结点,除了其左孩子外,去除其与其余孩子之间的关系 3.旋转:以树的根结点为轴心,将整树顺时针转45 二叉树转化成为树…

苹果 iPhone 15 Pro Max 称霸:智能手机市场势不可挡

苹果 iPhone 15 Pro Max 称霸:智能手机市场势不可挡 概述 在拥挤且竞争激烈的智能手机市场中,苹果的 iPhone 15 Pro Max 成为明显的赢家,在 2024 年第一季度最畅销智能手机排行榜上名列前茅。根据 Counterpoint Research 的数据&#xff0c…

将来会是Python、Java、Golang三足鼎立吗?

在开始前我有一些资料,是我根据网友给的问题精心整理了一份「 Java的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 软件工程里没有银弹&#xff…

uniapp、web网页跨站数据交互及通讯

来来来,说说你的创作灵感!这就跟吃饭睡觉一样,饿了就找吃的,渴了就倒水张口灌。 最近一个多月实在是忙的没再更新日志,好多粉丝私信说之前的创作于他们而言非常有用!受益菲浅,这里非常感谢粉丝…

前端nginx(windows操作系统)学习配置开发验证

Nginx概述 Nginx 作为负载均衡在 Linux 系统上具备很好的并发性能,并且占用极小的内存。但是在 Windows 系统上并不支撑较高并发,所以在Windows系统上选用Nginx作为负载均衡,需要考虑并发情况。 若并发需求低于 300,部署集群仅以…

使用 Valgrind 检测内存泄漏

Valgrind 是一个编程工具,用于内存调试、内存泄漏检测以及性能分析。Valgrind 工具集中的 Memcheck 是用于检测内存管理和线程错误的主要工具。 参考:https://blog.csdn.net/weixin_44046545/article/details/138417524 1、安装 Valgrind sudo apt-ge…

汇昌联信科技:做拼多多网店要押金吗?

做拼多多网店要押金吗?”这个问题,其实与拼多多的平台规则有关。在开店之前,商家需要详细了解平台的各项规定和费用构成,这样才能做好充足的准备。 一、明确回答问题 做拼多多网店,不需要支付押金。拼多多的入驻门槛相对较低&…

【本地部署及云化部署】

文章目录 本地部署及云化部署介绍 文章目录 文章目录一、本地部署模式二、云化部署模式总结 一、本地部署模式 需建设专业化机房,系统应用、前端软件全部安装到本地服务器上。需要专业的IT、网络安全、DBA、电气化工程师进行维护。近些年勒索病毒安全事件频发&am…

k8s设置在任意node里执行kubectl 命令

一、问题 正常来讲kubectl 只能在master node 里运行 当我们尝试在某个 node 节点来执行时, 通常会遇到下面错误 执行错误:The connection to the server localhost:8080 was refused - did you specify the 原因:因为k8s的各个组建&#xf…

安装配置pushgateway

环境 主机名 服务器IP 系统 说明 Ubuntu -1 192.168.1.144 Ubuntu.20.04 docker安装Prometheus docker 192.168.1.140 cent…

KAN核心团队震撼力作!MIT华人用AI首次发现物理学全新方程 | 最新快讯

新智元报道 编辑:Aeneas 好困 刚刚提出了 KAN 的 MIT 物理学家 Max Tegmark 和北大校友刘子鸣,又有一项重磅研究问世了!团队发现,它们用 AI 发现了物理学中的新方程,从此,AI 很可能被引入物理学研究领域&am…

东芝移动硬盘是固态还是机械硬盘?数据丢失怎么办

东芝移动硬盘凭借出色的性能和稳定性,在市场上备受赞誉。那么,如何判断自己手中的东芝移动硬盘是固态硬盘还是机械硬盘呢?本文将指导您如何进行这一判断,并深入探讨固态硬盘与机械硬盘之间的区别。同时,针对数据丢失这…

RustDesk 自建服务器部署和使用教程

RustDesk 是一个强大的开源远程桌面软件,是中国开发者的作品,它使用 Rust 编程语言构建,提供安全、高效、跨平台的远程访问体验。可以说是目前全球最火的开源远程桌面软件了,GitHub 星星数量达到了惊人的 64k! 与 Team…