OpenMythos
免责声明: OpenMythos 是一个独立的、社区驱动的理论重构项目,完全基于公开可用的研究和推测。它与 Anthropic 或其任何专有系统无关,未获得其认可,也不存在任何关联。
OpenMythos 是对 Claude Mythos 模型的一个开源、理论性实现。
它实现了一个循环深度 Transformer(Recurrent-Depth Transformer, RDT),包含三个阶段:
前奏(Prelude)(Transformer 块)、一个循环的循环块(Recurrent Block)(最多运行 max_loop_iters 次),以及最后的尾声(Coda)。
注意力机制可在 MLA 和 GQA 之间切换,前馈网络使用稀疏 MoE(混合专家),包含路由专家和共享专家,非常适合探索计算自适应、深度可变的推理。
安装
pip install open-mythos
# uv pip install open-mythos
使用方法
import torch
from open_mythos.main import OpenMythos, MythosConfig
attn_type = "mla" # 或 "gqa"
base = {
"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": attn_type,
}
if attn_type == "gqa":
cfg = MythosConfig(**base, n_kv_heads=2)
else:
cfg = MythosConfig(
**base,
n_kv_heads=8,
kv_lora_rank=32,
q_lora_rank=64,
qk_rope_head_dim=16,
qk_nope_head_dim=16,
v_head_dim=16,
)
model = OpenMythos(cfg)
total = sum(p.numel() for p in model.parameters())
print(f"\n[{attn_type.upper()}] 参数数量: {total:,}")
ids = torch.randint(0, cfg.vocab_size, (2, 16))
logits = model(ids, n_loops=4)
print(f"[{attn_type.upper()}] Logits 形状: {logits.shape}")
out = model.generate(ids, max_new_tokens=8, n_loops=8)
print(f"[{attn_type.upper()}] 生成结果形状: {out.shape}")
A = model.recurrent.injection.get_A()
print(
f"[{attn_type.upper()}] 谱半径 ρ(A) 最大值: {A.max().item():.4f} (必须 < 1)"
)
模型变体
从 1B 到 1T 参数的预配置规模:
from open_mythos import (
mythos_1b,
mythos_3b,
mythos_10b,
mythos_50b,
mythos_100b,
mythos_500b,
mythos_1t,
OpenMythos,
)
cfg = mythos_7b() # 返回一个 MythosConfig 对象
model = OpenMythos(cfg)
total = sum(p.numel() for p in model.parameters())
print(f"参数数量: {total:,}")
| 变体 | dim |
专家数 | expert_dim |
循环次数 | 上下文长度 | 最大输出长度 |
|---|---|---|---|---|---|---|
mythos_1b |
2048 | 64 | 2048 | 16 | 4k | 4k |
mythos_3b |
3072 | 64 | 4096 | 16 | 4k | 4k |
mythos_10b |
4096 | 128 | 5632 | 24 | 8k | 4k |
mythos_50b |
6144 | 256 | 9728 | 32 | 8k | 4k |
mythos_100b |
8192 | 256 | 13568 | 32 | 1M | 128k |
mythos_500b |
12288 | 512 | 23040 | 48 | 1M | 128k |
mythos_1t |
16384 | 512 | 34560 | 64 | 1M | 128k |
训练
在 FineWeb-Edu 上训练 3B 模型的脚本位于 training/3b_fine_web_edu.py。
单 GPU:
python training/3b_fine_web_edu.py
多 GPU(自动检测 GPU 数量):
torchrun --nproc_per_node=$(python -c "import torch; print(torch.cuda.device_count())") training/3b_fine_web_edu.py
关键设计选择:
| 特性 | 详情 |
|---|---|
| 优化器 | AdamW |
| 数据集 | HuggingFaceFW/fineweb-edu(默认使用 sample-10BT,可切换至 sample-100BT 或 default 进行完整运行) |
| 分词器 | openai/gpt-oss-20b,通过 MythosTokenizer 使用 |
| 并行策略 | 通过 torchrun 实现 PyTorch DDP,分片流式数据集 |
| 精度 | H100/A100 上使用 bfloat16,旧 GPU 上使用 float16 + GradScaler |
| 调度策略 | 线性预热(2000 步)→ 余弦衰减 |
| 目标 | 300B 个 token(针对循环架构进行了 Chinchilla 调整) |
文档
| 页面 | 描述 |
|---|---|
docs/open_mythos.md |
OpenMythos 类的完整 API 参考 — 构造函数、forward、generate、所有子模块、配置参考和使用示例 |
docs/datasets.md |
推荐的训练数据集,包含按模型规模划分的 token 预算指导 |
核心假设
Claude Mythos 被怀疑是一个循环深度 Transformer(Recurrent-Depth Transformer, RDT)——也称为循环 Transformer(Looped Transformer, LT)。
它不是堆叠数百个独特的层,而是将一部分层循环使用,并在每次前向传播中多次运行它们。相同的权重。更多的循环。更深入的思考。
这不是思维链(chain-of-thought)。中间没有 token 输出。所有这些推理都静默地、在单次前向传播内部,在连续的潜在空间中进行。
架构
一个循环 Transformer 将其层划分为三个功能块:
输入
↓
[前奏 P] — 标准 Transformer 层,运行一次
↓
[循环块 R] — 循环运行 T 次
↑_______↓ (隐藏状态 h 每次循环都会通过输入注入 e 进行更新)
↓
[尾声 C] — 标准 Transformer 层,运行一次
↓
输出
每个循环步骤 t 的循环块更新规则:
h_{t+1} = A·h_t + B·e + Transformer(h_t, e)
其中:
h_t是第 t 次循环后的隐藏状态e是编码后的输入(来自前奏),在每次循环中注入A和B是学习到的注入参数- Transformer 块照常应用注意力和 MLP
在每一步注入 e 可以防止模型漂移——它在整个循环深度中始终保持原始输入信号的活跃。
完整实现在 open_mythos/main.py 中。有关详细的 API 指南、配置选项和使用示例,请参阅 OpenMythos 类参考。
为什么这能解释 Mythos
1. 系统性泛化
普通 Transformer 无法以训练中从未见过的方式组合知识。循环 Transformer 通过了这一测试。这种能力通过一个三阶段的领悟(grokking)过程涌现:
- 记忆——模型拟合训练分布
- 分布内泛化——模型处理已知的组合
- 系统性泛化——模型突然且意外地处理未见过的分布外(OOD)新颖组合
这就是为什么 Mythos 在面对新颖问题时感觉与其他模型有质的区别——能力是阶段性跃迁的,而非逐渐涌现。
2. 深度外推
在 5 跳推理链上训练。在 10 跳上测试。普通 Transformer 失败。循环 Transformer 成功——通过在推理时运行更多的循环。这直接对应到观察到的现象:Mythos 能够处理深度组合性问题(多步数学、长时程规划、分层论证)而无需显式的思维链。
推理时更多的循环 = 更深的推理链 = 解决更难的问题。
3. 作为隐式思维链的潜在思想
每次循环迭代在功能上等同于思维链的一步,但运行在连续的潜在空间中而非 token 空间中。一个运行 T 次循环的模型隐式地模拟了 T 步思维链推理。这一点已被正式证明(Saunshi 等人,2025)。
此外,连续的潜在思想——不同于离散的 token 输出——可以同时编码多个并行的下一步可能性。这使得模型能够在推理空间中进行更接近广度优先的搜索,而不是遵循单一的、确定性的推理路径。模型在每次前向传播中有效地探索许多可能的方向,然后才收敛。
4. 无参数爆炸
一个具有 k 层、运行 L 次的循环模型,其质量相当于一个 kL 层的非循环模型,但只有 k 层的参数数量。对于 Mythos 规模的部署,这非常重要:
- 内存占用不随推理深度增长
- 推理时的计算量随循环次数而非模型规模增长
- 这使得更深的推理在参数方面“免费”
稳定性问题(以及可能的解决方式)
训练循环模型以不稳定著称。两种主要的失败模式:
- 残差爆炸——隐藏状态
h_t在循环中无界增长 - 损失尖峰——由于注入参数中的谱范数过大,训练突然发散
动力系统视角
将循环过程重新表述为残差流上的离散线性时不变(LTI)动力系统。忽略非线性的 Transformer 贡献,递推关系变为:
h_{t+1} = A·h_t + B·e
对于这个 LTI 系统,稳定性完全由 A 的谱半径决定:
ρ(A) < 1→ 稳定,收敛ρ(A) ≥ 1→ 不稳定,发散
根据经验,每一次发散的训练运行都会学到 ρ(A) ≥ 1。每一次收敛的运行都保持 ρ(A) < 1。
解决方案
约束注入参数,使得稳定性通过构造得到保证:
- 将 A 参数化为一个连续的负对角矩阵
- 使用 ZOH/Euler 方案进行离散化:
A_discrete = exp(Δt · A_continuous) - 通过
A := Diag(-exp(log_A))强制执行负性,并使用学习到的标量Δt - 这确保
ρ(A) < 1始终成立,无论学习率或批次噪声如何
结果:循环模型对超参数选择变得显著更加鲁棒,即使在较高的学习率下也能稳定训练。这就是 Parcae 架构(Prairie 等人,2026),它代表了 Anthropic 为使 Mythos 可训练而采用的最可能的解决方案类别。
循环模型的缩放定律
Parcae 建立了第一个可预测的循环训练缩放定律:
- 训练:在固定的 FLOP 预算和固定参数下,增加平均循环次数并减少 token 数量,比使用最小循环次数和更多数据进行训练能获得更低的损失。最优循环次数和最优 token 数量都遵循幂律,且在不同规模下指数一致。
- 推理:更多的测试时循环次数会提高质量,遵循可预测的、饱和的指数衰减——收益是真实的但逐渐递减。这镜像了思维链的推理时缩放特性。
在 770M 参数下,一个循环模型达到了在相同数据上训练的 1.3B 固定深度 Transformer 的下游质量——大致以一半的参数获得相同的质量。
应用于 Mythos:如果按照这些缩放定律进行训练,Mythos 的参数效率可能远高于其表面表现,其能力的很大一部分可能来自循环深度而非原始参数数量。
循环索引嵌入假说
一个关键的开放问题是:循环块在每次迭代中的行为是否完全相同,还是能够学习在循环深度不同时执行不同的操作。
如果没有跨循环的位置信号,相同的权重必须同时处理早期的模式匹配和后期优化——这是一个严格的约束。一种类似 RoPE 的循环索引嵌入,在每一步与输入一起注入,将允许相同的参数在不同迭代中实现功能上不同的操作,就像 RoPE 允许相同的注意力头在序列不同位置表现出不同行为一样。
如果 Mythos 使用了这种技术,那么每个循环就不是一次重复——而是一个独特的计算阶段,它们共享权重但在不同的表示空间中运行。这将显著增加循环块的表达能力,而无需增加参数数量。
过度思考问题
更多的循环并不总是更好。超过一定深度后,过度的循环会降低预测质量——隐藏状态漂移过解而进入噪声。这就是“过度思考”的失败模式。
原始的 Universal Transformer(Dehghani 等人,2018)通过自适应计算时间(Adaptive Computation Time, ACT) 停止机制解决了这个问题:一个学习到的标量,每个位置独立,动态决定何时停止循环。难以处理的位置获得更多的计算;简单的 token 提前停止。
Mythos 几乎肯定有某种版本的这种机制。模型不能天真地对每个输入都运行最大循环次数——它需要一个学习到的信号来判断答案何时已经收敛。ACT 机制还使得模型在特定假设下是图灵完备的,这对它可以解决的问题类别具有理论意义。
混合专家(MoE)——在大参数数量下的推测
循环 Transformer 解释了 Mythos 推理的深度,但未解释其广度。用相同的权重处理截然不同的领域——代码、数学、文学、科学、法律——需要混合专家(Mixture of Experts, MoE)。推测的设计将循环块中的每个 FFN 替换为一个细粒度的 MoE 层:每个 FFN 被拆分为许多小专家(大小为正常大小的 1/m),一个路由器通过学习到的亲和度分数为每个 token 选择 top-mK 个专家,并且无论路由结果如何,都会激活少量的共享专家来吸收跨领域的通用知识——语法、基本推理、通用上下文——否则这些知识会被每个路由专家冗余学习。通过在训练期间动态调整路由器 logits 上的偏置项来防止路由崩溃,从而在专家之间保持负载均衡,而不扭曲损失信号。
随着隐藏状态 h_t 在循环迭代中演变,路由器可能会在每个深度选择不同的专家子集,使得每次循环在计算上都是独特的,尽管权重是共享的。MoE 提供广度;循环提供深度。如果激活率约为 5%,Mythos 可能拥有数千亿的总参数,而每个 token 只激活一小部分——如果真的披露,真实参数数量将是一个存储数字,而非计算数字。
记忆-推理权衡
循环模型表现出一个有趣的二分法:循环改善了推理,但可能损害记忆。循环结构针对迭代组合——向前运行推理链——进行了优化,但并不能固有地改善对死记硬背事实的存储。
这对应了 Mythos 的一个可观察特征:它在处理从未见过的新颖问题上推理能力异常出色,但其事实回忆可能不一致。该架构在结构上偏向于组合而非记忆。
基于循环的正则化(Saunshi 等人,2025)可用于在训练期间平衡这种权衡——对推理任务应用更强的循环约束,同时对检索任务放宽约束。
通过 LoRA 适配进行参数重用
来自 Relaxed Recursive Transformers(Bae 等人,2024)的一种补充方法:不要求每次循环的权重完全相同,而是在每次迭代中添加一个小的深度方向 LoRA 模块。这保留了权重共享的紧凑性,同时允许每个循环略微调整其行为。
结果:
- 每次循环共享一个大的公共权重矩阵(递归基)
- 一个小的秩-r 适配矩阵根据迭代深度调整行为
- 总参数开销极小
这弥合了纯权重绑定(参数效率最高,表达能力较低)和完全不同的层(表达能力最高,无参数节省)之间的差距。Mythos 很可能位于这个光谱的某处。
连续深度方向批处理
递归架构的一个下游结果:连续深度方向批处理。由于所有 token 共享相同的循环块,模型可以为不同的 token 或序列在不同的深度退出循环——在同一个批次内快速处理简单输入,用更多迭代处理困难输入。
理论分析表明推理吞吐量可提高 2-3 倍。对于像 Mythos 这样同时服务许多用户的部署模型,这将是一个显著的效率提升。
总结:Mythos 很可能是什么
| 属性 | 描述 |
|---|---|
| 架构 | 循环深度 Transformer(前奏 + 循环循环块 + 尾声) |
| FFN 层 | 推测为 MoE——细粒度专家 + 始终开启的共享专家 |
| 参数数量 | 总量非常大;每个 token 激活一小部分(估计约 5%) |
| 推理机制 | 通过迭代潜在更新的隐式多跳推理——步骤之间无 token 输出 |
| 推理时缩放 | 更多循环 = 更深的推理,遵循可预测的指数衰减 |
| 训练稳定性 | 受 LTI 约束的注入参数,谱半径 < 1 |
| 循环区分 | 可能使用循环索引位置嵌入(类似 RoPE) |
| 停止机制 | 自适应计算时间或学习到的收敛准则 |
| 缩放定律 | 最优训练同时缩放循环和数据,而非仅缩放参数 |
| 推理 vs. 记忆 | 结构上偏向于组合;记忆需要单独处理 |
| 部署 | 连续深度方向批处理实现每请求可变计算量 |
参考文献
Twitter / X
- 为什么 Claude Mythos 如此出色——循环 Transformer 理论(Sigrid Jin):https://x.com/realsigridjin/status/2044620031410266276
- LT 在参数化知识上的隐式推理解锁泛化能力(Yuekun Yao):https://x.com/yuekun_yao/status/2044229171627639004
- 循环 Transformer 的循环轨迹和输入注入(rosinality):https://x.com/rosinality/status/2043953033428541853
- Parcae——稳定循环语言模型的缩放定律——主题帖(Hayden Prairie):https://x.com/hayden_prairie/status/2044453231913537927
- 类似 RoPE 的循环索引嵌入思想,用于在迭代中区分功能(davidad):https://x.com/davidad/status/2044453231913537927
- ChrisHayduk 关于循环 Transformer 争议的文章:https://x.com/ChrisHayduk/status/2045947623572688943
- @realsigridjin 关于循环 Transformer 争议的总结:https://x.com/realsigridjin/status/2046012743778766875
论文
- MoE 中的细粒度专家分割和共享专家隔离:https://arxiv.org/abs/2401.06066
- 循环、思考与泛化——循环深度 Transformer 中的隐式推理:https://arxiv.org/pdf/2604.07822
- Parcae——稳定循环语言模型的缩放定律:https://arxiv.org/abs/2604.12946
- Parcae 博客:https://sandyresearch.github.io/parcae/
- Universal Transformers:https://arxiv.org/pdf/1807.03819
- 用潜在思想推理——论循环 Transformer 的能力:https://arxiv.org/abs/2502.17416
- 在连续潜在空间中训练大型语言模型进行推理:https://arxiv.org/abs/2412.06769
- Relaxed Recursive Transformers——通过层方向 LoRA 实现有效的参数共享:https://arxiv.org/pdf/2410.20672
- 深度混合注意力:https://arxiv.org/abs/2603.15619
引用
如果您在研究中使用 OpenMythos 或基于此工作进行开发,请引用:
@software{gomez2026openmythos,
author = {Kye Gomez},
title = {OpenMythos: A Theoretical Reconstruction of the Claude Mythos Architecture},
year = {2026},
url = {https://github.com/kyegomez/OpenMythos},
note = {循环深度 Transformer,包含 MoE、MLA、LTI 稳定注入和 ACT 停止机制}
}
许可证
MIT 许可证——版权所有 (c) 2026 Kye Gomez。完整文本请参阅 LICENSE 文件。
