← 返回 2026-10-19

循环语言模型架构设计指南(一):拓扑结构、输入注入与循环状态设计 Towards Looped Models Done Right, Part I: Topology, Input Injection, Recurrent-State Design

Benhao Huang, Chufan Shi, Junlin Chen, Shicheng Wen, Zhengzhong Liu, Eric Xing, Xuezhe Ma 📅 2026-10-16 👍 18 2026-11-11 18:30
MoE 循环语言模型 权重共享 架构消融 测试时计算 预训练

受控消融解耦循环模型三大设计轴:三明治包络收益最大,结论成功迁移至MoE并逼近前馈基线。

前置知识

循环语言模型(权重循环)

把同一组 Transformer 块的参数重复应用多次的架构:物理上只存 28 层的参数(约 730M),但推理时循环执行 4~8 次,得到 112 层的逻辑深度。它用额外的重复计算换取更少的显存占用与参数存储,顺应了硬件算力吞吐增长远快于显存容量与带宽增长的趋势。

全文的研究对象就是这类模型,Ouro 与 Huginn 两大谱系的所有差异都建立在'哪些层被打结复用'之上,不理解权重循环就无法理解三个设计轴的含义。

逻辑深度与驻留参数

逻辑深度指每个 token 实际经过的 Transformer 块执行次数(本文统一为 112 次,即 2.9B 参数应用);驻留参数指模型实际存储的参数量(密集 730M,MoE 8.0B)。论文用 TPP(每参数训练 token 数)刻画训练预算,如 460 TPP 对应 336B tokens。

所有消融都严格控制逻辑深度、驻留参数、训练 token 预算与推理 FLOPs 完全匹配,这是结论成立的 apples-to-apples 前提,也是本文与以往端点对比工作的核心区别。

三明治包络(prelude–loop–coda)

Huginn 式拓扑:8 层不共享的 prelude 把 token 嵌入编码为上下文表示 $e$,中间 12 层共享块循环 8 次负责迭代精化状态,8 层不共享的 coda 把最终状态 $z_T$ 解码为输出;Ouro 则没有前后包络,直接把整个 28 层栈循环 4 次($R4_{28}$ 对 $P_8R8_{12}C_8$)。

Q1 证明迭代包络是收益最大的设计轴(MATH500 提升 12.00 分),是本文最重要的结论,也是'Huginn 到底赢在哪里'这一问题的主要答案。

输入注入(input injection)

在每次循环迭代前把一个固定输入表示写回循环状态:$\tilde{z}_t = W_\theta(z_t, e)$,本文用对角门控 $D(z_t,v)=\alpha\odot z_t+\delta\odot(W_{in}v)$ 实现。它使深层迭代不必单靠状态自身保存 prompt 信息,也为梯度提供直通输入的路径。

Q2 显示注入是把双刃剑:显著提升上下文与代码任务(BBH-CoT +6.63)却损害数学推理(MATH500 −3.60),理解该机制才能读懂 Huginn 收益的来源与代价。

混合专家模型(MoE)

把每层的 FFN 换成多个专家(本文 25 个宽 2432 的 SwiGLU 专家、sigmoid top-2 路由),每个 token 只激活少数专家,用远小于驻留参数的激活参数(0.8B 对 8.0B)换取容量;归一化负载均衡损失衡量专家使用是否均匀(1 为完全均匀)。

论文第二部分验证循环设计结论能否迁移到 MoE,并发现循环使专家路由更均衡、不同迭代选择不同专家(切换率 49.4%),这决定了结论的实际应用价值。

研究动机

现代 AI 硬件的算力吞吐增长远快于显存容量与带宽增长,循环语言模型通过在同一组 Transformer 块上反复计算换取逻辑深度,成为省显存的扩容方向。但现有实现分两大谱系:Ouro 把整个 28 层栈打结循环 4 次,并用 token 嵌入直接初始化循环状态;Huginn 则用 8 层 prelude + 12 层共享核心×8 次 + 8 层 coda 的三明治结构,每步把 prelude 表示写回状态,并用随机初始化。两条谱系在循环位置、输入注入、状态组织三方面同时不同,以往工作只能做完整配方的端到端对比,无法回答'收益究竟来自哪个具体设计';此外 HRM、TRM 等关于高/低双状态层级的证据互相矛盾,因为它们在对比时同时改变了更新规则、有效深度和参数量。

