DeepSeek V2 技术解析:多头潜在注意力(MLA)与混合专家模型(MoE)的创新实践

DeepSeek V2 通过创新 MLA 压缩 KV 缓存,结合改进的 MoE 结构,显著提升推理效率与模型性能,为大模型发展带来新思路。

原文标题:一文通透DeepSeek V2——通俗理解多头潜在注意力MLA:改进MHA,从而压缩KV缓存,提高推理速度

原文作者:数据派THU

冷月清谈:

本文深入剖析了 DeepSeek V2 的核心技术,重点介绍了其创新的多头潜在注意力(MLA)机制和改进的混合专家模型(MoE)。MLA 通过低秩键值联合压缩减少了 KV 缓存开销,提高了推理速度,同时缓解了传统注意力机制的性能瓶颈。DeepSeekMoE 则通过细粒度专家分割和共享专家隔离,实现了更高效的模型训练和知识获取。此外,文章还介绍了 DeepSeek V2-Lite,一款配备 MLA 和 DeepSeekMoE 的较小模型,为开源社区提供了更经济的选择。本文旨在帮助读者通俗理解 DeepSeek V2 的关键技术,并探讨其在实际应用中的潜力。

怜星夜思:

1、DeepSeek V2 中 MLA 的低秩 KV 压缩是如何在保证性能的同时降低显存开销的?与其他 KV 缓存优化方法相比,MLA 的优势和局限性是什么?
2、DeepSeekMoE 中,细粒度专家分割和共享专家隔离是如何提高模型性能的?这种 MoE 结构与传统 MoE 结构相比有哪些优势?
3、DeepSeek V2-Lite 作为一款更小的模型,在哪些场景下更适用?对于希望在资源有限的设备上部署大模型的开发者来说,DeepSeek V2-Lite 提供了哪些启示?

原文内容

来源:七月在线实验室

本文约6000字,建议阅读10分钟

文介绍DeepSeek LLM、DeepSeekMoE、DeepSeekMath。


前言

成就本文有以下三个因素:
  • 24年5.17日,我在我司一课程「大模型与多模态论文100篇」里问道:大家希望我们还讲哪些论文  一学员朋友小栗说:幻方旗下公司深度求索于24年5.7日发布的deepseek-v2

  • 24年5.24日,我司一课程「大模型项目开发线上营1」里的一学员朋友问我:校长最近开始搞deepseek了吗?刚看了论文,没搞懂MLA那块的cache是怎么算的,我总觉得他的效果应该类似MQA才对,但是反馈是挺好的  我当时回复他道:目前团队项目上的事情太多,然后近期在写那个KAN

确实还没来得及看这个deepseek,我近期看下。

  • 我们在继英文层面的论文翻译、审稿、对话、idea提炼之后(其中的审稿和翻译已于24年8月底上线七月官网 )
打算再整一下中文层面的「硕士论文修订助手(不限学科,CS和非CS的都涵盖)」,预计24年9月份上线七月官网。
对于模型的选择,在闭源之外,在开源模型上 有两个选择,一个chatglm4,一个DeepSeek(后来实际上线时,一开始用的deepseek v2,后来改成了deepseek v3)
而搞DeepSeek之前——近几天,会先写一下它的论文解读(当然,因为DeepSeek-V2从DeepSeek LLM、DeepSeekMoE迭代而来,且用到了DeepSeekMath中的GRPO算法,故第一部分会先讲DeepSeek LLM、DeepSeekMoE、DeepSeekMath),故本文就来了,且DeepSeek也算证明了在国内也可以做出有效果、有影响力的创新。
且一如既往做到——对于几乎每一个主题,都如本博客万千读者或七月学员所说的:“还是看校长的文章好理解”,而其中的关键之一是做好图、文、公式的一一对应,不一笔带过、不自以为然,本文亦如此
同时本文也见证了自己从技术人到产品人定位的过渡
  1. 23上半年 侧重原理,系统大量读paper,深挖原理。

  2. 23下半年 侧重工程,和项目组不断优化各种工程问题。

  3. 24上半年 侧重研究,横跨或综合多个领域(比如llm+机器人),继续各种抠paper。

  4. 24下半年 侧重产品,把世界级前沿落地成产品 给用户使用,以发挥更大的价值和影响力(希望有机会早日达到世界级影响力)。

第一部分 从DeepSeek LLM、DeepSeekMoE到DeepSeekMath

