
【深度学习】DeepSeek核心架构-MLA:剖析低秩联合压缩优化KV缓存、提升推理效率的技术细节
DeepSeek的基本架构仍然在Transformer框架内,每个Transformer模块由一个注意力模块和一个前馈网络组成。为实现更高效的推理和更经济的训练,在注意力和前馈网络部分,设计并使用了创新的MLA(Multi-Head Latent Attention)和DeepSeekMoE 架构。本文将从MLA的提出背景、技术原理、解耦RoPE策略及MHA与MLA的缓存对比方面进行详细阐述。!!
DeepSeek的基本架构仍然在Transformer框架内,每个Transformer模块由一个注意力模块和一个前馈网络组成。为实现更高效的推理和更经济的训练,在注意力和前馈网络部分,设计并使用了创新的MLA(Multi-Head Latent Attention)和DeepSeekMoE 架构。
本文将从MLA的提出背景、技术原理、解耦RoPE策略及MHA与MLA的缓存对比方面进行详细阐述。(全文约2000字,感兴趣可点赞、在看、转发、关注,持续更新!!!)
MLA是对多头自注意力机制(MHA)的改进,其核心是对键(Keys)和值(Values)进行低秩联合压缩,生成压缩的潜在向量,以降低推理阶段的KV缓存。
01|MHA
(1)MHA的详细原理可见文章《【深度学习】自注意力机制&多头自注意力机制:技术背景、原理分析及基于Pytorch的代码实现》。
(2)在自注意力机制中,每个位置的查询Q需要与序列中所有位置的键(K)进行相似度计算得到注意力分数,然后加权值(V)获得最终的输出值。Transformer模型生成序列时采用自回归方式,即在生成当前Token时需依赖所有之前生成的Token。因此,对于每个时间步,都需要与之前所有Token进行注意力计算。为避免重复计算之前所有Token的键和值,从而需要缓存所有的键和值来加速计算。
(3)MHA在推理过程中需要缓存所有的KV来加速推理,但是在模型部署中,这种量级的KV缓存带来了高显存占用问题,限制了最大Batch size的大小和序列长度。
02|MLA原理
(1)MLA的完整计算公式和维度变化示意图如下,可对照查看。
(2)键(K)和值(V)的联合压缩:输入序列中的第t个Token()通过一个下投影矩阵压缩为压缩潜在向量(其维度远远小于输入Token的维度)。在推理阶段,MLA仅需要缓存,即KV缓存仅个元素,其中为模型层数。进行注意力计算时,分别通过上投影矩阵和还原出键和值。
(3)查询(Q)的压缩:输入序列中的第个Token()通过一个下投影矩阵压缩为压缩潜在向量(其维度远远小于输入Token的维度)。
(4)解耦RoPE策略:为提高模型对序列中上下文信息的敏感性,MLA中应用了解耦旋转位置编码(RoPE)技术。因RoPE与低秩KV压缩矩阵不兼容,故MLA引入额外的查询向量和共享键向量来携带RoPE信息,避免了RoPE与低秩压缩矩阵之间的耦合问题,解决了位置信息与推理效率之间的矛盾。
(5)进行注意力计算时,分别通过上投影矩阵和还原出键和值,每个注意力头上的键再与携带了RoPE信息的共享键向量拼接形成MHA的键值输入。通过上投影矩阵和还原并生成查询向量和携带RoPE信息的查询向量,二者拼接形成MHA的查询向量输入。最终多个头的输入拼接在一起,并经过线性映射得到最终的输出。
03|解耦RoPE策略详解
(1)RoPE与低秩KV压缩矩阵不兼容的原因:DeepSeek-V2的原文中指出“两者不兼容的具体原因是RoPE对键和值是位置敏感的,如果将RoPE直接应用于, 与位置敏感的RoPE矩阵耦合。因此,在推理过程中,无法再被吸收到中,因为与当前生成的Token相关的RoPE矩阵位于与之间,而矩阵乘法不满足交换律。因此,在推理过程中需重新计算所有前序Token的键,这将极大降低推理效率。”
备注:矩阵吸收计算是指利用矩阵乘法的结合律或低秩分解等线性代数技巧,重新组合某些矩阵因子,使原本需要独立计算的矩阵乘积合并在一起,从而降低计算复杂度和内存开销的过程
(2)若不使用RoPE,那么与乘积计算如下:
如此,每次计算时可提前计算好中间项,仅缓存即可。
(3)若直接对键和值使用RoPE,那么与乘积计算如下:
如此,结果的中间项与RoPE矩阵相关,并不是一个固定矩阵,无法提前计算好,即前文所说RoPE与低秩KV矩阵不兼容,无法再被吸收到中。
(4)为引入RoPE,额外采用查询向量和共享键向量,最终与乘积计算如下:
如此,结果的前一项按照无RoPE的情况计算,只需缓存,后者则对于所有注意力头只缓存一个共享即可。
04|MHA与MLA的缓存对比
已知头数为,单个头的维度为,模型层数为。
(1)在MHA中,推理阶段针对每个Token,需要缓存其键向量和值向量,则每个Token的缓存参数个数为。
(2)在MLA中,推理阶段针对每个Token,需要缓存键值的压缩潜在向量(维度为)和一个携带RoPE信息的共享键向量(维度为),则每个Token的缓存参数个数为()。在DeepSeek-V2当中,设置,,故缓存参数数量为。
由此可见,MLA显著降低了KV缓存的大小。
六、如何系统学习AI大模型?(附全套学习资源)
零基础入门AI大模型
今天贴心为大家准备好了一系列AI大模型资源,包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
有需要的小伙伴,可以点击下方链接免费领取【保证100%免费
】
1.学习路线图
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
(都打包成一块的了,不能一一展开,总共300多集)
3.技术文档和电子书
这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
4.LLM面试题和面经合集
这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
5.免费获取
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码或者点击以下链接都可以免费领取【保证100%免费】
更多推荐
所有评论(0)