
终于把 deepseek 中的多头潜在注意力机制搞懂了!!
MLA 的核心优化方式:对 KV(Key & Value)进行低秩压缩,只存储一个小的潜在向量 ,在需要时再恢复 Key 和 Value,极大地减少 KV 缓存大小。对 Query 进行低秩压缩,虽然不会减少 KV 缓存,但能够减少训练过程中的激活存储,提高计算效率。这样可以在不显著降低模型性能的情况下,极大减少 Transformer 模型在推理和训练时的内存占用,提高推理速度!解耦旋转位置嵌入
今天给大家介绍 deepseek 中的一个关键创新,多头潜在注意力机制
尽管多头自注意力机制在 Transformer 中取得了很好的效果,但其计算和存储成本较高。因此,研究者提出了多种改进方法来优化多头注意力机制,包括多查询注意力(MQA)和分组查询注意力(GQA),它们主要用于优化推理速度和计算成本。
多头潜在注意力(Multi-Head Latent Attention,MLA)是 DeepSeek 模型中引入的一种创新注意力机制,旨在优化传统多头注意力(Multi-Head Attention,MHA)的计算效率和内存占用。MLA 通过对键(Key)和值(Value)进行低秩联合压缩,显著减少了推理过程中的键值缓存(KV Cache),在保持模型性能的同时降低了内存占用。
多头潜在注意力机制(MLA)
多头潜在注意力 (MLA) 是一种新的注意力机制,旨在解决 MHA 的内存问题。
它通过对键和值进行低秩联合压缩,这可以减小 KV 缓存的大小(减少了计算和存储需求),同时保持甚至提高性能。
MLA 引入了两项关键创新:
-
低秩键值压缩
-
解耦旋转位置嵌入 (RoPE)
低秩键值联合压缩
MLA 的关键是对键(Key)和值(Value)进行低秩联合压缩,以减少 KV 缓存的存储需求。
具体方法如下:
-
键值的低秩压缩
我们不直接存储原始的 Key 和 Value,而是首先将隐藏状态 投影到一个更小的压缩潜在向量
其中:
然后,我们可以通过以下方式从 重新计算 Key 和 Value:
其中:
这样,在推理时,我们只需缓存 而不是完整的 Key 和 Value,因此 KV 缓存的存储需求仅为 ,其中 l 是 Transformer 层数。
-
是上投影(up-projection)矩阵,用于恢复 Key 和 Value。
-
是压缩后的 KV 表示,维度 远小于原始的 Key-Value 维度 ,即存储需求大大降低。
-
是降维投影矩阵,用于将隐藏状态映射到较小的维度。
-
查询(Query)的低秩压缩
MLA 还对查询(Query)进行了低秩压缩,尽管这不会直接减少 KV 缓存的大小。
查询的压缩方式类似于 KV:
其中:
尽管 Query 的压缩不会减少 KV 缓存的大小,但它可以减少训练时的激活存储需求,从而降低计算成本。
-
是压缩后的查询向量, 远小于原始查询维度 。
-
是查询的降维投影矩阵。
-
是查询的上投影矩阵。
总结
MLA 的核心优化方式:
-
对 KV(Key & Value)进行低秩压缩,只存储一个小的潜在向量 ,在需要时再恢复 Key 和 Value,极大地减少 KV 缓存大小。
-
对 Query 进行低秩压缩,虽然不会减少 KV 缓存,但能够减少训练过程中的激活存储,提高计算效率。
这样可以在不显著降低模型性能的情况下,极大减少 Transformer 模型在推理和训练时的内存占用,提高推理速度!
解耦旋转位置嵌入 (RoPE)
为了在保证内存效率的同时高效地结合旋转位置编码(RoPE),MLA 采用了一种解耦 RoPE 策略。
传统 RoPE 简介
旋转位置编码(RoPE)是一种高效的相对位置编码方法。它通过将 token 的位置信息直接嵌入查询(Q)和键(K)向量,利用旋转变换在点积注意力计算时自然地保留相对位置信息。
-
传统位置编码需要额外加法运算,而 RoPE 通过旋转变换,将位置信息隐式地融合到 Q 和 K 向量的点积计算中。
-
具体而言,对于任意 d 维的向量,RoPE 将每对相邻的两个维度视为一个二维平面,并在该平面内执行旋转变换
其中,旋转角度 与 token 位置 p 相关,通常设定为:
使得高维度的旋转角度变化较小,而低维度变化较大,从而在不同尺度上编码位置信息。
传统 RoPE 存在的问题
尽管 RoPE 可以有效地嵌入相对位置信息,并广泛应用于 LLM(如 LLaMA、GPT-4 等),但它存在计算和存储上的挑战。
计算开销
-
传统 RoPE 需要在每个注意力头的查询和键上分别执行旋转变换
-
由于 Transformer 具有多个注意力头,对于大规模模型,这种额外的计算会导致推理效率下降
内存占用
-
在推理过程中,RoPE 位置编码的结果通常需要存储在 KV 缓存中。
-
对于长序列输入(如 100K+ tokens),KV 缓存的大小会随着序列长度线性增长,占用大量 GPU 显存。
解耦 RoPE的核心思想
解耦 RoPE 旨在优化 RoPE 的计算和存储效率,同时保留其编码能力。
它的主要改进点如下:
-
额外引入“解耦查询”
在标准 MHA 计算中,每个注意力头的查询和键都需要执行 RoPE 变换:
解耦 RoPE 的创新点在于,将查询 拆分为两个部分:
具体计算公式:
其中:
-
和 是新的投影矩阵,专门用于生成解耦的查询和键。
-
和 由普通部分 与解耦部分 组合
-
普通查询 :不经过 RoPE 变换,代表非位置敏感的特征信息。
-
解耦查询 :专门用于嵌入 RoPE 位置编码信息。
-
共享 RoPE 变换的 Key
在标准 RoPE 中,每个注意力头都需要独立计算 。
解耦 RoPE 采用共享 Key 策略,即所有注意力头共用一个旋转变换后的 ,从而减少计算开销:
这样做的好处是:
-
减少计算量:不必为每个 Query 和 Key 计算 RoPE 变换。
-
减小 KV 缓存大小:只需存储共享的 ,从而降低 GPU 内存占用。
解耦 RoPE 的计算流程
-
计算普通查询和普通键
-
计算解耦查询和共享键
-
拼接查询和键
-
计算注意力分数
解耦 RoPE优点
-
拆分查询(Query)为普通查询和解耦查询,使得部分信息不受 RoPE 影响。
-
共享 Key 的 RoPE 变换,减少计算量和 KV 缓存大小。
-
降低 GPU 内存占用,提高推理速度,特别适用于长序列任务和大规模 Transformer。
MLA 如何在推理过程中减少计算
MLA 中的一个关键优化是权重矩阵的吸收。
在 MLA 中,为了减少计算复杂度并提升推理效率,模型采用了一种优化策略:将上投影矩阵吸收到其他计算中,以避免显式重构 Key 和 Value。
主要有两个关键优化:
1.吸收 到
-
传统方法需要显式计算 Key 向量 ,然后计算 Query 和 Key 之间的注意力分数。
-
优化方式:MLA 直接将上投影矩阵 吸收到 里,这样就可以简化查询计算,并优化注意力分数的计算。
查询计算
Query 计算方式如下:
其中:
-
是查询的压缩潜在向量
-
是查询的上投影矩阵
注意力分数计算
-
传统计算方式:
-
优化方式(矩阵结合律)
这里, 是一个新的合并矩阵,它直接将 吸收到 中,从而避免显式计算 Key 向量 。
优化效果
-
减少计算步骤:不再需要独立计算
-
提升计算效率:减少矩阵运算的开销,使推理更快。
2.吸收 到
-
传统方法需要先计算 Value 向量 ,然后再进行注意力计算并投影到最终的输出层。
-
优化方式:直接将 吸收到 里,简化最终的输出计算。
注意力输出计算
传统方法
- 其中, 是通过上投影重构的 Value。
最终输出计算
代入
优化方式
这里, 是一个新的合并矩阵,它直接将 吸收到 中,减少额外的计算步骤。
优化效果
-
避免显式计算 :减少计算复杂度,提高推理效率。
-
减少矩阵运算的存储需求:降低显存占用,使模型更适用于大规模推理任务。
关键要点
-
内存效率:较小的 KV 缓存意味着模型可以处理更长的序列或更大的批量大小,而不会耗尽内存。
-
推理速度:存储和检索的数据更少,模型可以更快地生成文本。
-
可扩展性:MLA 使得在内存有限的设备(如手机或边缘设备)上部署大型transformer模型成为可能。
-
性能提升:尽管进行了内存和计算优化,MLA 的性能仍优于 MHA,证明了效率和有效性可以并驾齐驱。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
更多推荐
所有评论(0)