友情提醒,如不需要透彻深入理解,或者想直接看DeepSeek-V2的,可以直接跳到本文的第二部分,本文第二部分也是本文的最精华所在。
当然,如果你就是想先从本第一部分 开始看则非常好,但里面的数学公式比较多,喜欢抠公式的可以细抠,不喜欢抠公式的则不用抠太细,不影响对DeepSeek-V2的整体理解。

第二部分 DeepSeek-V2:提出多头潜在注意力MLA且改进MoE

 DeepSeek-V2属于DeepSeek的第二代版本,参数规模虽然达到了庞大的236B,但由于其MoE的结构,使得其中每个token激活仅21B的参数,且支持128K的上下文(It is equipped with a total of 236B parameters, of which 21B are activated for each token, and supports a context length of 128K tokens)
其对应论文为《DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model》,发布于24年5.7日。
  1. 他们首先在完整的预训练语料库上预训练DeepSeek-V2。

  2. 然后,收集了150万个对话会话,涵盖了数学、代码、写作、推理、安全等各个领域,以对DeepSeek-V2 Chat(SFT)进行监督微调(SFT)。

  3. 最后,他们遵循DeepSeekMath的方法,采用组相对策略优化(GRPO)进一步使模型与人类偏好对齐,并生成DeepSeek-V2 Chat(RL)。
DeepSeek-V2主要有两大创新点,其在Transformer架构「一个注意力模块和一个前馈网络(FFN),如对transformer还不够熟练,请看此文:Transformer通俗笔记:从Word2Vec、Seq2Seq逐步理解到GPT、BERT」的基础上
1. 改造注意力模块  
其通过创造性的提出多头潜在注意力:Multi-head Latent Attention(简称MLA),替代传统多头注意力(Multi Head Attention)  。
具体而言,MLA利用低秩键值联合压缩(low-rank key-value joint compression)来降低推理时的KV Cache开销——相当于low-rank joint compression for keys and values to reduce KV cache,且性能不输于MHA(论文中说的是性能比MHA还更好)  。
我个人认为,MLA本质上也是受到了LoRA和Stable Diffusion的启发「前者详见此文《LLM高效参数微调方法:从Prefix Tuning、Prompt Tuning、P-Tuning V1/V2到LoRA、QLoRA(含对模型量化的解释)》,后者详见此文《AI绘画原理解析:从CLIP、BLIP到DALLE、DALLE 2、DALLE 3、Stable Diffusion(含ControlNet详解)》」  
所以MLA 是多头潜在注意力,在多头注意力上 加上了低秩KV压缩。
2. 改造FFN  
其把FFN的结构改成DeepseekMoE——是对传统MoE结构的改进(下图各种结构、表示很多,初看难以一看就懂,没事,下文会逐一详解,任何一个符号都不会放过——最后,反复琢磨之后,你也可以和我一样:脱离本文,手绘下图、手推下图背后的公式)  。
值得一提的是,他们还一块发布了 DeepSeek-V2-Lite,相当于配备 MLA 和 DeepSeekMoE 的较小模型,它总共有15.7B参数,其中每个token激活2.4B参数(we also release DeepSeek-V2-Lite, a smaller model equipped with MLA and DeepSeekMoE, for the open-source community. It has a total of 15.7B parameters, where 2.4B are activated for each token)
DeepSeek-V2-Lite 有 27 层,隐藏维度为 2048。它还采用 MLA,并具有 16 个注意力头,每个头的维度为 128 。
其 KV 压缩维度为 512,但与 DeepSeek-V2 略有不同,它不压缩查询。
对于解耦查询和键,每头维度为 64。
DeepSeek-V2-Lite 还采用 DeepSeekMoE,除了第一层外,所有前馈神经网络 (FFNs) 都被 MoE 层替换  每个 MoE 层由 2 个共享专家和 64 个路由专家组成,每个专家的中间隐藏维度为 1408。在这些路由专家中,每个token将激活6个专家。
DeepSeek-V2-Lite 也在与 DeepSeek-V2 相同的预训练语料库上从头开始训练,该语料库未被任何 SFT 数据污染。
它使用 AdamW 优化器,超参数设置为 𝛽1 = 0.9, 𝛽2 =0.95,权重衰减 =0.1。 
学习率使用预热和阶梯衰减策略进行调度最初,在前2000步期间,学习率从0线性增加到最大值。
 随后,在训练了大约80%的tokens后,学习率乘以0.316,并在训练了大约90%的tokens后再次乘以0.316。
