真实面经题目 · 原创解析
MoE 一般加在大模型哪里,从训练和推理角度有什么收益与代价?
这题考 LLM MoE 的位置和训练推理取舍,回答要讲清 FFN 专家、router、稀疏激活、负载均衡和服务成本。
真实面经题目 · 原创解析
这题考 LLM MoE 的位置和训练推理取舍,回答要讲清 FFN 专家、router、稀疏激活、负载均衡和服务成本。
大模型里的 MoE 通常加在 Transformer block 的前馈网络位置,也就是用多个 expert FFN 替换或扩展原来的 dense FFN,再用 router 根据 token 表示选择 top-k 个专家。它的好处是总参数量可以很大,但每个 token 只激活少量专家,所以在相近计算量下提升模型容量。训练上,MoE 可以扩展容量、让专家学到不同模式,但会带来 router 训练、负载均衡损失、capacity factor、token dropping、专家塌缩、跨卡 all-to-all 通信和稳定性问题。推理上,稀疏激活理论上降低每 token 计算,但所有专家权重仍要存储或分布在多卡上,请求 batch 还会因为路由不均衡出现通信和尾延迟。工程评估不能只看参数量,要看质量、激活参数、显存、通信、tokens/s、P99 延迟、专家利用率和成本。
Transformer block 里计算量很大的部分是前馈网络。LLM MoE 常见做法是把 dense FFN 替换成多个专家 FFN,每个 token 经过 router 选择一个或多个专家处理。注意力层通常仍保持共享,MoE 的主要目标是增加容量而不让每个 token 都经过全部参数。
Router 会根据 token hidden state 给专家打分,选择 top-1 或 top-2 等少数专家。这样模型拥有大量总参数,但单个 token 只激活一小部分参数。回答时要区分 total parameters 和 activated parameters,因为 MoE 的效率讨论主要来自激活参数较少,而不是总参数少。
训练侧的收益是用更大的专家容量覆盖更多语言、任务、风格和知识模式。在相近 FLOPs 下,MoE 可能比同计算量 dense 模型更有容量。但这依赖路由是否学得好、专家是否分工有效、数据是否足够多样,以及训练系统能否承受通信开销。
MoE 训练难点包括专家负载不均衡、热门专家过载、冷门专家学不到东西、capacity 超限导致 token dropping、router 抖动和训练不稳定。通常会加入 load balancing loss、router 正则、capacity factor、专家并行和通信优化。只说加专家提升效果是不完整的。
推理时每个 token 只走少数专家,理论计算量可控,但所有专家权重需要存储,专家分布在多卡时还会有 all-to-all 通信。batch 内 token 路由到不同专家,会造成专家负载不均和尾延迟。小 batch、低延迟场景下,MoE 的调度复杂度可能抵消一部分稀疏收益。
模型侧看困惑度、下游任务、长尾能力、多语言和安全回归;系统侧看 tokens/s、单 token 延迟、P99、显存、通信量、专家利用率、批处理效率和服务成本。面试中最好说明 MoE 适合追求大容量和高吞吐的场景,但对低延迟、部署简单和小规模服务不一定划算。
FFN 参数和计算占比高,替换成专家能直接扩展容量;attention 还承担 token 间交互,改成稀疏专家更复杂。实际架构可以有变体,但主流回答应先讲 FFN 专家。
Top-1 每个 token 只走一个专家,计算和通信更省,但容错和表达可能弱一些;Top-2 多走一个专家,表达和稳定性可能更好,但计算、通信和合并成本更高。
Router 可能把大量 token 分给少数热门专家,导致这些专家过载,其他专家训练不足。结果是吞吐下降、token 被丢弃或模型质量受损。
因为不同请求和 token 被路由到不同专家,某些专家或通信链路会成为热点。即使平均计算量低,尾部请求也可能等待慢专家或跨卡通信。
MoE 是架构层面的稀疏专家扩容,蒸馏是训练方法。MoE 模型可以被蒸馏成较小 dense 模型,也可以用蒸馏辅助训练,但二者不是同一个概念。
比较同等成本下的质量和服务指标:下游效果是否提升,tokens/s 和并发是否增加,P99 是否可控,专家利用是否均衡,部署复杂度和成本是否可接受。