本文的目标是本文的目标是把纠缠在完整预训练配方中的架构差异拆成三个可独立操纵的设计轴——迭代包络(循环放在哪里)、输入注入(是否以及用什么表示反复写回输入)、潜在状态组织(状态如何初始化与是否分层),并在完全匹配的条件下从零预训练模型来孤立每个轴的贡献:相同驻留参数 730M、相同逻辑深度 112 次块执行(2.9B 参数应用)、相同训练预算(42B/84B/168B/336B tokens)与统一评估协议。在此基础上回答三个问题:如何描述循环架构?哪些设计选择真正重要?结论能否迁移到 MoE 设定并与匹配 FLOPs 的前馈 MoE 公平比较?

与已有工作不同的是,独特切入是'受控 Ouro→Huginn 变换'。作者先用统一迭代记号把两类模型写成同一形式:$e=P_\theta(x_0)$,$z_0=\phi_\theta(e,\xi)$,$\tilde{z}_t=W_\theta(z_t,e)$,$z_{t+1}=R_\theta(\tilde{z}_t)$,$h=C_\theta(z_T)$,指出 Ouro 只是 $P_\theta,W_\theta,C_\theta$ 取恒等映射且 $z_0=x_0$ 的特例。随后每次只改一个轴:Q1 只改包络(全栈循环→三明治),Q2 只在各自家族内部加/去输入写入,Q3 只改状态初始化与 H/L 组织。这与以往'两个完整配方各训一个再比总分'的做法本质不同,使每个基准上的分差都能归因到具体设计选择,而非谱系整体;同时全部模型从零预训练而非微调代理任务,结论直接适用于预训练配方决策。

核心方法

直觉上循环模型像'用同一块肌肉反复做功',关键问题是:反复做功的应该只是网络中段还是整段网络?每一步要不要重新看一眼题目?起点状态重要吗?本文把这三问形式化为迭代包络、输入注入、状态组织三个轴。技术路线分两阶段:第一阶段在 730M 驻留/2.9B 展开参数的密集设定下做阶梯式消融——从全栈循环 $R4_{28}$ 出发,先换成三明治 $P_8R8_{12}C_8$(Q1),再加对角写算子注入(Q2),最后更换状态初始化与 H/L 层级(Q3),每步在 4 个训练预算上用 10 个基准评估,并对前馈 D28(730M)与 D112(2.9B)作参照。第二阶段把完整 Ouro/Huginn 架构的每个物理层 FFN 换成 25 专家 top-2 的 MoE,训 500B tokens,与 112 层前馈 MoE(32B 驻留)在匹配训练与推理 FLOPs 下对比,并用路由热图和冻结专家身份的干预实验验证迭代间路由差异的功能重要性。

核心创新是'架构归因'的实验设计:以往比较完整配方端点,本文把差异分解为一次只变一个轴的受控变换链。由此得到的归因结论清晰且部分反直觉:(1) 三明治包络是最大功臣——循环核心专注迭代精化,不共享的 prelude/coda 专职输入编码与输出解码,MATH500 因此提升 12.00 分;(2) 输入注入本质是一条'上下文通道',帮模型在迭代中反复读取 prompt(BBH-CoT +6.63),但会干扰需要状态逐步远离输入表示的定量推理(MATH500 −3.60);(3) 被广泛采用的随机初始化与 HRM 式 H/L 双状态在严格对照下没有一致收益。换言之,Huginn 赢在包络与注入这两个结构性选择,而非神秘的状态初始化技巧——这从根本上重新解释了两大谱系差异的来源。

方法步骤详情

第一步,形式化:把所有打结迭代模型统一写成 $e=P_\theta(x_0)$、$z_0=\phi_\theta(e,\xi)$、$\tilde{z}_t=W_\theta(z_t,e)$、$z_{t+1}=R_\theta(\tilde{z}_t)$、$h=C_\theta(z_T)$,并据此定义三个设计轴。第二步,密集消融设置:TxT360 数据集、序列长 8192、全局 batch 512(每步 4,194,304 tokens)、AdamW、学习率在 $\{4,6,8\}\times10^{-4}$ 中扫描取最优、200 步 warmup 加余弦衰减、权重衰减 0.1;预算 58/115/230/460 TPP(42B–336B tokens)。第三步 Q1:对比 $R4_{28}$(28 层×4)与 $P_8R8_{12}C_8$(8+12×8+8)。第四步 Q2:引入对角写算子 $D(z_t,v)=\alpha\odot z_t+\delta\odot(W_{in}v)$,其中 $\delta=\mathrm{softplus}(b_\delta)$、$\alpha=\exp\{-\delta\odot\exp(a)\}$;中间循环写入 prelude 表示 $e$,全栈对照写入原始 token 嵌入 $x_0$。第五步 Q3:固定包络与注入,比较 $z_0=e$、$z_0\sim\mathcal{N}(0,I_d/d)$、以及共享同一循环体的 H=2/L=3 双状态调度。第六步 MoE 迁移:28 个物理层的 FFN 全部换成 25 个 SwiGLU 专家、sigmoid top-2 路由,得到 8.0B 驻留/793.9M 激活/3.2B 展开激活的模型,训 500B tokens,与 DMoE112 对照。第七步评估:ARC-C、HellaSwag、MMLU、TriviaQA、BBH-CoT、DROP、GSM8K、MATH500、HumanEval+、MBPP+ 十个基准,统一 shots、贪心解码与生成长度上限。