最大学习率设置为4.2 × 10−4,梯度裁剪范数设置为1.0  没有采用批量大小调度策略,而是以恒定的批量大小4608个序列进行训练  在预训练期间,将最大序列长度设置为4K,并在5.7T tokens上训练DeepSeek-V2-Lite。

2.1 DeepSeek-V2提出MLA的背景与作用

2.1.1 KV Cache所导致的显存消耗大,需要尽可能降低
众所周知,KV Cache是大模型标配的推理加速功能——也是推理过程中,显存资源巨大开销的元凶之一。如下图所示,在模型推理时,KV Cache在显存占用量可达30%以上。
目前大部分针对KV Cache的优化工作:
1. 比如著名的vLLM「这是其介绍页面、这是其对应的GitHub、其论文则为:Efficient Memory Management for Large Language Model Serving with PagedAttention,当然了,我也写了一篇专门介绍vLLM的博客,详见《一文通透vLLM与其核心技术PagedAttention:减少KV Cache碎片、提高GPU显存利用率(推理加速利器)》」,其基于paged Attention,最大限度地利用碎片化显存空间,从而提升了空间利用率。
2. 再比如GQA、MQA。
GQA是query数不变,但多个query(比如2个)组成一个group以共享一个key value  MQA则query也不变,但所有query(比如8个)共享一个key、一个value  
至于更多,详见此文:一文通透各种注意力:从多头注意力MHA到分组查询注意力GQA、多查询注意力MQA。
这些方案的问题是什么呢?在于:
  • 第一类方案并没有从根本上改变KV Cache占用空间巨大的问题。

  • 而第二类方案中的MQA虽然较大降低了KV cache计算量,但性能相比MHA下降太多了  至于第二类方案中的GQA则取了个折中:不好的是缓存下降的不够多、好的是相比MHA性能没有下降太多,毕竟我们追求的是缓存下降、性能不降。
那KV Cache到底是什呢?
1. 对此,我们先来回顾下transformer当中的注意力计算公式:
Image
2. GPT预测下一个token时,其只能看到待预测token之前的所有token,故在最终生成Q1,Q2,Q3,Q4整个序列的过程中,会涉及到如下计算过程:
3. 然后把上面的softmax结果和对应的V值一相乘,便可得到:
可以很明显的看到,上述计算过程中,有不少的KV重复计算,比如:
Image
上面这句话值得反复品味三遍!
如果序列长度越长,类似这样的KV重复计算会越多,从而势必将白白消耗那么大的显存,所以才说需要降低这种KV重复计算
2.1.2 Multi-head Latent Attent:致力于在推理中降低Image
MLA是对传统多头注意力做的改进,其目的有两个:首先是,降低推理过程中的KV Cache资源开销,其次,缓解MQA、MGA对性能的损耗。
如上文所说,KV Cache中,提到每一步都需要将K和V缓存下来。
具体而言,对于单个Attention Block块中的多头注意力(下图来自上文提到过的Transformer通俗笔记)。
比如,举个例子,假设:
Image
Image
(注意,是针对每个token,总之,如论文中所说,During inference, all keys and values need to be cached to accelerate inference, so MHA needs to cache elements for each token)
Image
对Key和Value进行了一个低秩联合压缩(即Low-Rank Key-Value Joint Compression,通过低秩转换为一个压缩的KV,使得存储的KV的维度显著减小)  
  • 如上图所示(在MHA GQA中大量存在于keys values中的KV缓存——带阴影表示,到了MLA中时,只有一小部分的被压缩Compressed的Latent KV了)  那,MLA具体如何做压缩呢,详看下节。

2.2 详解MLA的两个部分:一部分做压缩、一部分做RoPE编码

