DeepSeek 爆火的 “黑魔法”:MLA 让大模型显存直接省 75%,这操作太秀了!
DeepSeek的MLA(多头潜在注意力)机制通过创新性的压缩存储方式大幅降低显存占用。与传统MHA(多头注意力)需要存储完整的K/V值不同,MLA将输入压缩为2个数的"压缩包"存储,利用矩阵结合律实现计算时无需还原原始数据。这种设计将显存占用降至MHA的1/4,同时保持相近性能表现。在初始化方面,预训练阶段采用标准初始化保证模型学习能力,而微调阶段则采用LoRA的特殊初始化策
一、引言
“你有没有过这种崩溃时刻:跑大模型推理,明明参数不算顶格,结果显存‘咔嚓’一下就满了 —— 全是 KV Cache 在疯狂吃内存!
但 DeepSeek 凭啥能在算力有限的设备上‘杀疯了’?答案藏在它的 MLA(Multi-Head Latent Attention,多头潜在注意力)里:传统 MHA(Multi-Head Attention,多头注意力机制) 处理 1 个 Token 要存 8 个 K/V 数值,显存直接被塞满;而 MLA 玩了个‘乾坤大挪移’—— 先把输入压成 2 个数的‘压缩包’存起来,推理时靠矩阵结合律‘暗度陈仓’,不用还原原始数据就能算注意力!
相当于把显存占用直接砍到原来的 1/4,还能保住和 MHA 差不多的效果 —— 这波‘既要显存省、又要性能稳’的操作,直接把大模型的‘铺张浪费’治得服服帖帖!”
二、场景设定
假设我们需要处理 1 个 Token(比如单词 "Deep")。
三、传统方式:MHA (多头注意力) —— “铺张浪费”
在标准 MHA 中,每个头都有独立的投影矩阵,生成独立的 K 和 V,并且全部都要存下来。

四、DeepSeek 方式:MLA (多头潜在注意力) —— “压缩存储”
MLA 认为:这些 K 和 V 之间其实有大量冗余信息。我们不需要存最终结果,只需要存一个**“压缩包”**(Latent Vector)。

五、关键问题:存这么少,计算时怎么还原?(矩阵吸收技巧)
你可能会问:“存是存少了,但计算注意力时,我不还是得把这 2 个数还原成那 8 个数才能算吗?那样显存不就又爆了吗?”
MLA 的精髓在于**“不需要显式还原”**。


六、补充
Q:在训练过程中如何初始化下降矩阵
与解压矩阵
?
A:
这里需要区分 MLA (作为基础架构) 和 LoRA (作为微调插件),虽然它们数学形式都是 ,但初始化逻辑完全不同。
情况 A:DeepSeek MLA (从头预训练 Pre-training)
MLA 是 DeepSeek V2/V3 模型原本骨架的一部分,不是后来加进去的补丁。
-
初始化策略: 标准初始化 (Standard Initialization)
-
通常使用 Xavier (Glorot) 初始化 或 Kaiming (He) 初始化。
-
也就是两个矩阵都初始化为均值为 0、方差较小的高斯分布 (Gaussian Distribution) 随机数。
-
-
原因:
-
模型是从一张白纸开始学的。我们需要让信号在网络中流动起来。
-
如果把其中一个初始化为 0,那么输出就全为 0,梯度就断了 (Dead Neuron),模型一开始就学不到东西。
-
情况 B:LoRA (微调 Fine-tuning)
虽然 MLA 是架构,但面试常问的“低秩矩阵初始化”通常会关联到 LoRA。LoRA 的初始化非常有讲究。
-
初始化策略:
-
(矩阵 A): 高斯随机初始化 (Gaussian Initialization)。
-
(矩阵 B): 全零初始化 (Zero Initialization)。
-
原因 (意义):
-
在微调开始时(Step 0),我们希望模型的行为和原始模型完全一致。
-
通过让
,旁路对主路没有任何干扰。
-
随着训练开始,梯度流向
和
,
慢慢不再是 0,模型才开始逐渐学到新任务的知识。

关于更新: 二者都是一直更新的。它们是模型中的可学习参数 (Learnable Parameters),在每一轮训练(Step)中都会随着梯度下降进行调整。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)