MoE x Loop Transformer 混合架构研究:在权重共享循环体内做分段重路由专家选择,并研究 outer/inner 双动态 ACT halt。当前目标是在 RTX 4060 Laptop 8GB 上用小模型验证可训练性、公平对照和参数效率边界。
Loop MoE 把 MoE 的稀疏专家选择放进共享权重的循环 Transformer 中:模型不堆叠很多独立层,而是让同一个 LoopBody 重复执行 D 步;每个路由段选择 Top-M 专家,段内复用这组专家,段边界重新路由。路由间隔 L 是连续轴:L=1 表示每步换专家,L=T 表示只入口路由一次,1<L<T 是主研究对象“分段重路由”。
总迭代口径来自 docs/loop_arch.md:N = Σ_i M · L(i),其中 M 是每轮激活专家数,L(i) 是第 i 个外层路由段的专家循环步数。
当前阶段的简要判断:Loop MoE 能学习、能收敛;在同计算量语言建模对照下,普通非循环 MoE 仍更强;双动态 ACT halt 明确优于固定深度 Loop;同 total params 的 Round 11 单点对照给出参数效率正信号,但还没有证明 Loop 位于 total-fair Pareto 前沿。
输入 -> Dense stem(2) -> 共享 LoopBody(A+B) x D 步 -> final(1) -> head(tied)
|
Block A/B: 独立 attention + router,共享专家池(E=8 + shared)
|
分段重路由: 每 L 步换专家;段内版本 B 共享状态聚合
双动态 ACT halt: outer 控总深度,inner 控段边界
Loop timestep encoding: alpha/beta gates + loop_emb
- 版本 B:共享状态聚合。当前实现不是“每个专家独立维护一条 hidden trajectory”的版本 A,而是选中的 Top-M 专家每步共同作用在同一个 hidden state 上,段内复用同一组专家/权重,段边界重新路由。
- 双动态 ACT halt。Round 9 起使用 ACT hazard/survival:
p_t/s_t/q_t,Σq=1,h_final=Σq·h_t,LM loss 从h_final出 logits。outer halt 决定最终有效深度,inner halt 决定段边界 soft endpoint。 - OrdinaryMoETransformer。Round 7 引入普通非循环 Transformer-MoE baseline:独立
N层、每层独立权重、每层每 token 独立路由,无 Loop、无段缓存、无 timestep gates。它用于隔离“MoE 稀疏容量”和“Loop 权重共享循环”各自的贡献。
| 阶段 | 轮次 | 做了什么 | 当前读法 |
|---|---|---|---|
| 可行性 | 1 | C0-C3 基础实现 | C0-C3 都能从随机基线 ln(65)≈4.17 降到约 2.4,说明架构可训练 |
| 工程口径 | 2 | bf16、公平对照、路由日志 | 5000 iters 后 C0/C1/C2/C3/CV1 val loss 约 1.616-1.630,MoE 与 dense 接近 |
| 路由诊断 | 3 | aux 扫描、多 seed、MI | aux 主要影响均衡和确定性,mi_content_nmi 约 0.10;active 公平下 dense 约优 0.14 |
| 规模/任务 | 4 | S256 长训、TinyStories | Shakespeare dense 优势缩小到 best 0.026;TinyStories S256 的 MoE-dense +0.0106,未显著 |
| 路由增强 | 5 | memory router | 单 seed 方向性负结果:memory 未提高 content routing,loss 略差;不能排除其它 router 机制 |
| 动态段长 | 6a | 内层 ACT | shakespeare S256 无 loss 优势,动态段机制工作但证据有限;不应写成 ACT 被排除 |
| 放大验证 | 6b | S512 TinyStories | MoE-dense −0.0053,3 seed 同向但未达 2σ;这是 active-fair、非 total-fair 的首个方向性正信号 |
| 架构隔离 | 7 | Ordinary MoE + FLOP-fair | S256 FLOP-fair 下 OMOE19 显著优于 fixed Loop,Loop−OMOE +0.0191;同计算量 Loop 无优势 |
| 双动态初版 | 8 | outer+inner halt | dd≈fixed,dd−fixed +0.0005;mean_D_eff=8.0 且 halt 未触发,说明 objective 没学到按需停机 |
| ACT 修正 | 9 | ACT halt objective | dd 显著优于 fixed,dd−fixed −0.0122;mean_D_eff=6.94、effective_flop_proxy=0.868、inner halt 约 24% |
| 普通 MoE 复验 | 10 | dd vs OMOE 双口径 | 同计算量下 OMOE 仍优于 dd:FLOP-fair +0.0078,effective-flop-fair +0.0097 |
| 参数效率 | 11 | total-fair 单点对照 | 同 total 7.7M 下 dd−OMOE_TOTAL −0.3375;但 OMOE_TOTAL 是 active 2.9M 的单点弱基线,Pareto 待扫 |
当前价值定位应保持克制:Loop MoE 的候选优势是参数/存储受限但允许更多串行计算的场景。Round 11 证明了 Loop 击败一个 total-fair 单点弱基线,尚未证明击败 Ordinary MoE 的 total-fair Pareto 前沿;Round 12 需要做 loss-vs-total-params sweep。
src/loop_moe/
config.py LoopMoeConfig + C0-C3/CV1/OMOE/S 预设 + active_params_estimate
model.py LoopMoEFFN(版本B/分段重路由/inner ACT) + LoopBody(A/B复合)
+ LoopMoETransformer(权重共享循环 + 双动态 ACT halt)
+ OrdinaryMoETransformer(普通非循环 MoE baseline)
moe_utils.py topk_route / load_balance_aux_loss / count_params / estimate_flops
baselines.py build_model 统一入口(Loop/OMOE/dense)
train.py AdamW + cosine + bf16 + 梯度累积 + halt/ACT CLI
analyze.py loss 曲线、专家使用、转移矩阵、MI、effective_depth、dh_norm
scripts/
prepare_shakespeare.py / prepare_tinystories.py
tests/ 每模块独立测试;当前基线 358 collected,354 passed / 4 skipped
experiments/ 实验产物(log/meta/samples/plots);大文件 gitignore
环境约束:Python 3.14 + PyTorch 2.12.1+cu130;RTX 4060 Laptop 8GB;训练默认用 .venv/bin/python、bf16 和梯度累积。
.venv/bin/python -m loop_moe.train --config C2 --out experiments/... \
--max-iters 5000 --batch 16 --grad-accum 2 --seed 42 \
--data-dir data/tinystories_char --eval-batch 16 --aux-weight 0.0001
.venv/bin/python -m loop_moe.train --config C2 --outer-halt --inner-loop-halt \
--out experiments/... --max-iters 5000 --batch 16 --grad-accum 2 --seed 42
.venv/bin/python -m loop_moe.analyze DIR1 DIR2 ...
.venv/bin/python -m pytest数据:首轮 shakespeare_char,Round 4 起主要使用 tinystories_char。
- 架构公式:
docs/loop_arch.md - 原始设计对话:
docs/ChatGPT_MoE_mixed_loop.md - 架构 spec:
docs/superpowers/specs/2026-06-25-loop-moe-design.md - 实现计划:
docs/superpowers/plans/2026-06-25-loop-moe-round1.md - Codex 架构审阅:
docs/review/2026-06-25-loop-moe-architecture-review.md - 实验报告:
docs/report/round1-2026-06-25-feasibility.md到docs/report/round11-2026-06-28-total-fair.md - 下一步计划:
docs/nextplan/round11-2026-06-28-nextplan.md,主题是 Round 12 Pareto sweep
- 查码优先使用 CodeGraph:MCP
codegraph_explore或codegraph explore "<问题或符号>"。 - Claude Code 环境中,用
Agent(subagent_type="codex:codex-rescue")调 Codex;prompt 显式带--wait --model gpt-5.5 --effort xhigh。 - 制定下一轮计划后,必须交 Codex 审核计划文件;Codex 只能直接修改
docs/nextplan/*.md或docs/superpowers/plans/*.md,代码和其它文件只能给建议。 - 每轮结束后,把关键上下文和结果交 Codex 复核,再决定继续自定计划还是让 Codex 制定下一轮计划。
- 插件不可用时,CLI 只是后备:
codex exec -m gpt-5.5 -c model_reasoning_effort=xhigh "<prompt>"。
- 版本 B 作为主线:共享 hidden state 更稳、省显存、对照干净;版本 A(专家独立 hidden trajectory)只作为后续诊断实验。
- 公平口径分离:active-fair、FLOP/compute-fair、total-fair 不混用;Round 11 的 total-fair 是参数效率口径,不是计算效率口径。
- Ordinary MoE baseline 必要:dense vs MoE 无法隔离 Loop 架构贡献;Round 7 后必须用普通非循环 MoE 做架构对照。
- ACT halt objective 替代 hard threshold:Round 8 halt 没学,Round 9 用 hazard/survival + soft remainder 后 dd 才显著优于 fixed。
- Round 11 结论收窄:OMOE_TOTAL 是单点弱基线,Loop 的 Pareto 优势还待 Round 12 sweep 验证。