Image
2.2.1 MLA对Q K V的压缩:先对KV联合压缩后升维,再对Q压缩后升维
2.2.1.1 先对KV联合压缩(Low-Rank Key-Value Joint Compression)、后升维
Image
\begin{array}{l} \mathbf{c}_{t}^{K V}=W^{D K V} \mathbf{h}_{t} \ \mathbf{k}_{t}^{C}=W^{U K} \mathbf{c}_{t}^{K V} \ \mathbf{v}_{t}^{C}=W^{U V} \mathbf{c}_{t}^{K V} \end{array}
可以看到针对KV先一块降维(公式表示时用D表示降维),再K、V各自升维(公式表示用U表示升维),具体而言
且在推理过程中
Image
(即如论文中所说,during inference, since 𝑊𝑈𝐾 can be absorbed into 𝑊𝑄, and 𝑊𝑈𝑉 can be absorbedinto 𝑊𝑂, we even do not need to compute keys and values out for attention)
注,为方便大家更好的理解,我于24年8月27日晚上特地花了个把小时(反复琢磨、反复修改),用手头的iPad Pro + apple pencil画了下上述过程,以方便大家一目了然的对比前后维度的变化(至于下图底部中“除了之外”的怎么回事,不急,下文很快会逐一阐述)
2.2.1.2 再对Q压缩降维、后升维
其次,对于上图左下角的Image
  1. 之前提到KV Cache中,Q的作用只发生在当下(预测下一个token时,其只能看到待预测token之前的所有token),但是在模型训练的过程中,每个输入的token会通过多头注意力机制生成对应的query、key和value。这些中间数据的维度往往非常高,因此占用的内存量也相应很大。

  2. 所以论文中也提到为了降低训练过程中的激活内存activation memory,DeepSeek-V2还对queries进行低秩压缩——即便这并不能降低KV Cache,而其对Q的压缩方式和K、V一致,依然是先降维再升维。
Image
其中:
2.2.2 MLA对query和key的RoPE编码
先说结论,如下图红框所示,需要对Image做RoPE编码,并对其中的Key位置编码的部分进行CacheImage,从而在推理时不需要对Key进行位置编码的计算,提高了推理效率。
再说原因,即选择对Image做RoPE编码的背后有何深意呢?且听我july慢慢道来。
首先,在RoPE的实现中,如果要让Q、K带上位置信息,会分别乘以相应的位置编码矩阵。
Image
如果计算QK时,自然就变成了:
Image
对于上面这个公式,有两个小细节值得一提
  正确的就是S = Q^{T} R_{m}^{T} R_{n} K
  假设 Q 和 K 是列向量(维度 d×1)  
其维度为(1 \times d) \cdot(d \times d) \cdot(d \times d) \cdot(d \times 1)=1 \times 1
而非S=R_{m}^{T} Q^{T} R_{n} K
 其维度为(d \times d) \cdot(1 \times d) \cdot(d \times d) \cdot(d \times 1)
有同学可能问,为何不是Q乘以K的转置了,原因在于上RoPE与标准注意力计算顺序是各自独立的  
通过上一节可知,DeepSeek-V2对Q和K都进行了压缩(如下图 带着蓝色下划线的):q_{t}^{C}=W^{U Q} c_{t}^{Q}\mathbf{k}_{t}^{C}=W^{U K} \mathbf{c}_{t}^{K V}
则整个过程变成S=\left(W^{U Q}\right)^{T}\left(c_{t}^{Q}\right)^{T} R_{m}^{T} R_{n} c_{t}^{K V} W^{U K}
其中的Image——如上节所述,分别是用于从低秩表示恢复到原始维度的解压缩矩阵(说白了,就是升维的)。
然而问题是:
Image
用位置编码(因为压缩操作可能已经丢失了某些信息,使得位置编码不能直接和有效地反映原始Q和K的位置关系)  
换言之,RoPE与低秩KV压缩不兼容——RoPE is incompatible with low-rank KV compression咋个具体不兼容法呢,具体来说,RoPE 对键K和查询Q都是位置敏感的。如果我们将RoPE 应用于键\mathbf{k}_{t}^{C},W^{U K}
在方程 \mathbf{k}_{t}^{C}=W^{U K} \mathbf{c}_{t}^{K V}
中将与一个位置敏感的RoPE 矩阵耦合。
To be specific, RoPE is position-sensitive for both keys and queries. If we applyRoPE for the keys k𝐶𝑡, 𝑊𝑈𝐾in Equation 10 will be coupled with a position-sensitive RoPE matrix这样一来,W^{U K}在推理过程中就不能再被吸收到W^{UQ}中。
「至于如何理解absorb 𝑊𝑈𝐾 into 𝑊𝑈𝑄, and 𝑊𝑈𝑉 into 𝑊𝑂,下文会提到,比如前者absorb 𝑊𝑈𝐾 into 𝑊𝑈𝑄。
Image
此外,这里应该是W^{UQ},,而非论文原文中的W^Q   。
Image
而矩阵乘法不遵循交换律。
In this way, 𝑊𝑈𝐾 cannot be absorbed into 𝑊𝑄——此处应该为Image any more during inference, since a RoPE matrixrelated to the currently generating token will lie between 𝑊𝑄 and 𝑊𝑈𝐾 and matrix multiplication does not obey a commutative law
因此,必须在推理过程中重新计算所有前缀token的键,如此 这将显著阻碍推理效率。
As a result, we must recompute the keys for all the prefixtokens during inference, which will significantly hinder the inference efficiency
2. 为了解决这问题,Deepseek-V2设计了两个pe结尾的变量——ImageImage(如论文中所说,we propose the decoupled RoPE strategy that uses additional multi-head queries q𝑅𝑡,𝑖 ∈ R𝑑𝑅ℎ and a shared key k𝑅𝑡 ∈ R𝑑𝑅ℎ to carry RoPE, where Image denotes the per-head dimension of the decoupled queries and key,即表示解耦查询和键的每头维度)——亦即如下图红框里的两个变量。
分别是用于生成解耦查询和键的矩阵,如下图的最右下角所示「为方便大家更好的理解,我把我自己上面画的手绘图又加了一些内容,好与上述这些公式逐一比对」  
 且顺带总结一下。
