AI 基础进阶 · 模型架构
DeepSeek 与 MoE:用"每次只请两个专家"把万亿模型跑便宜
模型越大越聪明,但稠密模型(Dense)把上千亿参数全压在一次前向传播里,显存和算力贵到离谱。DeepSeek 给出的答案是 MoE(混合专家):模型里养一大批"专家小网络",每个 token 只叫醒最对口的两三个,参数总量很大、实际算力却省一大半。这一课讲清 MoE 怎么路由、DeepSeek V3 的 MLA 省了什么、R1 又怎么靠强化推理追上 GPT-o。
① 本章怎么学(4 步走,约 50 分钟)
1先懂稠密 vs 稀疏(12 分钟)
读②③:为什么全参数同时算很贵。
2看懂 MoE 路由(12 分钟)
读③:router 打分、top-k 选专家。
3看懂 MLA 与 R1(16 分钟)
读④⑤⑥:省 KV、强化推理、怎么选。
4自测口述(10 分钟)
做⑨折叠题,背⑪口诀。
本章小目标学完你要能:① 说清 MoE 的 router/top-k 是什么;② 讲出 DeepSeek V3 里 MLA 省的是哪部分;③ 解释 R1 为什么靠 RL 就能做长推理;④ 对比它和 Llama/Mistral 这类稠密模型差在哪。
② 先建立直觉:稠密模型为什么贵
稠密模型(Dense)的意思是:来一个词,模型里所有参数都要参与算一遍。Llama、Mistral、Qwen 小尺寸版本都是这种。好处是简单、好训、好部署;坏处是——你想更聪明,就只能把参数从 7B 加到 70B、400B,每加一份,每次推理的算力就同比例涨一份。
MoE 的思路是"会诊但不全会":模型总参数可以做到上千亿,但每来一个 token,只激活其中一小撮(比如 671B 总参数里只算 37B)。像一个医院养了 128 个科室专家,病人挂号时分诊台(router)只把他分给最对口的 2 个医生看,其余 126 个专家今天休息、不占算力。
| 对比 | 稠密模型 Dense | MoE 稀疏模型 |
| 每次前向激活的参数 | 全部参数 | 仅 top-k 个专家(约 1/5~1/8) |
| 总参数量 | = 激活参数 | 远大于激活参数(如 671B 总 / 37B 激活) |
| 训练成本 | 随规模线性涨 | 总参数大,但单次算力省 |
| 推理显存 | 小模型友好 | 要装下所有专家权重,显存占用大 |
| 代表 | Llama 3、Mistral、Qwen 小尺寸 | DeepSeek-V3、Mixtral、GPT-4 传闻 |
一句话公式有效算力 ≈ 激活参数,而不是总参数;MoE 就是把这两个数字掰开。
③ MoE 核心:Router 怎么"分诊"
MoE 层的关键是一个叫 router(路由器)的小网络。它对每个 token 做三件事:
1打分
对当前 token 的向量,给每个专家打一个分数(一次线性变换 + softmax)。
2选 top-k
分数最高的 k 个专家被选中,DeepSeek 默认 k=2,即每 token 只请 2 个专家。
3加权求和
两个专家各自算一遍,再按 router 给的权重加权合并成输出。
DeepSeek V3 每层有 256 个路由专家 + 1 个共享专家:共享专家所有 token 都用(学通用知识),路由专家按 top-2 被挑选(学分工专长)。这样既不浪费容量,又避免不同 token 挤在同一批专家上。
读法:token 进来 → router 分诊 → 只叫醒对口的两个专家算 → 加权合并,其余专家这一轮不参与。
为什么需要"负载均衡"如果 router 总把活儿分给那几个明星专家,其余专家永远学不到东西。训练时要加一个辅助损失,强迫流量均匀摊到所有专家上——这叫 load balancing(负载均衡)。
④ DeepSeek V2/V3 的两大改造:MLA + MoE
MLA(多头潜在注意力):把 KV Cache 压小
长对话贵,主要贵在 KV Cache——每生成一个词都要把之前所有词的 K、V 存下来。传统 MHA(多头注意力)头数多、KV 也大。MLA 的思路是:不直接存完整 K/V,而是先把它压缩成一个低维"潜向量"存着,用时再还原。同样长度下,KV Cache 能压到原来的几分之一,长上下文便宜一大截。
MoE 层:训练便宜,推理聪明
DeepSeek-V3 总参数约 671B,但每个 token 只激活约 37B。也就是说:训练它时学到了 671B 的知识广度,推理时却只花 37B 的算力。这就是它"便宜又强"的根本原因。
| 技术点 | 解决什么痛 | 大白话 |
| MoE + top-2 路由 | 大模型训练贵 | 总专家很多,每次只请两个 |
| 共享专家 | 通用知识重复学 | 所有人共享一个全科大夫 |
| MLA | 长上下文 KV Cache 爆显存 | 把记忆先压缩再存档 |
| Multi-Token Prediction | 训练收敛慢 | 一次预测后面几个词,加速训练 |
⑤ DeepSeek R1:不靠堆参数,靠强化学习学会"想"
R1 是推理模型,和 V3 这种通用对话模型路线不同:它先让模型在规则环境(数学题、代码题)里用强化学习(RL)反复试——做对了给奖励,做错了给惩罚,模型慢慢学会把思路一步一步写出来(这就是你看到的一大段"思维链 CoT")。
1冷启动
先用少量监督数据教模型基本格式。
2RL 炼丹
在数学/代码题里自我博弈,靠结果对错给奖励。
3蒸馏
把 R1 的长思维链当训练数据,教小模型也学会推理。
关键启示:推理能力不一定要靠更大的基座,靠 RL 也能"练"出来;再蒸馏到小模型,便宜的小模型也能拿到大模型一半的推理本事。
⑥ 选型速查:什么时候用 MoE,什么时候用稠密
知道了原理,落地时怎么选?记住一句:要最强效果、能堆很多卡 → MoE;要简单好部署、单卡/小卡 → 稠密。
| 你的情况 | 推荐 | 原因 |
| 自研超大规模模型、训练预算充足 | MoE(DeepSeek-V3 路线) | 同等算力下知识容量更大 |
| 一张消费卡本地跑 | 稠密 7B/14B | MoE 要装全部专家,显存扛不住 |
| 做超长上下文对话 | 带 MLA 的模型 | KV Cache 小,长文本便宜 |
| 主打数学/代码推理 | R1 类推理模型 / 蒸馏版 | RL 练出的思维链更稳 |
一句话记住MoE 是"训练时省钱、显存要够";MLA 是"长对话省钱";R1 是"靠 RL 不靠堆参数"。三者解决的不是同一个问题,别混。
⑦ 三个例子
例 1 · MoE 路由打分
当前 token 是"它",router 给 8 个专家打分。
分数:专家1=0.31、专家5=0.28、专家3=0.12、其余更低。top-2 选中专家 1 和专家 5,输出 = 0.31×专家1结果 + 0.28×专家5结果,其他 6 个专家这次完全不算。
例 2 · MLA 省 KV Cache
一个长对话上下文 128K token。
传统 MHA 要为每个 token 存完整 K、V,显存占用巨大;MLA 把 K/V 压成低维潜向量后,每 token 存的量降到原来的 1/10 左右,同样一张显卡能同时服务更多人、更长上下文。
例 3 · R1 蒸馏小模型
想要一个能本地跑的推理小模型。
让大 R1 解 10 万道题并写出完整思维链,把这些"题目+长思考+答案"当数据,去微调一个 7B 小模型。小模型没那么聪明,但学会了"一步步想"的习惯,数学/代码题上明显变稳。
⑧ 易错提醒
易错 1:以为 MoE 推理时只装被选中的专家错。所有专家权重都得常驻显存(router 要对全体打分),只是每次计算只过 top-k。所以 MoE 模型显存占用并不小,省的是算力/算量,不是装模型的显存。
易错 2:以为 MLA 取消了 KV Cache错。MLA 是把 KV 压缩后再缓存,不是不要 KV。没有 KV Cache,长文本会每秒重算全部历史,慢到不可用。
易错 3:把 R1 当成又一个"更大的 V3"R1 强在推理,靠的是后训练阶段的强化学习,不是把基座参数堆得更大。它和 V3 是"通用聊天"与"深度思考"两种产品定位。
⑨ 折叠自测(点开即答)
基础1MoE 里 router 的作用是什么?
给每个 token 给所有专家打分,选出分数最高的 top-k(DeepSeek 是 top-2)个专家参与本次计算,并按分数加权合并输出。
中档2DeepSeek-V3 号称 671B 参数,为什么推理时并不需要 671B 的算力?
因为它是 MoE:总参数 671B 都要装进显存,但每个 token 只激活约 37B 的专家计算量。总参数大=知识容量大,激活小=单次推理便宜。
拔高3MLA 主要省的是什么?和 R1 的蒸馏分别解决什么问题?
MLA 省的是推理时的 KV Cache 显存(把 K/V 压缩成低维潜向量再存);R1 的蒸馏解决的是"便宜小模型怎么获得推理能力"——把大模型的长思维链当数据教给小模型。
⑩ 费曼三问(合上讲,自己讲给自己听)
用大白话回答这三个问题,讲不顺就是没懂
问 1:为什么说 MoE 是"参数很多、算得很少"?用医院挂号打个比方。
问 2:DeepSeek 把 K/V 压缩存起来,这是为了解决哪个真实痛点?
问 3:R1 不堆参数、靠 RL 学会推理,再蒸馏给小模型——这条路最省成本的是哪一段?
MoE:router 打分 → top-k 选专家 → 加权求和 总参数大,激活小
DeepSeek-V3:671B 总参 / 37B 激活 + MLA 压 KV 便宜又长上下文
R1:RL 练思维链 → 蒸馏小模型 小模型也会推理
别搞混:MoE 省算力不省显存;MLA 压 KV 不取消 KV 两个易错点
⚡ 高频 FAQ
问:MoE 模型能不能只下两个专家跑?不能。所有专家权重都得常驻显存,router 要对全体打分,省的只是每次算量。
问:MLA 和 GQA 是一回事吗?不是。GQA 是少存几个 KV 头;MLA 是把每个 K/V 再压成低维潜向量,两者可叠加。
问:R1 蒸馏后的小模型和 R1 差多少?蒸馏小模型拿得到大模型一部分推理能力,但复杂推理仍弱于原版 R1,适合本地/低成本场景。
📖 名词速查
| 名词 | 大白话 |
| Dense 稠密 | 每次前向所有参数都参与算 |
| MoE | 混合专家,每 token 只激活一小撮专家 |
| Router | 给 token 打分、选 top-k 专家的小网络 |
| Top-k | 分数最高的 k 个专家被选中(DeepSeek k=2) |
| 共享专家 | 所有 token 都用的那个全科专家 |
| MLA | 把 K/V 压成低维潜向量再缓存 |
| CoT 思维链 | 模型把推理过程一步步写出来 |
🧪 动手实验建议
1跑一次推理
用 vLLM 拉一个 Qwen2.5-7B,对比开/关 GQA 的显存占用。
2对比 MoE
找 Mixtral 8x7B,观察它每次只激活 2 个专家。
3读一段 R1
让 R1 解一道数学题,观察它写出的长思维链。
观察重点同样问题,稠密模型一步给答案,R1 会先"想"一大段;MoE 模型总参数大但单次算量小。
🔁 5 天复习计划
| 天 | 任务 | 自检 |
| 第 1 天 | 读②③,理解稠密 vs MoE、router 路由 | 画出 token→router→top-2 的流程图 |
| 第 2 天 | 读④⑤,搞懂 MLA 与 R1 各自解决什么 | 说清 MLA 压的是 KV,R1 练的是推理 |
| 第 3 天 | 读⑥选型表 + ⑦三个例子 | 按场景选出该用 MoE 还是稠密 |
| 第 4 天 | 做⑨折叠自测,背⑩口诀 | 三题全对、口诀脱口而出 |
| 第 5 天 | 合上讲⑩费曼三问,不看资料讲一遍 | 三处关键区别都讲对 |
三句口诀① MoE:总专家很多,每次只请两个;② MLA:KV 先压缩再存档;③ R1:RL 练思维链,蒸馏给小模型。
📌 知识链路
前置知识(先学)先搞懂 Transformer 里注意力和前馈网络在算什么,再看 MoE"把前馈网络换成多个专家"才不晕。
本节位置承接"主流模型全景",专门往下钻一层:为什么 DeepSeek 又便宜又强,靠的就是 MoE + MLA 这套省成本的组合拳。
下一步(学完去)接着看国产模型家族(Qwen/GLM/Kimi/豆包),再看推理优化怎么把这些模型在线上跑快。