00 SIX LEDGERS
“更大但更便宜”只有拆成六笔账才成立
稠密模型里,增加 FFN 宽度会同时增加参数、每 Token FLOPs 和权重读取。 MoE 用条件路由拆开三者,却不是免费午餐:模型越稀疏,越需要为不均匀的动态执行付账。
决定知识容量、存储、加载和分片压力;不会因为某个 Token 没激活它就消失。
Top-k 只执行少数 routed experts,但 attention、共享专家和投影仍是稠密路径。
Router 的 score、top-k、共享路径和限域约束共同决定每个 Token 的计算图。
热门专家过载会让设备等待、形状波动,早期实现还会直接跳过溢出的专家计算。
专家分布到不同设备后,前后两次 All-to-All 可能把理论省下的计算时间吃回去。
Router logits、辅助损失、潜空间连续矩阵乘与极端稀疏都可能制造独立故障。
稠密 FFN 像每个问题都由同一支超大团队完整处理;MoE 像先由调度台判断领域,再叫少数专家组接单。 团队名册可以很大,但每单只付少数人的计算工资。新的麻烦是:热门专家会排队,不同楼层之间要搬材料, 调度台也可能永远只叫同一批人。
01 CAPACITY ≠ ACTIVE COMPUTE
先看懂稠密 FFN,才知道 MoE 替换了什么
Decoder-only Transformer 的每层通常有 attention 和 FFN。Attention 在 Token 之间混合信息; FFN 则对每个位置独立做通道变换。模型的大部分参数往往在 FFN 中,因此现代 MoE 通常不替换整个 Transformer, 而是把若干层的一个 FFN 换成许多份专家 FFN。
每个 Token 读取、计算同一套 FFN。
专家都存着,但每个 Token 只读取 top-k。
唯一计算路径;容量增加通常同步增加每 Token FLOPs。
Router 决定集合,门控权重 pᵢ 合并已选专家输出。
三个经常被混用的数字
K3 存储的全部模型权重口径。
K3 报告的每 Token 激活参数口径;包含的不只 16 个 routed experts。
只有 1.79%,但不能直接拿它乘 2.8T 推导 activated params。
总参数里还包含 attention、embedding、latent 上下投影、两个 full-width shared experts 等稠密或固定路径; routed experts 的参数形状也与这些模块不同。跨模型比较时必须沿用报告给出的 active parameter 口径。
02 FIVE WAVES
MoE 的历史,是每解决一笔算力账就暴露一笔系统账
1991 年的 Adaptive Mixtures of Local Experts已经有专家和 gate,但今天 LLM 里的 MoE 还需要稀疏 top-k、静态 batch 形状、设备切分和高性能通信。 因此“概念发明”和“可扩展 Transformer MoE”之间隔了二十多年。
让局部专家分工
Adaptive MoE · Hierarchical MoE门控网络学习输入空间划分,多个专家竞争解释样本。
留下的墙:规模小、软混合,尚未解决大网络的每样本计算。只激活 top-k
Sparsely-Gated MoENoisy Top-k 把巨大专家池变成条件计算,容量第一次可远快于激活算力增长。
留下的墙:路由塌缩、专家不均和分布式执行变成新问题。进入 Transformer 与集群
GShard · Switch · GLaM · ST-MoEFFN 专家、自动切分、top-1/2、capacity 与专家并行形成现代栈。
留下的墙:Token drop、All-to-All、训练稳定和迁移质量互相牵制。重写谁选谁
BASE · Expert Choice · Soft MoE · MoD均衡分配、专家选 Token、连续 slots 与按深度跳层探索不同条件计算。
留下的墙:因果语言模型、解码、静态形状与主流内核限制部分路线。算法与系统共同设计
DeepSeekMoE · Loss-Free · LatentMoE · K3切细专家、共享共性、限域路由、潜空间载荷、分位数均衡与冗余专家规划汇流。
留下的墙:理论 FLOPs 已不是唯一尺度,权重带宽、网络、稳定和服务部署同样决定成本。2017 的关键改变:从“加权所有专家”到“只执行 top-k”
Sparsely-Gated MoE 用 Noisy Top-k Gating 在巨大专家池中只保留少数非零 gate。稀疏执行让参数容量增长快于计算增长,同时用噪声与负载目标鼓励探索。 这篇论文把条件计算从一个好想法推进成现代大模型可继承的模块,但也正式引入路由塌缩:如果 gate 总偏爱少数专家, 其他专家得不到训练,热门设备又成为整步瓶颈。
03 ONE FORWARD PASS
一次 MoE 前向不是一个算子,而是一条物流链
在单卡伪代码里,MoE 看起来只是 top-k 加几次矩阵乘。进入 Expert Parallelism 后, 专家被分散到不同 GPU;Token 起初在数据所属设备上,必须先按路由重排,再把结果运回原位置。
为每个 Token 计算专家 affinity。
只保留少数专家;共享专家可绕过 router 固定执行。
Token 搬到专家所在设备并按 expert 分组。
不同专家处理长度不同的小批 Token。
第二次通信,恢复原 Token 顺序并按 gate 合并。
k 小时远低于执行全部 N 个专家。
小 batch 下每专家 Token 少,常被 HBM 带宽限制。
两次通信;协议、对齐和梯度会继续加成本。
04 CAPACITY · DROP · STABILITY
Router 选得很聪明,也可能让硬件跑得很笨
早期 TPU/SPMD 实现要求专家 batch 形状在编译时确定。假设一批有 T 个 Token、N 个专家、每 Token 激活 k 个专家, 理想平均负载约为 Tk/N。Capacity factor(CF)给这个平均数加缓冲:
512 Token · 16 专家 · top-2
平均每专家 512×2/16 = 64 条 route。
- CF = 1.00
- 每专家容量 64
- CF = 1.25
- 每专家容量 80
- CF = 2.00
- 每专家容量 128
Switch 对溢出 Token 跳过专家计算,让表示沿残差进入下一层;论文主要实验报告 dropped tokens 通常低于 1%, 但这不是 MoE 的自然定律。把 CF 拉高可减少 overflow,却线性增加 padding、激活内存、einsum 和 All-to-All 成本。 ST-MoE 进一步表明最优 CF 依赖硬件:它的 32B 模型从 1.25 拉到 2.0,step time 增加 14%,质量增益却较小。
三个不同问题,不能都叫“负载均衡”
用额外 loss 让实际路由比例与平均 gate 概率都接近均匀;过强会把干扰梯度加进主训练。
ST-MoE 惩罚 router log-partition 的平方,减少指数函数前的大数与舍入风险;它不直接分配容量。
即使专家平均负载相等,专家到 rank 的映射、组内长尾和通信路径仍可能让设备 makespan 不同。
05 ROUTING BRANCHES
Top-k 不是唯一答案,但因果 LM 与硬件会筛掉很多漂亮方案
把路由做成均衡分配
直接求 Token–expert 的 balanced assignment,减少靠辅助损失慢慢“劝”均衡。
代价:分配求解与主流在线 top-k 栈不同。反过来让专家选 Token
每个专家拿固定 bucket,专家侧天然满载;不同 Token 可被 0、1 或多个专家处理。
因果风险:同一 chunk 的未来 Token 可影响前面 Token 是否被专家选中。不用硬 top-k
先把 Token 连续混成固定 slots,让专家处理 slots,再连续 combine 回 Token。
代价:信息路径和传统稀疏 EP 不同,硬专业化直觉也改变。条件计算不只在宽度
固定每层可处理的 Token 容量,让重要 Token 进块、不重要 Token 跳过。
它改变“走多深”,可与专家宽度 MoE 组合,但调度更复杂。如果专家在一个包含多个时间位置的 bucket 中挑最高分 Token,后面的 Token 会改变前面 Token 是否入选, 等于通过路由图泄露未来信息。Loss-Free 论文因此强调:训练因果 LM 时,均衡算法本身也必须遵守因果约束。
06 DEEPSEEK SPOTLIGHT · SPECIALIZATION
DeepSeekMoE 的关键不是“专家多”,而是同预算下切得更细
DeepSeekMoE 把传统粗专家的失败描述成两类:一个专家接收过多类型知识,形成knowledge hybridity;不同专家都要重复学习常识,形成knowledge redundancy。它用 fine-grained expert segmentation 与 shared expert isolation 分别回应这两个问题。
16 个粗专家 · 选 2
每个专家很宽,单个专家更容易混入多种知识。
64 个小专家 · 选 8
组合更灵活;组合数只是表达空间上限,不是已学会技能数。
Shared expert isolation:先把共性工作拿出来
2B 实验中,DeepSeekMoE 使用 1 个共享专家和 63 个 routed experts,每 Token 激活 1+7。 在保持计算相近时,禁用 shared expert 并多开一个 routed expert,Pile loss 从 1.808 升到 2.414。 这个实验支持共享路径确实学到难以被临时路由替代的共性知识;它不是所有规模上的固定幅度。
07 DEEPSEEK V2 → V3
专家切细以后,DeepSeek 必须接着解决自己制造的通信扇出
Device-limited routing
先挑少数目标设备,再在这些设备上的专家中完成 top-k,限制每 Token 的通信目的地。
同时保留 expert/device/communication 多类 auxiliary balance objectives。Node-limited routing
每 Token 最多发到 4 个节点;每层 1 shared + 256 routed,激活 8 routed。
把通信限制提升到 NVLink 节点域,并用 DualPipe 重叠计算和 All-to-All。Auxiliary-loss-free bias
用历史负载调 expert bias,让过热专家更难入选、冷门专家更容易入选。
报告称训练/推理 no token-dropping,但服务还使用冗余专家与周期性重排。最关键的解耦:选谁,与选中后占多大权重
Bias 只影响调度。过载专家下一步 bias 下降,欠载专家上升。
被选专家的实际输出权重仍来自原始 affinity,不把 bias 混进专家贡献。
传统 auxiliary loss 把“请均匀”写进训练目标,系数太小压不住塌缩,太大又和语言建模梯度争方向。 Loss-Free Balancing 用非梯度 bias 更新 dispatch,论文在最高 3B、200B Token 的实验中取得更低 perplexity 与更好负载。 DeepSeek-V3 将其扩到 671B-A37B,并在 14.8T Token 训练中使用。
V3 的主均衡来自 batch-wise expert bias,但报告还保留系数 0.0001 的 sequence-wise auxiliary loss, 只用于防止单条序列内部出现极端失衡。严谨表述应是:去掉主要的 expert-level auxiliary balancing 梯度, 不是删除所有与平衡有关的正则项。
08 LATENT MOE
当 FLOPs 已经稀疏,下一堵墙是权重带宽和 Token 载荷宽度
标准 routed expert 接收完整模型宽度 d。小 batch 时,每个专家只得到少量 Token,GPU 花更多时间从 HBM 读取不同专家权重;大吞吐 Expert Parallel 时,All-to-All 又要搬运 k 份 d 维 Token。LatentMoE 因此不先减少 k,而是减少 routed width。
每条路由搬完整模型宽度;专家权重也以 d 为输入/输出宽度。
共享专家仍可走全宽;routed path 的通信与权重流量约按 d/ℓ 压缩。
把节省换成效率
压缩 d→ℓ,并按 α=d/ℓ 增加总专家 N;top-k 不变,主要降低 active params / cost。
把节省换成更多组合
同时把 N 和 k 放大 α 倍,让通信和带宽近似不增,却提升专家组合与非线性预算。
论文在 16B/2B active 与 95B/8B active 模型上探索,主要后续实验使用 α=4; ℓ-MoEacc 在其 95B 对比中以相近 total/active 参数提高多个任务准确率。 论文的万亿参数 Kimi-K2 serving 图来自高保真模拟器与 effective-parameter construction, 因而本课程把它标成 projected result,不写成真实线上基准。
09 KIMI K3 · STABLE LATENTMOE
“Stable”不是修饰词:它对应极端稀疏下三种具体修复
K3 把模型宽度 7168 投到 3584 维 latent routed path,用 896 个 routed experts 取 16 个, 另有 2 个全宽 shared experts。更大的专家池与更高 k 扩张专业化空间,却把原 LatentMoE 推进了一个新故障区间。
Normalized LatentMoE
多个 routed experts 聚合后的 latent u 尺度会随 gate 与专家变化;K3 在 W↑ 前加入 RMSNorm,再与共享路径相加。
SiTU-GLU
W↓、多分支 gated expert、W↑ 形成近四连矩阵乘;有界 tanh soft-cap 控制 SwiGLU 两个乘法分支的极值。
报告配置 β₁=4、β₂=25,标量输出上界为 100。Quantile Balancing
固定步长 bias 在近 10³ 专家下会面临“反应慢 vs 振荡”;QB 直接从 score margin 的目标 quantile 算下一步 bias。
Quantile Balancing:从“每次推一点”变成“直接找负载阈值”
前 k 个是真路由,第 k+1 个给出每个 Token 的入选 cutoff αᵢ。
对专家 j 计算所有 Token 的 raw score sᵢⱼ 减 cutoff αᵢ。
目标负载 q=mk/n,对 margin 取 1-k/n 分位数得到下一步 bias。
Bias 下一批才生效;推理时冻结,遵守 causal LM 约束。
全局 batch 有数百万 margin,无法把它们全收集到一处精确排序。K3 用每专家直方图统计, 通过一次 all-reduce 合并 bin counts,再从累计直方图读 quantile。这里体现了很典型的算法—系统协同: 数学目标是分位数,工程实现则把全局排序改写成固定大小的可加统计。
10 INTERACTIVE LAB
亲手制造路由塌缩,再看每种方法到底改了哪张账
先从 Switch 开始,把路由偏斜拉高、capacity factor 降到 0.75;再依次切换 Aux proxy、Loss-Free 和 QB proxy。 最后比较 DeepSeek-V3 的 node limit、LatentMoE 的 4× payload 压缩与 K3 的 896 选 16。
INTERACTIVE / MOE ROUTING LAB
参数没有消失:只是每个 Token 选择不同路径
预设使用论文结构,负载与路由是确定性教学模拟。先切模型,再故意增加偏斜,观察“模型更稀疏”为何会把压力转移到均衡和通信。
Dense FFN
每个 Token 都经过同一套 FFN 参数。容量、每 Token 算力与权重读取被绑在一起。
- 主要解决
- 执行简单、无路由
- 仍然留下
- 扩容量就同步扩计算
Switch
每个 Token 只去得分最高的一个专家,用最小 top-k 降低专家计算和通信。
- 主要解决
- 把容量与激活计算解耦
- 仍然留下
- 容量溢出与辅助损失
GShard
Top-2 为每个 Token 组合两个专家,把 Transformer MoE 扩到数千设备。
- 主要解决
- 更强专家组合
- 仍然留下
- 两路计算与 All-to-All
Mixtral
少量大专家、每层 top-2;结构直观,成为开放生态理解和部署 MoE 的常用入口。
- 主要解决
- 开放可用性
- 仍然留下
- 粗专家可能学习重复知识
DeepSeekMoE
把专家切细并同时激活更多小专家;共享专家固定处理共性变换。
- 主要解决
- 专业化与知识冗余
- 仍然留下
- 细粒度提高通信扇出
DeepSeek-V3
Expert bias 只调 top-k 选择;node-limited routing 把每个 Token 限在最多四个节点。
- 主要解决
- 干扰梯度与跨节点扇出
- 仍然留下
- 固定步长 bias 会慢或振荡
LatentMoE
先把 Token 从模型宽度投到 1/4 latent 宽度,再 dispatch 和执行 routed experts。
- 主要解决
- 权重带宽与通信载荷
- 仍然留下
- 投影开销与潜空间信息损失
K3 Stable
半宽 latent routed path、两条全宽共享路径,并用 Quantile Balancing 面向极稀疏专家池。
- 主要解决
- 3T 级极稀疏与稳定均衡
- 仍然留下
- 需要 MoonEP 与专用内核协同
02 / STRESS THE ROUTER
把路由推向过热,再换一种均衡方法
模拟 512 个 Token。偏斜越高,越多 Token 争抢热门专家;capacity factor 越大,缓冲越多,但 padding、显存和通信预算也越大。
Router 为 Token 与专家打分,选 top-k。
把 Token 搬到专家所在设备;第一次 All-to-All。
每个专家只处理收到的小批 Token。
结果搬回原设备,加权合并;第二次通信。
Aux、Loss-Free 与 QB 在这里用确定性近似展示负载方向,不复现论文训练过程;通信值只计算 512 个 Token 的 BF16 dispatch/combine payload,不含协议、对齐、共享专家、梯度、索引与 kernel 开销。K3 还依赖 MoonEP 的冗余专家规划。
11 MOONEP · EXECUTION
Router 均匀,不代表每张 GPU 同时下班
Quantile Balancing 主要在专家选择层面逼近目标负载;真正训练 3T 模型时,还要把专家映射到 EP ranks, 安排 redundant experts、通信 buffer、Grouped GEMM 与 shared expert stream。K3 的 MoonEP 用在线冗余专家规划把“平均均衡”推进到“每个 rank 完全等量执行”。
冗余专家
至多 E/R 槽
报告证明每 rank 预留这个上界即可保证存在可行平衡计划。
直接写入 expert-grouped buffer
Planning kernel 预先给出目的地,fused permute/unpermute 减少中间 copy。
每 rank 固定 S×K
消除每层读取动态 shape 的 host sync,也压低内存碎片。
Shared / routed 分流
共享专家独立 stream;dispatch/combine 与其他计算阶段重叠。
12 EVIDENCE
怎样判断专家真的“专”,而不只是路由图看起来热闹
训练与验证 loss
在相同 total params、active params、FLOPs 与训练 Token 下比较,避免“更多计算”冒充架构收益。
负载指标
同时看全局、batch、sequence、rank 与 per-expert makespan;一个平均数会隐藏长尾。
干预专家
禁用高分专家、共享专家或改变激活 k,看 loss 退化是否说明专家不可替代。
领域路由
比较代码、数学、自然语言等域的 load pattern,但不要把相关性直接命名成可解释技能。
系统测量
端到端 tokens/s、p50/p99、HBM traffic、All-to-All、空槽、掉 Token 与容错必须同看。
部署口径
Prefill 与 decode 的 expert batch 不同;训练均衡方案不保证小 batch 在线服务同样均衡。
K3 报告公开 2.78T/104.2B、896→16、2 shared、QB 数学式和 MoonEP 设计。
更大组合空间提供更细专业化机会,但 C(N,k) 不是能力数量,也不保证自动形成可解释专家。
完整训练数据、线上请求分布、真实专家语义、长期失效模式与第三方 3T 复现仍不公开。
↳ PRIMARY-SOURCE READING ORDER
按问题读 19 篇论文,而不是按模型名背配置
门控与局部专家分工的概念起点。
Hierarchical Mixtures of Experts and the EM Algorithm树状门控与 EM 训练。
Sparsely-Gated Mixture-of-ExpertsNoisy Top-k、负载目标与现代条件计算。
GShardTop-2 Transformer MoE、自动切分和大规模翻译。
Switch TransformersTop-1、capacity factor、token drop 与专家并行。
BASE Layers把路由视作均衡分配问题。
GLaM1.2T 语言模型中的 top-2 MoE。
ST-MoERouter z-loss、稳定性、capacity 与迁移。
Expert Choice Routing专家选择固定容量 Token。
MegaBlocks以 block-sparse GPU kernels 避免因负载不均而丢 Token。
Soft MoE用连续 dispatch/combine slots 替代硬 top-k。
Mixtral of Experts开放生态中的每层 8 选 2。
DeepSeekMoE细粒度专家分割与共享专家隔离。
Mixture-of-Depths把条件计算从宽度扩到深度。
DeepSeek-V2Device-limited routing 与规模化 DeepSeekMoE。
Auxiliary-Loss-Free Load BalancingSelection bias 与 mixture weight 解耦。
DeepSeek-V3256 选 8、node limit、no-drop 与 DualPipe。
LatentMoE在潜空间 dispatch 和执行专家,优化 accuracy per cost。
Kimi K3Stable LatentMoE、Quantile Balancing 与 MoonEP。