Image
Image
3. 可能如果没有再三强调,有的宝子们便不太注意 
 故,我july再提一下上面这句话中“将信息存储和旋转编码解耦开”隐藏的一个细节,即如下图所示 
请注意上面这两句话的含金量,这点几乎没有文章会给你特地强调出来的,虽然它本身就是个事实性的存在。
压缩完、且RoPE编码完之后,最后将这4个变量——q_{t}^{C}=W^{U Q} c_{t}^{Q}\mathbf{k}_{t}^{C}=W^{U K} \mathbf{c}_{t}^{K V}\mathbf{q}_{t}^{R}\mathbf{k}_{t}^{R}
,分别拼接起来,形成
Image
以进行最后的计算:
其中蓝色框中的向量\mathbf{c}_{t}^{K V}\mathbf{k}_{t}^{R}
需要缓存以进行生成。在推理过程中,the naive formula需要从\mathbf{c}_{t}^{K V}中恢复\mathbf{k}_{t}^{C}\mathbf{v}_{t}^{C}以进行注意力计算

Image
Image
我在另一篇文章中费了比较大的篇幅进行深入阐述,详见此文《MLA实现及其推理上的十倍提速——逐行解读DeepSeek V2中多头潜在注意力MLA的源码(图、公式、代码逐一对应)》的第二部分 MLA推理层面的改进:通过矩阵吸收十倍提速 MLA 算子,比如针对前者absorb 𝑊𝑈𝐾 into 𝑊𝑈𝑄,有
Image
最终,单个Token产生的缓存包含了两个部分,即\left(d_{c}+d_{h}^{R}\right) l
其中,如上文说过的:
Image
Image
 把我上面画的手绘图:
翻转一下,可以对比下Image之间的换算关系   因此,它的KV缓存等于只有2.25组的GQA,但其性能强于MHA。
至于MLA的代码实现,详见上面提到过的此文《MLA实现及其推理上的十倍提速——逐行解读DeepSeek V2中多头潜在注意力MLA的源码(图、公式、代码逐一对应)》

2.3 DeepSeekMoE:以经济成本训练强大的模型

2.3.1 基本架构与Device-Limited Routing
由于在上文的1.3节,详细的介绍了DeepSeekMoE(包括细粒度专家分割和共享专家隔离),故本节描述从简
DeepSeekMoE有两个关键理念:
  1. 将专家细分为更细的粒度以实现更高的专家专业化和更准确的知识获取;

  2. 隔离一些共享专家以减轻路由专家之间的知识冗余。
最终,在激活和总专家参数数量相同的情况下,DeepSeekMoE 可以大幅超越传统的 MoE 架构。
其中
对于DeepSeek-V2,除了简单的top-K路由专家选择外,其还确保每个token的目标专家最多分布在 𝑀个设备上。具体来说,对于每个token,我们首先选择 𝑀个设备,这些设备中有专家具有最高的亲和分数。
然后,在这些 𝑀个设备上的专家中进行top-K选择。在实践中,我们发现当 𝑀 ⩾3 时,设备限制路由可以实现与不受限制的 top-K 路由大致一致的良好性能。
2.3.2 负载均衡的辅助损失(Auxiliary Loss for Load Balance)
首先,不平衡的负载会增加路由崩溃的风险,防止某些专家得到充分的训练和利用。其次,当采用专家并行时,不平衡的负载会降低计算效率。
故在 DeepSeek-V2 的训练过程中,设计了三种辅助损失,分别用于控制专家级负载均衡Image
  • 专家级均衡损失

  • 设备级平衡损失

  • 通信平衡损失
