← 返回资讯

MoE 架构科普:为什么大模型要「混合专家」

2026-08-03

GPT-4、DeepSeek-V3、Mixtral 都采用了 MoE(Mixture of Experts,混合专家)架构,但厂商很少在官方文档里解释这对你意味着什么。理解 MoE 的核心思路,能帮你更好地预测模型的能力边界和成本结构。

一、Dense 模型 vs MoE 模型:一张图看懂

对比维度Dense(稠密)模型MoE(混合专家)模型
参数结构每次推理激活全部参数每次推理只激活部分”专家”子网络
总参数量较小(如 70B)可以很大(如 671B)
激活参数量= 总参数量远小于总参数量(如仅激活 37B)
推理成本正比于总参数正比于激活参数,显著更低
内存需求正比于总参数需加载全部专家到内存(较高)
训练复杂度相对简单需要精心设计路由机制

二、MoE 的工作原理

核心组件

MoE 模型的关键在于 FFN 层(Feed-Forward Network) 的替换。传统 Dense Transformer 的每个 FFN 层有一个完整的前馈网络;MoE 将它替换为 N 个”专家”子网络(Expert),每次推理时由一个**路由网络(Router)**决定激活哪 K 个专家(通常 K=2 或 K=8)。

路由过程(简化)

  1. 输入 Token 的表征向量送入 Router
  2. Router 计算该 Token 与每个 Expert 的”亲和度”得分
  3. 选取 Top-K 得分对应的 K 个 Expert 处理该 Token
  4. K 个 Expert 的输出加权求和,作为该层输出

为什么叫”专家”

在训练过程中,不同 Expert 会自然地”专精”于不同类型的输入模式(如代码 Token、数学符号、特定语言等),尽管这种专精是隐式涌现的,并非人为设计。这里有个常见误解要纠正:不要指望某个专家专门处理”Python代码”、另一个专门处理”法律文本”这种人类能理解的语义分工。实际观测(DeepSeek、Mixtral 团队都在论文里提过)显示,专家的分工更接近”处理某类 Token 组合模式”,比如某个专家可能对标点符号密集的片段响应更强,另一个对长数字串更敏感。这种分工是路由网络在训练中自己摸索出来的副产品,粒度比人类直觉的”学科分工”细碎得多,也杂乱得多。你没法通过分析某个专家的权重就说出它”擅长什么”,能观察到的只是统计规律。

专家粒度:粗粒度专家 vs 细粒度专家+共享专家

MoE 不是只有一种设计范式,专家的”大小”和”数量”怎么权衡,各家厂商走了不同路线,这直接影响模型的效果和推理特性:

  • 粗粒度路线(Mixtral 代表):8 个专家,每个专家体量较大(相当于一个完整 FFN),每次激活 2 个(Top-2 路由)。优点是路由计算简单、专家之间语义边界清晰;缺点是专家数量少,组合方式有限,容易出现”每个专家都学得比较通用”的问题,专精度不够高。
  • 细粒度路线 + 共享专家(DeepSeek 代表):把 FFN 拆得更细,专家数量大幅增加(可以到几百个),同时额外设置若干个”共享专家”——这些共享专家每个 Token 都必经,负责学习通用知识;剩下的路由专家负责学习差异化知识。这样设计的好处是专家可以学得更”专”(因为通用能力已经被共享专家兜底了),路由网络也更容易做负载均衡,缺点是路由和通信的工程复杂度显著上升。

如果你在选型时看到”细粒度 MoE""共享专家”这类描述,基本可以判断这是较新一代的 MoE 设计,理论上参数利用效率比 Mixtral 那种早期粗粒度方案更高——但这不代表效果一定更好,最终还是要看具体跑分和你自己业务场景的实测表现,架构新旧不能替代实测。

三、MoE 对推理成本的实际影响

以 DeepSeek-V3 为例(参数以官方公告为准):

  • 总参数量:671B
  • 每次推理激活参数:约 37B
  • 推理算力消耗约等于一个 37B Dense 模型

这意味着:你以旗舰级别的能力(671B 知识容量),承担中型模型(37B)的推理成本。这是 MoE 架构最吸引工程师的核心价值。

四、MoE 的主要挑战

内存需求高

虽然推理激活的参数少,但所有专家权重都需要加载到内存中。671B 参数模型 FP16 格式需要约 1.3TB 内存,只能分布式部署。这对私有部署形成显著门槛。

专家负载均衡

