MIT提出基于Transformer的Cross-Layer Attention:江湖骗子还是奇思妙想

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于构建生产级别架构则可以关注AI架构设计专栏。技术宅麻烦死磕LLM背后的基础模型。

键值(KV)缓存对于加速基于Transformer的大型语言模型 (LLM) 的解码至关重要。多查询注意力(MQA)和分组查询注意力(GQA)通过允许多个查询头共享单个键/值头,可以有效地减少 KV 缓存大小。跨层注意力(CLA)通过在相邻层之间共享键和值头来进一步实现这一点,从而在保持准确性的同时将 KV 缓存大小减少 2 倍。CLA针对位于传统帕累托前沿的MQA进行改进,在推理过程中实现更长的序列长度和更大的批量大小。

MQA和GQA

Transformer模型中的注意力机制允许解码器专注于输入中最相关的部分,从而提高模型对复杂文本的理解。它的工作原理类似于数据库查询,其中一个单词(Query)被查询或与所有其他单词(Key)的相关性进行比较,结果是检索到的“值”的加权和,其中包含相关性信息。由于每个单词都会与序列中的所有其他单词进行比较,因此查询、键和值可以被视为单词本身——但它们通过可学习的权重矩阵(Wq、Wk 和 Wv)进行区分,这权重矩阵由神经网络训练以提供更好的上下文。

在“我帮助老奶奶过马路”这样的句子中,“我”和“老奶奶”之间存在关系,而“老奶奶”和“过马路”这个动作之间也存在另一个重要的联系。为了解决这个问题,Llama 13B和Llama2 7B等模型中使用的多头注意力机制(MHA)多次并行应用上述注意力机制,以捕捉数据中的不同类型的关系。

多头注意力机制包含多个注意力层,每个注意力层都保存Query、Key和Value的权重矩阵。虽然这种复杂性可以捕捉到更多细微差别,但MHA的最大缺点在于它在推理过程中对内存和带宽的压力。由于必须在每个解码器步骤中加载所有注意力键和值,因此这种内存和带宽开销可能成为严重的瓶颈。

多查询注意机制 (MQA)较为激进,其中多个查询头只存在一个键值头。虽然MQA显着减少了内存负载并提高了推理速度,但它的代价是质量较低和训练不稳定。

分组查询注意机制 (GQA)在MHA的质量和MQA的速度之间取得了良好的平衡。GQA使用键值头的数量作为1(MQA)和查询头数量(MHA)之间的中间值。由于要加载的键值对较少,内存负载和计算复杂度均会降低。

模型架构

受到MQA和GQA的启发,MIT研究团队提出了Cross-Layer Attention。从图中可以看出两层之间有一层直接使用上一层的kv参数。

可以看到在CLA中,只有模型中的一部分层会将输入和KV矩阵参数进行计算,而哪些被跳过的注意力机制层则重复使用空投过来的KV激活值,这意味着真正进行KV运算的层可以通过缓存结果空投至后层。与传统架构相比,被空投的那层少了KV参数矩阵,因此CLA能够减少对内存的使用。

当然,CLA其实是一种空投的策略,它还是可以和MQA、GQA、MHA进行组合使用。此外,与GQA的机制不同,CLA 可以改变共享每个KV参数矩阵的层数(即将数据空投的层数)。不同的共享因子形成不同CLA配置,例如CLA2,它在一对相邻层之间进行数据空投;CLA3,它是在3层之间共享参数,即最底下的那层将计算好的数据直接空投至上面两层。如下图所示:

正因为参数少了,所以在开销方面的指标肯定提升不少,当然是否还得确保准确率不变。提升的指标如下:

  • KV 缓存内存:CLA 显着减少了 KV 缓存内存占用量,减少的倍数等于共享因子

  • 训练内存占用:CLA 减少了训练期间具体化的中间 KV 激活张量的内存占用,尽管对于 GQA 和 MQA 模型,此类 KV 张量与模型的隐藏状态和 MLP 激活相比通常很小。

  • 模型并行性:CLA 与标准完全兼容并行技术,可用于跨多个加速器分片模型权重。

  • 参数和FLOP:由于CLA 减少了模型中KV投影块的总数,因此CLA 略微减少了模型中参数的数量以及前向或后向传递期间所需的FLOP计算总量。

  • 解码延迟:在完整的LLM服务堆栈的背景下,CLA可以实现比其他方式更大的批量大小和更长的KV缓存持久时间,可以减少推理延迟。

  • 核心Attention延迟:与MQA和GQA不同,CLA对每个解码步骤中Attention机制消耗的内存带宽没有直接影响。