技术新颖性

新颖性有四点。其一,据作者所知,这是首次在大规模、有限展开、带持续输入注入的语言模型预训练中孤立检验随机状态初始化——此前它只是被默认采用;结果是 2 项超 1 分的提升对 4 项超 1 分的下降,不构成普遍优势。其二,首次用共享循环体的 H/L 对照(H=2、L=3,循环体总调用次数仍为 8 次)把 HRM 式层级本身与模块分离、更新规则、参数量等混杂因素剥开,结果 MATH500 暴跌 7.20 分。其三,首次系统对照 Ouro 与 Huginn 两大谱系,并证明二者排序在把 FFN 换成 MoE 后依然保持,还用冻结路由干预提供了迭代特异性专家选择有因果贡献的证据。其四,方法学上强调匹配驻留参数、逻辑深度、训练与推理 FLOPs 及评估协议的公平预训练比较,而非'参数对齐但计算不对齐'的常见错配。

Architecture comparisons. Feedforward models use distinct blocks. Ouro-style models reuse a full Transformer stack. Huginn-like models initialize the recurrent hidden stream from a prior, place a tied iterative body between untied prelude and coda stacks, and inject the prelude representation into the iterations.
Figure 3: Architecture comparisons. Feedforward models use distinct blocks. Ouro-style models reuse a full Transformer stack. Huginn-like models initialize the recurrent hidden stream from a prior, place a tied iterative body between untied prelude and coda stacks, and inject the prelude representation into the iterations.
The controlled architecture ablations in Q1 & Q2.
Figure 4: The controlled architecture ablations in Q1 & Q2.
Shared high/low latent-state update.
Figure 7: Shared high/low latent-state update.

实验结果

Q1(460 TPP,730M 密集训 336B tokens):三明治包络相对全栈循环把 MATH500 从 20.80 提到 32.80(+12.00)、GSM8K 从 54.97 提到 62.02(+7.05)、DROP +2.61、BBH-CoT +2.47、MBPP+ +2.12;但 ARC-C −0.94、HumanEval+ −1.22,知识型与强格式任务无一致收益,且 MATH500 与 BBH-CoT 的优势在 42B–336B 全部四个预算上保持。Q2:中间循环加入 prelude 写入后 BBH-CoT +6.63(48.30→54.94)、HumanEval+ +5.49(28.66→34.15)、MBPP+ +4.23、MMLU +2.53、DROP +1.39,但 MATH500 −3.60、GSM8K −2.51;全栈家族写原始嵌入收益同向(MBPP+ +4.50、BBH-CoT +1.80)。各自启用注入后,中间循环在 10 个基准中赢 8 个(仅 ARC-C 与 HellaSwag 落后)。Q3:随机初始化在 ARC-C +3.34、GSM8K +1.22,但在 MMLU、MATH500、HumanEval+、MBPP+ 各降超 1 分;共享 H/L 使 ARC-C +2.23、DROP +1.80、HEval+ +1.22,却让 MATH500 从 29.20 跌至 22.00(−7.20)。综合而言完整 Huginn 在全部十个密集基准上超过 Ouro。MoE 迁移(Table 5,500B tokens):Huginn MoE 对 Ouro MoE 在 8/10 基准占优,GSM8K +4.70(83.62 对 78.92)、MATH500 +3.60(53.40 对 49.80)、MMLU +2.78、DROP +1.95;对 112 层前馈 MoE(32B 驻留,为 Huginn 的 4 倍),前馈在 7/10 领先,但 Huginn 以少 75% 的驻留参数在 DROP(59.65 对 56.81)与 GSM8K(83.62 对 80.82)反超、MATH500 打平 53.40,四个数学/代码基准平均 61.48 对 62.79。路由诊断:500B 时归一化负载均衡损失 Huginn 1.571 < 前馈 1.652 < Ouro 1.899;相邻迭代 top-1 专家切换率平均 49.4%;把迭代 2–8 冻结为迭代 1 的专家身份后六个任务全部掉分:MMLU −11.2、ARC-E −9.6、BoolQ −8.7、ARC-C −8.3、PIQA −1.5、COPA −1.0,证明迭代特异性路由有因果贡献。总体上 MoE 把 Huginn 与前馈的平均差距从密集设定的 4.96 分缩至 1.71 分。

