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 有几个炸裂的特性:
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 |
📝 总结
pip install open-mythos 开始,一行代码就能跑别问 Claude Mythos 为什么那么强——答案可能就是它每生成一个 token 实际上跑了 10 轮内部推理。