组合性能评估

在众多的实验之中,MQA结合CLA2表现得最好。研究人员一共针对MQA 和CLA2训练了五个模型。将MQA-CLA2模型的Head Size从dhead = 512 降低到 dhead = 64,从而使能够与一系列具有不同KV缓存容量的非CLA 基线模型进行比较。

与需要相同数量 KV 缓存的基线模型相比,MQA-CLA2型能够实现更好的困惑度,从而提高了准确性/记忆帕累托前沿。

上图展示了使用和不使用 CLA 时的准确性/内存Pareto前沿图。MQA-CLA2模型的头部尺寸dhead ∈ {64, 90, 128} 能够与基线MQA模型的KV缓存内存占用相匹配。头部尺寸 dhead ∈ {32, 46, 64},同时实现 0.21-0.48 点范围内的困惑度(perplexity)显着改善。 此外,MQA-CLA2模型具有 dhead ∈ {256, 512} 的大头部尺寸,能够与dhead=128 的MQA和GQA2基线的KV缓存相匹配,同时实现0.03点的小幅困惑度改进。

那为什么是MQA+CLA2是最优的呢?单独的MQA和单独的GQA都能够找到解释。而CLA的背后的逻辑是什么就需要交给读者去判断了,因为只有找到CLA的内在,才能真正的判断这种架构的合理性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

漫谈企业信息化安全 - 零信任架构

一、引言 《万物简史》的作者比尔布来森说,当他小的时候学科学的时候,好像这些科学家们都是有一种本领,把科学总是以一种让人看不懂的方式说得神乎其神,好像有藏着什么不可告人的秘密。因此,想要写一本让大家都能看得…

Apache CXF Aegis databinding SSRF 高危漏洞修复

一、漏洞修复 Apache CXF Aegis databinding SSRF漏洞 Spring Web UriComponentsBuilder URL解析不当漏洞 二、修复步骤 1、Apache CXF Aegis databinding SSRF漏洞修复 步骤: 进入服务器搜索 databinding find -name *databinding* 发现版本是3.1.6 果断…

Android关于service call 直接调用方法分析

1 背景 希望通过命令的方式控制蓝牙打开与关闭,通过网上搜索我们都能搜到 //打开蓝牙 adb shell service call bluetooth_manager 6 //关闭蓝牙 adb shell service call bluetooth_manager 8其中运用到的就是service call,其机制是通过 Android 的 Bin…

vue3 3D炫酷模型banner图

项目场景&#xff1a; 在官网首页展示3D炫酷动画模型&#xff0c;让整个模型都展示出来。 问题描述 主要是3D动画的展示效果&#xff0c;有些3d模型网站可以从51建模网站中获取。 案例代码&#xff1a; <script setup> import * as imgs from ../units/img import { o…

融资融券保证金比例,融资融券最低利率4.0%

融资融券保证金比例是指投资者交付的保证金与融资、融券交易金额的比例&#xff0c;用于控制投资者初始资金的放大倍数。这个比例分为融资保证金比例和融券保证金比例。 融资融券保证金比例的计算 1. 融资保证金比例是指投资者融资买入证券时交付的保证金与融资交易金额的比例…

穿越时空的工厂之旅:探索可视化三维场景的奥秘

在科技日新月异的今天&#xff0c;我们似乎总是在不断追求着更加高效、智能的生产方式。 传统的工厂管理方式往往依赖于平面图纸、纸质文档和现场巡查&#xff0c;这不仅效率低下&#xff0c;而且容易出错。而三维可视化技术通过3D建模和虚拟现实技术&#xff0c;将工厂内部的各…

苗情灾情监控系统—提高农业生产效率

TH-MQ2苗情灾情监控系统是一种用于监测农作物生长状况和灾情的设备&#xff0c;通过实时监测和数据分析&#xff0c;帮助农民及时了解作物生长情况&#xff0c;采取相应的管理措施&#xff0c;提高农业生产效率和降低生产成本。 该系统通常由多种传感器、摄像头、数据传输模块等…

【项目问题解决】 java.lang.IllegalArgumentException: XML fragments parsed

java.lang.IllegalArgumentException: XML fragments parsed from previous mappers does not contain value for com.xxx.xxx.xxx.xxx.dao.SingleApasInfoDao.selectListCondition 目录 【项目问题解决】 java.lang.IllegalArgumentException: XML fragments parsed from pr…