Ouro- and Huginn-style instantiations of the common iterative-model notation, when given a layer budget of 112.
Table 1: Ouro- and Huginn-style instantiations of the common iterative-model notation, when given a layer budget of 112.
Q1 envelope comparison at 460 TPP (730M parameters; 336B training tokens).
Table 2: Q1 envelope comparison at 460 TPP (730M parameters; 336B training tokens).
Recurrent input-injection controls at 460 TPP.
Table 3: Recurrent input-injection controls at 460 TPP.
Matched recurrent-state comparison at 460 TPP.
Table 4: Matched recurrent-state comparison at 460 TPP.
Benchmark performance of looped MoE models and the feedforward MoE reference after training on 500B tokens.
Table 5: Benchmark performance of looped MoE models and the feedforward MoE reference after training on 500B tokens.
Model geometry and non-embedding parameter accounting for the MoE models.
Table 6: Model geometry and non-embedding parameter accounting for the MoE models.
Task-level evaluation settings for the reported benchmark results.
Table 7: Task-level evaluation settings for the reported benchmark results.
Parameter scaling and benchmark performance of loop and feedforward MoE models.
Figure 1: Parameter scaling and benchmark performance of loop and feedforward MoE models.
Evaluation trajectories for the full-stack and middle-loop sandwich variants.
Figure 5: Evaluation trajectories for the full-stack and middle-loop sandwich variants.
Evaluation trajectories over matched token budgets for input-injection ablations.
Figure 6: Evaluation trajectories over matched token budgets for input-injection ablations.
Evaluation benchmark trajectories for the three latent-state organizations.
Figure 8: Evaluation benchmark trajectories for the three latent-state organizations.
Raw benchmark scores along the cumulative dense construction path at 336B training tokens.
Figure 9: Raw benchmark scores along the cumulative dense construction path at 336B training tokens.
Normalized MoE load-balancing loss across training for the recurrent models and the 112-layer feedforward MoE reference (lower is better).
Figure 10: Normalized MoE load-balancing loss across training for the recurrent models and the 112-layer feedforward MoE reference (lower is better).
Iteration-dependent top-2 expert activation at the 500B-token checkpoint across all 12 recurrent layers.
Figure 11: Iteration-dependent top-2 expert activation at the 500B-token checkpoint across all 12 recurrent layers.
Original accuracy and accuracy after iterations 2–8 reuse the loop-1 top-2 expert identities on MMLU, ARC-Easy, BoolQ, ARC-Challenge, PIQA, and COPA.
Figure 12: Original accuracy and accuracy after iterations 2–8 reuse the loop-1 top-2 expert identities on MMLU, ARC-Easy, BoolQ, ARC-Challenge, PIQA, and COPA.
Dense and MoE gaps to the 112-layer feedforward references.
Figure 13: Dense and MoE gaps to the 112-layer feedforward references.
查看结构化数据
任务指标本文基线提升
数学推理 MATH500(730M 密集,Q1 包络消融) EM 准确率 三明治 P8R812C8:32.80 全栈循环 R428:20.80 +12.00,且在 42B–336B 全部训练预算上保持
数学推理 GSM8K(730M 密集,Q1) 答案准确率(8-shot) 62.02 54.97(全栈循环) +7.05
推理 BBH-CoT(730M 密集,Q2 注入消融) EM(3-shot CoT) 54.94(中间循环 + prelude 写入) 48.30(同一模型无写入) +6.63
代码生成 HumanEval+(730M 密集,Q2) pass@1 34.15(注入后) 28.66(无写入) +5.49
数学推理 GSM8K(MoE,8B 驻留训 500B tokens) 答案准确率 Huginn MoE:83.62 Ouro MoE:78.92;前馈 DMoE112:80.82 对 Ouro +4.70;以 1/4 驻留参数反超前馈 +2.80
数学推理 MATH500(MoE) EM 准确率 Huginn MoE:53.40 Ouro MoE:49.80;前馈 DMoE112:53.40 对 Ouro +3.60;与前馈基线完全打平
专家路由均衡性(MoE,500B tokens) 归一化负载均衡损失(1=完全均匀,越低越好) Huginn MoE:1.571 Ouro MoE:1.899;前馈 MoE:1.652 三者最低,专家利用最均衡