如果路由网络总是把 Token 分配给少数几个热门专家,其余专家空转,整体效率下降,且热点专家成为性能瓶颈。训练时需要辅助 Loss 来强制均衡。

批处理效率

MoE 的推理在小 Batch 场景下效率接近 Dense 模型;但大 Batch 并行时,专家并行(Expert Parallelism)的通信开销增加,工程优化难度更高。

五、主流 MoE 模型的专家设计对比

光说”细粒度 vs 粗粒度”比较抽象,直接摆两个你大概率调用过的模型,看看官方公开资料里的实际设计差异(具体数字以各厂商技术报告/公告为准,架构会随版本迭代调整,这里列的是发布时的公开设计思路):

对比项Mixtral 8x7B(Mistral AI)DeepSeek-V3(DeepSeek)
专家总数8 个(每层)数百个路由专家 + 若干共享专家
单次激活数Top-2(激活 2 个)Top-8 路由专家 + 全部共享专家
专家粒度粗粒度(专家体量大)细粒度(专家体量小,数量多)
是否有共享专家
设计意图简化路由,工程实现容易提升专家专精度,负载更均衡
总参数量级数十 B 级数百 B 级

看这张表你应该能体会到:MoE 不是一个统一标准,而是一整个设计空间。厂商在”路由简单 vs 专家专精""通信开销 vs 负载均衡”之间做的取舍完全不同。所以下次看到两个都叫”MoE”的模型跑分差异很大,先别急着怪”MoE 不靠谱”,很可能是路由策略、专家粒度、训练数据这几个变量叠加的结果,架构标签本身解释不了效果差异。

六、从 API 表现反推一个模型是不是 MoE

厂商很少在 API 文档里直接标注”本模型是 MoE 架构”,但你可以通过几个可观测的信号做推测(不是 100% 准确,只是经验判断):

  1. 看定价和能力的性价比:如果一个模型跑分接近顶级 Dense 模型,但价格明显低一截(比如同能力段价格只有对手的三分之一到一半),大概率是 MoE——厂商省下来的推理成本会体现在报价里。
  2. 看首 Token 延迟(TTFT)的波动:MoE 模型因为多了一步路由计算,TTFT 通常会比同能力 Dense 模型略高,且在高并发时波动更明显(路由到冷门专家时,那部分专家权重可能没被预热到显存里,会有额外加载开销)。
  3. 实测脚本:你可以自己跑一遍,粗略感知延迟特征。
# 测试单次请求的 TTFT(首 Token 到达时间),用 curl 的 --write-out 拿到分段耗时
curl -s -o /dev/null -w "DNS解析:%{time_namelookup}s 建连:%{time_connect}s 首字节:%{time_starttransfer}s 总耗时:%{time_total}s\n" \
  -X POST https://api.example.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"target-model","messages":[{"role":"user","content":"用一句话解释MoE"}],"stream":true}'

这条命令的关键是 time_starttransfer,对流式(stream)接口而言它约等于 TTFT。你可以对同一个供应商的不同模型各跑 10~20 次取平均值和 P90,横向对比。注意控制变量:同一时段、同样的 Prompt 长度、同样的网络环境,不然网络抖动会淹没架构差异带来的那点延迟差别。单次测试没有意义,一定要多跑几次看分布,偶发的一次高延迟大概率是网络抖动而不是路由问题。

七、MoE 推理工程的坑:为什么”专家并行”比数据并行难搞

如果你的团队考虑自己部署开源 MoE 模型(而不是只调 API),这几个工程坑值得提前知道:

  • 专家并行(Expert Parallelism, EP)的通信瓶颈:把不同专家分布到不同 GPU 上后,每个 Token 算完 Router 要被”发”到对应专家所在的卡上,算完还要”收”回来——这个 all-to-all 通信在专家分布不均、跨机部署时开销很大,是 MoE 分布式推理最容易卡脖子的地方。像 vLLM、SGLang 这类推理框架这两年都在持续优化 MoE 的并行策略(EP+TP 混合、专家权重预取等),但调优参数(比如每张卡放几个专家、要不要开 EP)需要结合你自己的显卡数量和模型规模反复试,没有放之四海皆准的配置。
  • 显存 OOM 的排查思路:本地部署 MoE 模型时如果报 CUDA out of memory,先别急着加卡,第一步确认你是不是按”激活参数”而不是”总参数”估的显存——MoE 的显存占用要按总参数算(所有专家权重都要常驻显存),激活参数只影响算力,不影响显存。这是最容易踩的估算错误,很多人拿 Dense 模型的显存估算习惯直接套过来就翻车了。
  • 负载不均导致的吞吐下降:如果观察到某几张卡利用率长期偏高、另一些偏低,大概率是路由把 Token 集中分配给了少数专家(训练时的负载均衡 Loss 没生效或者你的输入分布跟训练数据差异太大)。这种情况下加卡不一定能解决问题,先看专家负载分布是否均匀。

