从今天觉醒,技术赋予每一个人数字生命
如何循环 MoE:压平专家,解开注意力
① 技术背景
过去两年,大模型架构的演进基本沿着两条独立路线展开。一条是循环 Transformer(Looped Transformer):把同一组层反复用几遍,用额外算力把固定尺寸的模型"榨"得更充分,让参数被复用得更彻底。另一条是稀疏混合专家(MoE):每个 token 只激活众多专家中的少数几个,从而在总参数量膨胀的同时控制单 token 计算量。
两条路线其实在回答同一个问题——如何更划算地花算力。循环是"时间维度上的复用",MoE 是"参数维度上的稀疏"。把它们合起来,直觉上很诱人:循环 MoE 应该能同时吃到两份红利。但真正动起手来,问题立刻冒出来——MoE 到底该怎么循环?是把整个 MoE 块原封不动循环几遍?还是把专家拆开?注意力要不要跟着一起循环?
这篇论文给出的答案叫Foil,核心就两个动作:压平专家(flatten the experts)和解开注意力(untie the attention)。下面我们顺着"要回答什么问题 → 怎么设计 → 为什么有效"的链路,把关键抽象拆开看。
② 主流方案盘点
方案一:标准循环 Transformer。代表工作是 Universal Transformer 一脉。职责很清晰——把一层(或一个块)重复 N 次,每一遍共享同一套权重。优点是参数零增长就能加深有效深度;缺点是循环次数一多,梯度传播和表达多样性都会受限。
方案二:标准稀疏 MoE。代表如近年的 DeepSeek、Qwen 系列 MoE 变体。职责是让每层有大量专家、每 token 只路由到 top-k 个。核心抽象是路由器(router)和专家池(expert pool)。优点是总参数大、激活参数小;缺点是路由容易塌缩到少数专家,负载不均。
方案三:朴素循环 MoE(baseline)。把整个 MoE 块循环几遍,专家和路由器全共享。这是最省事的做法,也是论文要对比的基线。问题是:每一遍的路由决策都从同一个专家池里选,循环带来的额外计算并没有扩大"可选范围"。
方案四:Foil。在固定专家参数总量和固定单 token 专家计算量的前提下,做两件事:把专家层数减半、每层专家数翻倍、循环遍数翻倍,让每次路由从更大的池子里选;同时解开注意力,每一遍有独立的注意力参数,而专家和路由器仍然共享。
③ 对比与优劣
| 维度 | 标准循环 Transformer | 标准稀疏 MoE | 朴素循环 MoE | Foil |
|---|---|---|---|---|
| 参数复用方式 | 全块共享 | 不循环 | 全块共享 | 专家/路由共享,注意力独立 |
| 单 token 专家计算 | 无 | 固定 | 固定 | 固定 |
| 路由可选池 | 无 | 每层固定 | 每遍相同池 | 每遍更大池 |
| 注意力多样性 | 低 | 单遍 | 低 | 高(每遍独立) |
| 主要风险 | 表达塌缩 | 负载不均 | 循环收益递减 | 实现复杂度上升 |
论文实验里,20B token 时每个 Foil 模型的预训练 loss 都低于未压平的循环基线;到 100B token,loss 随压平程度单调改善,压得最狠的 Foil 在等参数等算力下比基线低 0.012 nat,下游准确率持平或更好。解开注意力还带来了更均衡、更自信的路由。
④ 选型建议
场景一:算力紧张、想压榨小模型。优先考虑循环结构,但别急着上 Foil——先把循环 Transformer 跑通,确认循环确实带来收益,再考虑引入 MoE。
场景二:已有 MoE 想提效。Foil 的压平思路值得试:把专家层减半、每层专家翻倍、循环翻倍。关键约束是保持专家参数和单 token 专家计算不变,否则对比就不公平。
场景三:研究路由行为。解开注意力是低成本高回报的改动。论文指出路由置信度比负载均衡更能反映专家是否被健康使用——如果你在调路由,别只盯 load balance 指标。
面试/作业常被追问的点:为什么压平能提升路由?因为可选池变大,路由决策的"信息量"更高;为什么注意力要解开?因为循环时若注意力也共享,每一遍看到的表示几乎一样,循环就退化成重复计算。
⑤ 未来展望
Foil 给出的设计指引很明确:稀疏循环 MoE 应该用更多专家、更多遍数。循环的收益和加宽专家层的收益会相互放大,而不是简单叠加。
但仍有未解问题:压平到什么程度会触顶?路由置信度作为健康指标是否在所有规模都成立?注意力解开后参数量上升,如何在更大模型上控制成本?代码和配置已开源,这些问题正等着被更多人验证。
对在校学生和转行者来说,这是一个很好的"可写进作品集"的小课题——复现 Foil 的压平策略,对比路由指标,成本不高,却能完整体验"提出假设 → 控制变量 → 验证"的研究闭环。