此外,虽然平衡损失旨在鼓励负载平衡,但需要承认它们不能保证严格的负载平衡。
为了进一步减轻由于负载不平衡导致的计算浪费,他们在训练期间引入了设备级的Token-Dropping策略。
  1. 这种方法首先计算每个设备的平均计算预算,这意味着每个设备的容量因子相当于1.0。

  2. 然后,受Riquelme等人的启发,在每个设备上丢弃具有最低亲和力分数的token,直到达到计算预算。

  3. 此外,确保大约10%的训练序列中的token永远不会被丢弃。通过这种方式,可以根据效率要求灵活决定在推理过程中是否丢弃标记,并始终确保训练和推理之间的一致性。
编辑:黄继彦



关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。



新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

简单来说,就好比把一本大部头书籍(原始 KV)压缩成一份精华摘要(低秩 KV)。摘要保留了书中的核心内容,但省略了大量的细节。MLA 的关键就在于如何生成这份“精华摘要”,既要保证摘要的准确性,又要尽可能减少摘要的篇幅(显存占用)。如果摘要提取得不好,就会导致性能下降,这就是 MLA 的局限性。

从工程角度来看,DeepSeek V2-Lite 的设计思路是“trade-off”。它在模型结构、参数量、计算复杂度等方面都进行了精简,以适应资源受限的设备。这种 trade-off 的思想在实际应用中非常重要,开发者需要根据具体的场景和需求,权衡各种因素,选择最合适的模型。

从学术角度来看,MLA 的低秩 KV 压缩本质上是一种矩阵分解的近似方法。它利用了 KV 矩阵的固有低秩结构,通过保留奇异值较大的主成分来实现降维。这种方法在理论上具有一定的最优性,但在实际应用中,需要根据具体的模型和数据集选择合适的秩,以平衡显存开销和性能。与其他方法相比,MLA 的优势在于其简洁性和可解释性,但局限性在于其对低秩结构的依赖性。

DeepSeek V2-Lite 的定位很明确,就是“轻量级”。它牺牲了一部分性能,换来了更小的模型体积和更低的计算需求,适合在移动设备、嵌入式系统等资源受限的场景下使用。对于开发者来说,V2-Lite 表明,在资源有限的情况下,可以通过模型压缩、知识蒸馏等技术,在性能和效率之间找到平衡。

从信息论的角度来看,细粒度专家分割可以降低每个专家的信息熵,提高信息传递的效率。共享专家隔离则可以减少模型参数的冗余,降低模型的过拟合风险。DeepSeekMoE 相当于在传统 MoE 的基础上引入了更强的正则化约束,从而提高了模型的泛化能力。

你可以把 DeepSeekMoE 想象成一个医院。传统 MoE 就像是按照科室划分的医生团队,每个科室负责一部分疾病的诊疗。而 DeepSeekMoE 就像是进一步细分,每个医生专精于某几种具体的疾病,并且不同科室之间还有一些独立坐诊的专家,避免了知识上的重叠。这样一来,诊断和治疗效率自然就更高了。

这个问题问到了点子上!DeepSeek V2 的 MLA 核心在于“低秩”。你可以理解为它把原本高维的 KV 数据压缩到一个低维空间,只保留最重要的信息,这样显存占用自然就下来了。同时,通过巧妙的设计,MLA 尽量保证压缩过程的信息损失最小,避免性能大幅下降。与其他方法相比,MLA 的优势在于它同时兼顾了显存和性能,但局限性可能在于需要更精细的设计和调优,以避免压缩过度导致性能损失。

想象一下,DeepSeek V2 是一个功能强大的瑞士军刀,而 V2-Lite 就像是一个便携式多功能刀。虽然 V2 在所有方面都更出色,但 V2-Lite 更轻便、更易于携带,适合日常使用。对于需要在手机上跑 AI 应用的开发者来说,V2-Lite 无疑是一个更务实的选择。

DeepSeekMoE 的精髓在于“更细”和“隔离”。细粒度分割意味着每个专家负责更具体、更细分的任务,从而提高了专业性。共享专家隔离则避免了不同专家之间的知识冗余和冲突,让每个专家都能发挥自己的长处。和传统 MoE 相比,DeepSeekMoE 就像是一个分工更明确、协作更高效的团队,自然能取得更好的成绩。