这几个坑都不是调 API 的你需要直接处理的,但了解它们能帮你理解:为什么同一个开源 MoE 模型,不同云厂商托管出来的价格和延迟表现能差出好几倍——背后就是这些工程调优水平的差异,不是模型本身变了。

八、你调 API 时到底要不要关心它是不是 MoE

说了这么多原理,回到实用层面:日常调 API,你要不要花精力搞清楚一个模型是不是 MoE?我的判断是——分场景

  • 只是普通业务调用(聊天、摘要、简单 Agent):不用关心。你只看跑分、价格、延迟这几个直接指标就够了,架构是厂商的事,别为了”懂原理”而增加不必要的决策负担。
  • 要在多个同能力段模型里做成本优化:值得关心。知道谁是 MoE、专家设计是粗粒度还是细粒度,能帮你预判”这个模型大概率性价比更高”,作为初筛的一个辅助线索,但最终还是要拿真实业务数据实测,架构只能帮你缩小候选范围,不能替代实测。
  • 要自己部署开源模型:必须关心。MoE 和 Dense 在显存需求、并行策略、调优难度上的差异是数量级的,选错了架构可能导致你的硬件预算规划直接崩掉——同样”能跑得起”的预算,Dense 模型能上,MoE 模型可能因为显存占用而上不去,这时候必须提前把总参数量和硬件预算对齐好。

常见问题

MoE 的”总参数”和”激活参数”哪个更能代表模型能力? 两者都有意义:总参数量反映模型能”记忆”的知识量上限;激活参数量更接近推理时的实际计算量(反映成本和延迟)。评估能力上限看总参数,评估运行成本看激活参数。

API 调用时,我能感知到 MoE 架构吗? 通常不能直接感知——厂商屏蔽了架构细节。你能感知到的是:与同等能力 Dense 模型相比,MoE 模型通常定价更低(因推理成本低),但偶尔首 Token 延迟略高(路由计算开销)。

MoE 模型更容易出现”幻觉”吗? 目前没有明确证据表明 MoE 架构本身会加剧幻觉。幻觉率主要受训练数据质量、对齐方式和推理策略影响,与 Dense/MoE 架构关系不大。

MoE 模型的上下文窗口会不会比 Dense 模型小? 上下文窗口长度和 MoE/Dense 架构没有必然关系,主要取决于位置编码方案(如 RoPE 的外推能力)和训练时用的长文本数据量。你会看到有些 MoE 模型上下文窗口做得很长(因为激活参数少、训练长文本时的算力压力相对可控),但这是间接受益而非架构直接决定的,不要把”MoE=长上下文”当成固定结论。

同样报 429(Too Many Requests),MoE 模型和 Dense 模型的排查思路有区别吗? 排查思路本质一样:先看是不是触发了 RPM/TPM 限流(看响应头里的 x-ratelimit-remaining 之类字段,不同厂商命名不同),加指数退避重试;如果是并发压力下 MoE 模型的 429 明显比同能力 Dense 模型更频繁,可能是厂商这个模型的专家并行部署还没调优到位、后端吞吐没跟上前端流量,这种情况下换成非高峰时段请求或者联系厂商加配额,比自己死磕重试逻辑更有效。

部署 MoE 模型需要专门的推理框架吗?普通的 Dense 模型推理代码能直接跑吗? 不能直接照搬。主流开源推理框架(vLLM、SGLang、TensorRT-LLM 等)现在都单独支持 MoE 的算子和并行策略,但版本要求比较严格——用跑 Dense 模型的老版本框架去加载 MoE 权重,大概率会报专家路由相关的算子不支持或者显存分配异常,先确认框架版本的 Release Note 里明确写了支持你要用的这个 MoE 模型架构,再动手部署,能省下很多排查时间。


延伸阅读:模型蒸馏科普 · 量化模型趋势 · 小模型与端侧模型崛起 · 怎么追踪大模型动态 · 返回 AI 资讯中心

看完想自己上手试试?

力达云是国内可直连的兼容端点,一期提供 DeepSeek,注册送 ¥5 额度。

去试用

这个页面有问题?

提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。