局限与改进

作者承认的局限:实验只在单一规模(密集 730M、MoE 8B)与有限预算区间进行,没有 small-to-large 的 scaling ladder,结论是否随规模保持未知;没有多种子重复实验,无法给出分差的种子间不确定性;MoE 部分只比较了完整 Ouro 与完整 Huginn 配置,包络、注入、状态初始化三个轴同时变化,缺组件级 MoE 消融;H/L 的否定结论仅适用于共享模块设定,HRM-Text 式分离模块变体仍在评估中;随机初始化的结论不能外推到路径无关性或超出训练循环次数的深度外推,因为这些能力本文并未测量。我自己的观察:其一,密集循环模型与 D112 前馈的绝对差距仍大,如 MATH500 最高仅 32.80 对 47.60、TriviaQA 约 29 对 38.83,说明权重共享明显限制参数化知识与深度推理能力,MoE 之所以能追平 MATH500,靠的是专家带来的条件容量而非循环本身;其二,Q2 中 raw-token 写入与 contextualized 写入分别绑定在不同包络上,写源本身的作用没有被完全分离;其三,全部评估在固定循环次数下贪心解码,未探索自适应深度与早退,而相关文献(如 CART)表明推理时改变循环次数会显著影响性能;其四,冻结路由干预只在六个选择题任务上进行,未覆盖生成任务。

独立分析的弱点

第一,输入注入损害定量推理(中间循环 MATH500 −3.60、GSM8K −2.51),改进方向是可学习或随迭代衰减的注入强度,例如让门控 $\delta$ 依赖迭代步数,或只在前几次迭代注入,使状态在后期能自由远离输入表示。第二,H/L 共享层级使 MATH500 暴跌 7.20 分,僵化的 H=2/L=3 硬编码调度可能是主因,可尝试可学习的调度或非对称模块。第三,密集设定下知识型任务差距大(TriviaQA 29 对 38.83),权重共享限制了事实存储,可用'共享主体 + 少量不共享层'的混合方案补充参数化知识。第四,评估全部是固定深度贪心解码,没有利用循环模型天然支持的自适应深度与早退,这是明显的效率与能力闲置。第五,单一训练顺序(包络→注入→状态)下做累加消融,不同叠加顺序可能给出不同归因,缺少因子化网格验证交互效应。第六,MoE 对比只测了一个规模与一个专家配置,路由均衡与循环的相互作用(如专家数、top-k 与迭代数的关系)完全未知。

未来方向

作者明确提出:建立 small-to-large scaling ladder,在多个驻留参数规模与训练预算上重复受控对比以逼近 scaling law;进行多种子重复以量化分差的不确定性;补齐 MoE 组件级消融(单独变化包络、注入、状态初始化);探索共享 H/L 状态与专家路由的组合,并把冻结路由干预扩展到更多 checkpoint 与生成任务。基于本文成果还可延伸:研究自适应循环深度与早退机制,让简单 token 少循环、难 token 多循环,把循环结构变成真正的测试时计算扩展手段;从动力学角度理论化注入的副作用,例如把每步写入视为对迭代映射的持续外力,分析其对不动点收敛与状态可分离性的影响;检验循环模型的知识存储机制,解释为什么参数共享伤害 TriviaQA 类任务而 MoE 能补偿;以及在端侧/显存受限场景验证 75% 参数节省的实际系统收益,并探索架构-系统协同设计。

复现评估

复现条件较好。代码已在 GitHub 开源(https://github.com/ifm-ai/xllm-loop),训练数据 TxT360 公开可用,附录 A/B 给出了完整的模型几何(隐藏维 1536、24 查询头/6 KV 头、头维 64、RoPE 基数 $10^6$、SwiGLU 宽 4352、MoE 25 专家 top-2 宽 2432)与全部优化超参,附录 B 还逐任务给出 split、shots、指标、输入/输出长度上限与停止规则,评估为贪心单样本解码、无采样随机性,结果易于核对。主要门槛是算力:密集消融需在 4 个预算(42B–336B tokens)训练多个 730M 变体,MoE 对比需训练 8B 驻留模型至 500B tokens,完整复现整张表需要大规模集群(论文未给出具体 GPU 数),但单个消融点(如 42B tokens 的密集模型)在几十张卡量级即可完成。综合评估:代码、数据、配置齐全,难度中等偏高,瓶颈纯粹在预训练算力。

相似论文推荐

循环世界模型 🎯 70.3%