Meta Expert: Cross-Layer Expert Sharing for Storage- and Retrieval-Efficient MoE
Ermo Hua, Xiangyu Hong, Baiting Wu, Che Jiang, Haozheng Hou, Yicheng Gu, Hanjing Wang, Qirui Zeng, Ming Zhang, Ning Ding, Qipeng Guo, Youbang Sun, Biqing Qi, Bowen Zhou
cs.AI
2026-10-20
把 MoE 里逐层私有的专家改成跨层共享。每层激活数和专家宽度不变,总专家只用标准结构的 70%-80%,交叉熵就能打平,层数越深越省。
主流 MoE 把前馈网络切成很多专家,每个 token 只激活少数几个。宽度上的稀疏已经把计算省下来,深度上仍是一层一套私有专家。前馈层存的知识比较静态,不同层会记下相近内容,Local Expert 互不连通,参数却叠在一起。
Looped Transformer 把同一块权重循环用多次,参数少也能追上更大模型,代价是串行深度和延迟。这篇前向只走一遍:共享省下的参数用来扩大每层的候选专家,top-k 把激活量和计算量维持在原水平。跨层共享的叫 Meta Expert,逐层私有的叫 Local Expert。
普通层是本层路由器加只属于该层的专家。纯 Meta 收成一个共享路由器和一组所有层都能选的专家。实验在约 2B 总参、0.5B 激活上,从全 Local 出发扫两件事:Meta 占总专家的 0%、25%、50%、75% 或 100%,以及每层激活分给 Meta 的 25%、50%、75%。拓扑上试过首部、尾部或首尾改回纯 Local,也试过把共享池切成 2、4、8 个子池,分块或交错轮用。总专家数和每层激活次数锁死,用来对齐 FLOPs;换深度时直接套 Vanilla MoE 的训练最优超参。
留下的是 MR75:75% 的专家进共享池,两池分开路由,每层激活 4 个 Meta 加 4 个 Local。再加 F2L2,最前两层和最后两层只用 Local;以及 Loop2,共享池拆成两个交错子池。纯 Meta 试点损失更低,文中以训练可能不稳为由改用 75%。
共享池改的是读写路径。逐层 MoE 一次前向只能带上更浅层写进残差流的内容,深层信号只在反传时进到浅层私有参数,途中被中间层稀释。Meta Expert 把各层更新加进同一套权重,训完后每一层读到各层写入的叠加,通路长度不随层距增长。附录比引言紧:同一次前向里,浅层不读深层当步的激活,它读的是训练时写进共享池的内容。
缩放梯是 Qwen3.5 风格的纯文本 MoE,深度 12、16、20、24,宽度随深度增加,每档接近计算最优。每层 128 个路由专家加 1 个门控共享专家,top-8,线性注意力与全注意力混合。16 层 Vanilla 约 19.6 亿参数,每 token 激活约 4.49 亿。用 Muon 在 H200 上从零训练,四档约 5.31B、11.06B、20.47B、34.92B token,计算量约 7.1×10^18 到 2.4×10^20 FLOPs。损失是最后 10 步的平均,图上画相对 Vanilla 的比值。
Meta 占比越高,交叉熵和专家冗余越低。激活多留给 Local Expert,冗余下降、损失变差。大段改回纯 Local,或把池子切得很碎,损失大多变差;只把首尾各两层留给 Local、池子只切两份,损失略好。MR75、F2L2、Loop2 叠在一起,每一档计算量上的损失和冗余都更好,差距随规模变大。同专家预算下损失比低于 1,图的底轴是 0.990。
接着把每层 Meta 宽度从 96 往下砍,空位不补 Local。top-8 和专家宽度不动,激活 FLOPs 不变,存下的专家变少。正文写专家大约省两到三成、参数省一成五到两成五,图 1 画成剩下七到八成专家或七成五到九成参数,损失打平,越深越省。
下游是 6B 总参、1.6B 激活、200B token,五个变体同一专家总量、同一激活预算。
| 方法 | MMLU | C-Eval | CMMLU | TriviaQA | BBH | OpenBookQA |
| Vanilla | 40.87 | 43.54 | 42.03 | 19.24 | 29.72 | 35.00 |
| MR75 | 41.20 | 44.43 | 41.61 | 19.64 | 29.12 | 33.80 |
| MR75+Loop2 | 41.75 | 44.87 | 43.44 | 19.32 | 30.30 | 36.40 |
| MR75+F2L2 | 39.28 | 41.60 | 41.98 | 20.14 | 30.61 | 33.20 |
| 三项合用 | 40.52 | 43.02 | 42.49 | 20.42 | 29.84 | 35.40 |
MMLU、C-Eval、CMMLU 是 5-shot 准确率,OpenBookQA 是 normalized accuracy,BBH 和 TriviaQA 是生成 exact match。损失上组合领先,榜单对不上。知识题 MR75+Loop2 最高,MMLU 41.75 对 40.87,C-Eval 44.87 对 43.54,CMMLU 43.44 对 42.03。TriviaQA 上组合最高,20.42 对 19.24。只加 F2L2 时 MMLU 掉到 39.28,C-Eval 掉到 41.60。
省的是存储。每个 token 仍激活 8 个专家,训练和推理的计算与 Vanilla 对齐,专家权重可以少两到三成,专家并行要搬的参数跟着少。前向只有一遍,注意力可以继续逐层私有,延迟仍是一次前向。首尾留 Local,是因为最浅和最深的功能并不冗余。同预算下只是一个小缺口,下游大多一个点上下,收益随深度变大,幅度仍是渐进的。
此前 MoE 跨层共享多半让每一层都进同一池,通信和显存不好扩。这篇把「共享哪些层、池子分几份」当成可扫的拓扑。
梯队停在 24 层、约 2.4×10^20 FLOPs,下游那档只训了 200B token,更大规模还没做。
纯 Meta 试点损失最好,弃用理由只是可能不稳,正文没有不稳的证据。轻度分层会抬冗余、不抬损失,原因被留作开放问题。引言写「激活层面的反向残差、在一次前向内生效」,附录承认因果方向没变。所有变体沿用 Vanilla 的学习率、batch 和 token 预算,没有为共享拓扑重扫计算最优。冗余是探针响应上 linear CKA 谱的基尼系数,降冗余的配置和下游赢面并不重合。