资讯动态

注意力机制算力革命:DeepSeek如何用MLA与MoE重构KV Cache成本

发布时间:2026/10/24 7:50:23 来源:尧图企业网站定制
1. 为什么说DeepSeek的爆火本质是注意力的胜利过去一年里我在不少技术群里反复看到同一个问题明明大家都走Transformer这条技术路线为什么DeepSeek能把训练成本压到别人一个数量级以下还把模型开源出来讨论到后面话题往往滑向到底买了几张卡训练了多少天这种玄学。其实真正值得拆解的是另一个更本质的东西——注意力机制背后的算力账本正在被重新定义。DeepSeek这波热度表面上是开源大模型的能力展示内里却是一场关于注意力的算力革命。大家都会用注意力机制但DeepSeek把注意力机制的每一笔显存开销、每一分算力消耗都重新抠了一遍这才有了便宜大碗的底气。这篇文章不是某家大模型的软文而是想从注意力机制本身的原理和成本结构切入讲清楚这场革命到底革在哪些环节以及它给普通开发者和企业带来的可迁移经验。无论你是只调API的业务方还是自己跑过推理服务的人都值得看一眼。1.1 十年模型竞赛比的从来不是更聪明而是更会算要理解DeepSeek为什么特殊得先回顾一下模型为什么长成这样。早在2017年之前做语言模型的主流结构是循环神经网络一串文字按顺序逐个读进去前面的信息通过隐状态一路往后传。道理上说得通但实际用起来有一个致命弱点句子一长前面的信息早就在传递过程中被冲淡了模型记不住上下文。后来Transformer换了一套玩法。它不再依赖顺序传递而是让每个词都直接去看序列里所有词两两之间算出一个该给对方多少注意力的权重。这就是注意力机制。名字很学术其实特别像公司开全员会每个人发言时所有人都要认真听并判断这句跟我的关系大不大关系大的多记关系小的少记。这种机制让模型能在任意长的上下文里直接建立联系理解能力一下子拉开了差距。从2017年到现在几乎所有主流大模型都能被理解为一个疯狂的注意力堆叠机器。大家比参数量、比上下文长度、比说胡话的概率本质上比的是谁能把越多文字的注意力关系装进有限显存、以有限算力算完。所以谁能在注意力机制上省下算力谁就赢得了下一轮竞赛的入场券。1.2 注意力不只是一个效果问题更是一个物理账本问题很多人把注意力机制当成纯算法概念但落到硬件上它就是一连串极度费显存、费带宽的矩阵运算。有一段时期模型训练瓶颈根本不在于聪明程度而在于显存能不能装下那些中间结果。具体来说每个Token在每一层都要跟其他所有Token做点积计算注意力权重还要把这个权重应用到对应的内容上。序列长度是n的时候注意力矩阵的大小是n乘以n。序列翻倍这部分计算量翻四倍。更麻烦的是推理阶段还得把每一层已经算好的键值缓存下来来避免重复计算上下文越长缓存的KV Cache就越大最后你会发现模型参数占用不是大头KV Cache才是吃显存的主力。正是因为这个物理账本的存在注意力机制的设计从效果导向慢慢变成了算力导向。谁能更优雅地压缩这些缓存谁能减少实际参与计算的专家数谁就能在同样的芯片上服务更多用户。DeepSeek的系列模型恰好在这两条路上都做出了非常针对性的优化。2. 算力黑洞的形成把注意力的账本摊开看要理解DeepSeek做对了什么最好的办法是先亲自动手算一遍普通注意力机制的账。不把这一层算明白后面看MLA、MoE这些名词就永远隔着一层窗户纸。2.1 一次QKV运算在硬件上到底发生了什么假设你想用Transformer处理一串长度为n、隐藏维度为d的文本。在每一层注意力里模型会先做三个投影把输入向量乘以权重矩阵生成查询Q、键K、值V。这三个投影都是矩阵乘法开销大约是 3乘2乘n乘d方 的FLOPs也就是算力操作次数。随后Q和K做点积得到n乘n的注意力分数矩阵再经过Softmax变成权重最后用这个权重去加权V。这一来一回还要加上 4乘n方乘d 左右的FLOPs。我把这些公式抽象成结论每一层注意力的算力消耗大约等于 8乘n乘d方 加上 4乘n方乘d。前半部分是投影开销跟序列长度线性相关后半部分是两两交互开销跟序列长度的平方相关。当序列长度很短时投影开销占大头模型体量大就是费算力的主因。可一旦把上下文拉长比如达到几万甚至十几万个Token那个n方的项就会疯狂膨胀。行业里常说的平方诅咒指的就是这个文本长度涨一倍注意力运算量涨四倍。这还不是最致命的最致命的是显存。2.2 长上下文的平方诅咒计算和显存一起爆炸先算算计算量。假设有一个d4096的模型处理n4096个Token的文本32层Transformer。单Token单层的开销大概是 8乘4096乘4096乘4096加上 4乘4096乘4096乘4096大约1.95亿次FLOPs乘上32层再乘4096个Token一次前向就是25万亿FLOPs左右。这在现代GPU上还能扛但注意这只是前向训练时反向传播还要翻两到三倍。再看显存。推理阶段为了不去重复计算历史Token的K和V我们会把它们缓存下来。缓存大小由四个因素决定KV头数量、层数、每个头的维度、数据精度。假设一层里就用32个KV头、每个头128维32层TransformerFP16精度那么每个Token要占 2乘3乘32层乘128维度乘2字节大概512KB。处理128K上下文单路请求的KV Cache就要64GB。这个数字放在任何单张显卡上都放不下更别说同时服务几十个并发用户了。所以你会发现在长上下文场景里模型参数本身反而没那么吃显存了KV Cache才是把显存撑爆的元凶。这就像搬家时床垫没多大但你有128个床垫每个床垫还要复制成两份仓库很快就满了。2.3 训练阶段还有一笔隐性开销激活值推理账本算完训练账本更复杂。训练时不仅要缓存KV还要把每层的输入激活值也存下来用于反向传播。激活值的大小跟序列长度和批大小直接相关一旦数据并行、流水线并行的维度设计不合理明明算力够用显存却被激活值挤爆只能被迫降低批大小整体吞吐量上不去。很多团队在训练大型模型时第一步不是优化算子而是先用一个简单的显存公式估算激活值显存、KV Cache显存、模型参数显存、梯度与优化器状态显存四块加起来能不能放进集群总显存。DeepSeek这类模型的厉害之处就是把这个预算表从头到尾改写了一遍。接下来我们具体看它的两记重拳。3. 两记重拳MLA压缩KV Cache、MoE切换稀疏赛道DeepSeek系列模型里最常被提到的两个技术名词一个是MLAMulti-head Latent Attention多头潜在注意力一个是MoEMixture of Experts专家混合模型。前者解决了推理阶段KV Cache过大的问题后者解决了训练和推理阶段每Token算力消耗过大的问题。两者方向不同但目标一致把每一分算力都花在刀刃上。3.1 MLA把每一层的钥匙串压缩成一张万能卡先回忆一下标准注意力是怎么缓存的。每一层Transformer都会为每个历史Token保存一份K向量和V向量层数越多缓存越多如果有32层那等于每进来一个Token就要存32份不同的K和V。这就像你每进一扇门都要拿一套钥匙走过32扇门后口袋里有32串钥匙又重又占地方。MLA的核心思路是不去存每一层完整的K和V而是把它们压缩到一个低维的潜在向量里需要时再从这个向量还原出K和V。数学上这相当于让模型学习一个低秩投影把原始的高维缓存压成信息几乎不损失的小份缓存。推理阶段需要保存的内容大幅缩小显存压力随之减小。如果只看数字公开技术报告里的结果非常直观相比传统多头注意力的KV Cache实现MLA可以把缓存需求压到原来的几十分之一。这带来的连锁反应是巨大的——同样的显存可以服务更长的上下文、更大的并发或者干脆把模型部署到更便宜的显卡上。需要提一句的是MLA并不是凭空取消信息。它使用了一种叫解耦RoPE的办法把与位置有关的注意力信息单独拆出来处理保证序列位置编码不受压缩影响。这里的细节很多但对使用者来说你只需要记住一个判断不是所有注意力变体都能像MLA这样显著砍缓存判断一个优化好不好就看它在长序列下的显存增长曲线。3.2 MoE让每层只叫醒少数专家干活另一记重拳是MoE。传统的稠密模型比如一个700亿参数的模型处理每个Token时所有参数都得参与计算。听起来参数多、能力强实际上很多参数可能对当前这个词帮不上忙白费了算力。MoE的思路是给模型装上一大批专家子网络每个Token来了先由门控机制判断这个问题应该找谁然后只激活其中一小批专家来完成计算。DeepSeek的大模型总参数非常庞大但每个Token实际激活的参数远小于总量。这种做法在训练和推理时都能明显降低每Token的运算量相当于把全员大会改成了按议题叫相关小组开会。小组里每个人都能干活但每次真正起身发言的只有少数人会场容纳量自然就大了。代价是什么呢显存和通信。MoE模型虽然每次只算一小部分专家但所有专家的权重都要存在显存里训练时还得频繁把Token从这一组专家搬到那一组专家跨设备通信的压力比稠密模型大得多。这也是为什么DeepSeek在后端工程上必须做大量配套优化比如把专家分组放到同一节点内以减少跨节点通信、设计更聪明的负载均衡策略等。MoE从来不是加个门控那么简单它把算力账单从乘法变成了加法和通信。3.3 MFU 70%软件工程把硬件利用率抠到了极致说完了模型结构再谈训练效率。行业里有个指标叫MFU即模型浮点运算利用率代表芯片的理论算力被实际用上了多少。很多大规模训练跑下来MFU只有40%到50%这意味着芯片有超过一半的时间在等待数据、等通信、做同步而不是真正在算矩阵乘法。DeepSeek的公开技术报告显示它的训练过程实现了约70%的MFU。70%听起来只比50%高了20个百分点但放在万卡级别、训练数月的场景下这笔账能省下一个天文数字级别的计算成本。怎么抠出来的大意是把前向和反向计算交错进行、让通信和计算完全重叠、用FP8混合精度把一半的存储和通信量砍掉、再针对自研的集群通信写高度定制化的内核。这对行业最大的冲击并不是它跑得快而是证明了一个结论**在算力军备竞赛里软件工程和算法结构本身就是最便宜的显卡。**没有足够多的顶级芯片依然可以通过更聪明的调度把每一张卡的潜力榨干。4. 推理端的注意力经济从预填充到每个Token的成本训练成本只是DeepSeek火爆的一部分真正让普通用户感受到便宜的是推理成本。推理阶段也分两种截然不同的任务它们对注意力的消耗方式完全不同很多人容易混淆。4.1 预填充和解码算力瓶颈与带宽瓶颈的切换当模型收到一段用户输入首先要做的是预填充把用户输入的所有Token一次性过一遍模型计算并缓存K和V。这个阶段是计算密集型的GPU要同时算一大堆矩阵乘法算力利用率很高但单次响应的耗时主要取决于输入长度和模型算力。之后进入解码阶段模型要一个Token一个Token地生成输出。每次生成新Token都需要把前面所有Token的KV Cache从显存里读出来参与计算再更新缓存。随着对话变长KV Cache越来越大读取它的时间越来越长。这时候模型的计算量其实没怎么变但数据搬运把时间无限拉长推理开始受显存带宽瓶颈限制。这就是为什么你有时候会感觉模型越聊越慢也为什么长上下文服务的部署成本远高于短问答。一位资深的推理优化工程师会告诉你解码阶段性能上不去大概率不是算子算得不够快而是KV Cache读得太慢。4.2 KV Cache精打细算量化、分页与MLA为了缓解KV Cache带来的压力工程界做了几件事。一是把缓存做低精度量化从FP16压到FP8甚至更低体积直接砍一半精度损失通常可控。二是借鉴操作系统里的虚拟内存分页思路把KV Cache拆成固定大小的块按需分配显存避免因为内存碎片浪费大量空间这就是一些高性能推理引擎里分页注意力的核心思想。MLA在结构层面的优势正好可以和这些工程技术叠加。缓存本身变小了再加上量化压缩单条请求在长对话场景下的显存占用能压到非常可控的范围。同一块GPU卡能跑的并发路数多了单位Token的分摊成本自然下降。这场“注意力经济”的优化最终都会反映到API价格和开源模型的部署门槛上。4.3 从模型卡看真正便宜的来源很多人习惯只看多少B参数来判断模型贵不贵在DeepSeek这类模型上这样评判是失真的。总参数大意味着模型文件大、加载显存多但每Token激活参数少意味着跑一次请求的即时算力消耗低。一个模型便宜不便宜从技术角度要看四个数总参数量、激活参数量、KV Cache压缩倍数、还有单卡能塞下的最大并发。这也是为什么一些人在本地设备上跑大模型时明明模型文件几十GB但推理速度依然很快因为它的激活参数量很小计算密集度不高。相反一个小的稠密模型可能文件很小但每Token都要求全部参数参与计算在低端显卡上照样卡成PPT。DeepSeek在推理端的革新本质上是在告诉所有人别再盯着参数总量膜拜了算力的新度量衡是激活量与缓存量。5. 算力革命的连锁反应通信、利用率与成本话语权DeepSeek掀起的这场算力革命影响并不止于某一个模型。它正在改变行业里很多根深蒂固的做法从买卡思路、集群设计到中小团队是否敢自己部署开源模型。5.1 算法开始反过来决定硬件采购过去很长一段时间行业默认的路径是更大模型更多显卡。训练一个千亿参数模型可能就是攒几万张顶级GPU堆上去再说。DeepSeek的路径提供了另一种可能先优化模型结构降低每Token的激活参数量和KV Cache占用再优化训练软件让通信和计算重叠最后优化推理服务让同样的卡服务更多用户。这让算法换算力成了真实选项。预算有限的团队开始考虑与其买最贵的卡硬扛低效的模型结构不如换一个更聪明的模型结构把省下来的钱花在集群网络和存储上。算法优化和芯片采购不再是两拨人讨论的事而是必须放在同一张预算表上权衡。5.2 通信正在成为比算力更贵的资源MoE模型让模型参数的利用率变高了但它有一个绕不开的代价Token要在不同专家之间搬运专家在集群里怎么摆放、网络带宽够不够直接决定MoE是加速还是拖后腿。早期很多复现MoE的团队发现计算时间倒没多少全耗在权重数据的网络传输上了。这也是为什么现在的集群设计越来越强调节点内互联带宽、通信拓扑和通信调度。有些人开玩笑说万卡集群里最稀缺的资源不是FLOPs而是网络端口里的那一点带宽。这背后是一个更重要的认知转变在大规模训练里系统瓶颈往往是数据流动而不是计算单元本身。谁能把流动路径设计短谁就能赢。5.3 开源模型让中小团队第一次学会看单位Token成本当开源模型的效果逼近最强商用模型时中小团队面临的选择就变了。以前要么购买昂贵API要么自己部署一个效果凑合但显存占用高的小模型。现在有了结构更优雅的开源模型加上KV Cache压缩技术一个普通的推理集群也能撑起不错的服务。我见过很多团队的踩坑过程第一步把模型下载下来发现磁盘空间不够第二步终于部署成功发现并发一上来显存就满了第三步各种加卡推理成本核算下来比调用API还贵。最后回头一查问题往往出在没算KV Cache和激活参数量而是只看了模型文件大小。DeepSeek这场算力革命带来的最大普惠其实是逼着更多开发者学会了算这笔账。6. 注意力革命带给普通开发者的三个启示聊完模型内部的技术细节我想把视野拉回到具体工作里。注意力机制和算力优化的思路完全可以迁移到日常开发、系统设计和模型选型中哪怕你不做大模型。6.1 启示一先算内存账再选模型和部署方案不管是自己部署开源模型还是挑选商业API都要先估算一下长上下文的显存开销。最简单的估算公式是KV Cache大小约等于 2乘KV头数乘层数乘每个头维度乘序列长度乘精度字节数。比如一个32层、每层2个KV头、每头128维的模型在FP16下每个Token大约占32KB缓存128K上下文就是4GB换成传统多头注意力会直接到几十GB。很多人在本地部署时发现模型加载后显存明明还够一开长对话就崩溃十有八九是忽略了这几十GB的KV Cache。选部署方案前拿这个公式过一遍比盲目换显卡可靠得多。6.2 启示二读模型卡别只盯着总参数量要看激活参数模型总参数量决定了模型文件多大、显存下限多高激活参数量决定了每秒真正要算多少矩阵乘法。对MoE模型来说这两个数字可以差一个数量级。以后再看某个大模型的技术报告先找这两个字段对比一下你会发现很多参数巨大但很流畅的奇怪现象都有了解释。这也改变了行业对硬件配置的预期如果目标是高并发短文本推理优先优化内存带宽和KV Cache如果目标是长文档分析优先看模型有没有做好KV Cache压缩如果目标是训练模型还要关注通信拓扑和MFU。不同场景有完全不同的注意力账本不能一概而论。6.3 启示三把稀疏激活的思想带回自己的系统MLA和MoE的本质都是把每次都全量计算改成按需计算、可被复用的尽量缓存。这种思路完全可以迁移到日常系统设计里。比如数据检索时先用粗糙索引圈定小范围再在圈内做精细匹配比如服务端缓存数据时不在内存里保存所有中间结果而是保存经过压缩的特征码用的时候再还原再比如做推荐系统时不把所有候选都跑一遍完整模型而是先用小模型初筛再对Top K跑精排。这些做法的共同点就是承认全量成本是平方级增长的但真正相关信息往往是稀疏的。学会识别稀疏性并用缓存和索引对冲高维计算你就掌握了这场算力革命最通用的心法。说到底DeepSeek能火不是因为某一项技术是天上掉下来的而是它把注意力机制这笔几十年都没人细算的账认认真真算了一遍并公之于众。注意力革命不会止步于一个模型它正在变成所有做AI基础设施的人共同面对的必修课。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