【机器学习】Python中的决策树算法探索

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Python中的决策树算法探索引言1. 决策树基础理论1.1 算法概述1.2 构建过程 2. P…

AI大模型探索之路-实战篇8:多轮对话与Function Calling技术应用

系列篇章&#x1f4a5; AI大模型探索之路-实战篇4&#xff1a;深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5&#xff1a;探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6&#xff1a;掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…

数据结构的直接插入排序(C语言版)

一.直接插入排序的基本概念 1.直接插入排序的基本思想 将数组分为已排序和未排序两部分。 每次从未排序部分取出一个元素,将其插入到已排序部分的合适位置,使得已排序部分保持有序。 重复步骤2,直到整个数组有序。 2.排序的工作原理 假设前 i-1 个元素已经有序,现在要将第…

基于微信小程序+ JAVA后端实现的【医院挂号预约系统】 设计与实现 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称&#xff1a; 《基于微信小程序的医院挂号预约系统设计与实现》 项目技术栈 该项目采用了以下核心技术栈&#xff1a; 后端框架/库&#xff1a; Java, SSM框架数据库&#xff1a; MySQL前端技术&#xff1a; 微信小程序, uni-app 项目展示 全文概括 本…

Linux_应用篇(09) 进程

本章将讨论进程相关的知识内容&#xff0c; 虽然在前面章节内容已经多次向大家提到了进程这个概念&#xff0c;但并未真正地向大家解释这个概念&#xff1b;在本章&#xff0c;我们将一起来学习 Linux 下进程相关的知识内容&#xff0c;虽然进程的基本概念比较简单&#xff0c;…

Tensors张量操作

定义Tensor 下面是一个常见的tensor&#xff0c;包含了里面的数值&#xff0c;属性&#xff0c;以及存储位置 tensor([[0.3565&#xff0c;0.1826&#xff0c;0.6719],[0.6695&#xff0c;0.5364&#xff0c;0.7057]]&#xff0c;dtypetorch.float32,devicecuda:0)Tensor的属…

【动态规划】零基础解决路径问题(C++)

目录 62.路径问题 解法&#xff08;动态规划&#xff09;&#xff1a; 1. 状态表⽰&#xff1a; 2. 状态转移⽅程&#xff1a; 3. 初始化&#xff1a; 4. 填表顺序&#xff1a; 5. 返回值&#xff1a; 不同路径2.0 解法&#xff08;动态规划&#xff09;&#xff1a; …

LLM中的RoPE位置编码代码解析与RoPE的性质分析(一)

本博客需要对位置编码有一定了解&#xff0c;但不熟悉代码实现的老哥看。 正弦位置编码&#xff08;sinusoidal&#xff09; 在介绍RoPE之前&#xff0c;先回顾一下正弦位置编码。 数学表达 P E ( p o s , 2 i ) s i n ( p o s 1000 0 2 i / d m o d e l ) PE(pos, 2i) sin…

行转列——kettle开发14

一、行转列 如图所示&#xff0c;行转列就是把数据字段的字段名转换为一列&#xff0c;把数据行变成数据列。即我们将昨天输出的张三在周一至周日的工作小时转换为7行数据。对应7行数据分别为张三在周一工作多个小时&#xff0c;在周二工作多少个小时等等。 我们来看下行转列组…

怎么设置电脑锁屏密码?一键给你的电脑“上锁”

在保护个人电脑安全方面&#xff0c;设置锁屏密码是一种简单而有效的方法。无论是在家里还是在公共场所&#xff0c;锁屏密码都可以有效防止他人未经授权访问您的电脑&#xff0c;保护您的隐私和数据安全。 然而&#xff0c;对于一些新手用户来说&#xff0c;怎么设置电脑锁屏…

期货学习笔记-横盘行情学习1

横盘行情的特征及分类 横盘行情的概念 横盘行情时中继形态的一种&#xff0c;一般常出现在大涨或大跌之后出现横盘行情是对当前趋势行情的修正&#xff0c;是对市场零散筹码的清理&#xff0c;是为了集中筹码更便于后期行情的展开 横盘行情的特征 1.水平运动&#xff1a;该…

Java基础-反射原理

总结放前面&#xff1a; 反射是可以通过一个类对象或类名称获取到该类的全部信息&#xff08;属性和方法&#xff09;&#xff0c;包括为权限为private。 要使用反射第一步&#xff0c;要获取的类的Class对象&#xff0c;该Class对象存放在堆区&#xff0c;于类加载时创建&…