欣淇
发布于 2026-05-13 / 0 阅读
0
0

🧠 OpenMythos:12.5k Stars 的开源 Claude Mythos 架构复现,循环深度 Transformer 到底有多强

Project: kyegomez/OpenMythos | ⭐ 12,506 Stars | 🛠 Python | Author: Kye Gomez

老实说,看到 Claude Mythos 的 benchmark 时我第一反应是"这玩意儿到底塞了多少层 transformer"?结果 Anthropic 死活不公开架构细节,社区只能靠猜。然后有人真的动手把它给复现了——12.5k 星不是白来的。

🧠 核心思路:Recurrent-Depth Transformer

OpenMythos 是对 Claude Mythos 架构的理论性开源复现,基于公开论文和逆向推理。它用了一个叫 Recurrent-Depth Transformer (RDT) 的结构——不是堆叠几百层不同的 transformer,而是让一部分层反复循环使用:

Input → [Prelude P] → [Recurrent Block R] × T 次 → [Coda C] → Output

最骚的操作是:同一组权重,跑不同的循环次数。训练时跑 5 步,推理时跑 10 步,效果相当于一个 2 倍深的模型——而且参数完全不增加。

import torch
from open_mythos.main import OpenMythos, MythosConfig

cfg = MythosConfig(
    vocab_size=1000, dim=256, n_heads=8,
    max_seq_len=128, max_loop_iters=4,
    prelude_layers=1, coda_layers=1,
    n_experts=8, n_shared_experts=1,
    n_experts_per_tok=2, expert_dim=64,
    lora_rank=8, attn_type="mla",
    kv_lora_rank=32, q_lora_rank=64,
)

model = OpenMythos(cfg)
total = sum(p.numel() for p in model.parameters())
print(f"Parameters: {total:,}")

ids = torch.randint(0, cfg.vocab_size, (2, 16))
logits = model(ids, n_loops=4)
print(f"Logits shape: {logits.shape}")

装一个就能跑:

pip install open-mythos

🔬 为什么这事儿值得关心

循环深度 transformer 有几个炸裂的特性:

  • 深度外推:训练 5 跳推理,测试 10 跳——普通 transformer 直接跪,循环 transformer 多跑几轮就行。
  • 2. 隐式 CoT:每一轮循环等价于一步 chain-of-thought,但它在连续隐空间里运作,不像 token 输出那样串行。这意味着它可以同时探索多条推理路径。

    3. 参数效率:k 层跑 L 次 ≈ k×L 层的效果,但参数只有 k 层的量。770M 参数的循环模型能达到 1.3B 固定深度模型的下游质量。

    ⚡ 稳定性问题(血泪教训)

    训练循环模型最大的坑是残差爆炸——隐藏状态在循环中越滚越大,然后 loss 直接飞升。OpenMythos 的解法是把注入参数约束为 LTI(线性时不变)系统,保证谱半径 ρ(A) < 1:

    # 核心保证:谱半径永远小于 1
    A = model.recurrent.injection.get_A()
    rho = torch.linalg.eigvals(A).abs().max().item()
    print(f"Spectral radius ρ(A) = {rho:.4f} (must be < 1)")
    

    训练时你会发现,凡是发散的情况 ρ(A) ≥ 1,凡是收敛的情况 ρ(A) < 1。没有例外。

    🎯 预配置模型变体

    项目直接给了 1B 到 1T 参数的配置模板:

    from open_mythos import mythos_7b, OpenMythos
    
    cfg = mythos_7b()
    model = OpenMythos(cfg)
    total = sum(p.numel() for p in model.parameters())
    print(f"Parameters: {total:,}")
    

    | 变体 | 维度 | 专家数 | 循环上限 | 上下文 |

    |------|------|--------|---------|--------|

    | 1B | 2048 | 64 | 16 | 4K |

    | 10B | 4096 | 128 | 24 | 8K |

    | 100B | 8192 | 256 | 32 | 1M |

    | 1T | 16384 | 512 | 64 | 1M |

    📝 总结

  • OpenMythos 是 Claude Mythos 架构的开源理论复现,基于循环深度 transformer
  • 同一组权重反复使用,推理时多跑几轮 ≈ 深度翻倍,参数不增
  • 核心创新:LTI 约束的注入参数保证训练稳定性
  • 支持 MLA 和 GQA 两种注意力,Flash Attention 2 加速
  • pip install open-mythos 开始,一行代码就能跑
  • 别问 Claude Mythos 为什么那么强——答案可能就是它每生成一个 token 实际上跑了 10 轮内部推理。


    评论