开源项目
kyegomez/OpenMythos avatar
kyegomez/OpenMythos

OpenMythos:用循环深度重走 Claude 的推理路径

克劳德神话架构的理论重建,是利用现有的研究文献根据第一原理构建的。

14,895 个 Star3,295 个 ForkPythonMIT

秒懂

它是什么?
OpenMythos 是一个基于公开研究文献重构的 Claude Mythos 理论实现,核心是循环深度 Transformer。本文拆解它的三段式架构、注意力切换机制与训练脚本,并指出它在实际采用前需要验证的关键问题。
适合谁用?
OpenMythos 适合两类人:一是研究循环深度或可变计算量推理的研究者,想在一个干净、可跑的 PyTorch 基线上做实验;二是对 Claude Mythos 架构好奇、愿意阅读论文并自行验证假设的工程师。不适合生产环境部署,也不适合没有强化学习或模型训练经验的人直接上手。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 115 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

一个没有官方图纸的架构猜想

Claude Mythos 是 Anthropic 未公开的模型,外界只能从论文和传闻中拼凑它的形状。OpenMythos 把这种拼凑变成可运行的代码。它的核心假设是:Mythos 不是堆叠几百层独立 Transformer,而是把一部分层循环使用多次。文档称之为 Recurrent-Depth Transformer,也叫 Looped Transformer。同一组权重,多次前向,等效于更深的网络。这个想法不新鲜,但 OpenMythos 把它做成了一个完整的 PyTorch 库,从 1B 到 1T 的配置都有。它的目标用户是研究者,不是想直接部署模型的人。你需要自己训练,没有现成权重。

三段式结构:Prelude、循环块、Coda

架构分三块。输入先经过 Prelude,这是标准的 Transformer 层,只跑一次。然后进入循环块,循环次数由 max_loop_iters 控制。最后经过 Coda,也是标准层,输出结果。循环块的更新规则是 h_{t+1} = A·h_t + B·e + Transformer(h_t, e)。这里的 e 是 Prelude 编码后的输入,每一步都注入。A 和 B 是可学习的注入参数。文档强调,这个注入机制防止模型在循环中漂移,让原始输入信号始终存活。这个设计有道理,但也带来一个疑问:A 和 B 的初始值如何设置?如果初始化不当,循环可能退化为恒等映射或发散。README 没有给出初始化细节,这需要用户自己实验。

注意力切换:MLA 与 GQA 的取舍

注意力层通过 cfg.attn_type 切换。gqa 对应 Grouped Query Attention,减少 KV 头数量,降低 KV 缓存内存。mla 对应 Multi-Latent Attention,来自 DeepSeek-V2,缓存压缩后的 KV 潜变量而不是完整 K/V。两种方式都为了省内存,但思路不同。GQA 是直接减少头数,MLA 是压缩表示。文档说 GQA 在安装 flash-attn>=2.8.3 时原生支持,无需展开 KV 头,否则回退到手动点积注意力。MLA 则把 RoPE 维度与非 RoPE 维度分开处理。选择哪种取决于你的硬件和训练目标。如果你的 GPU 内存紧张,MLA 可能更优,但实现复杂度更高。README 没有给出两者在相同配置下的性能对比,这是一个空白。

从 pip 安装到跑通 3B 训练脚本

安装很简单:pip install open-mythos。要启用 Flash Attention 2,需要 CUDA 和编译工具,然后 pip install open-mythos[flash]。使用方式也直接,构造 MythosConfig 传入参数字典,然后实例化 OpenMythos。比如设置 vocab_size=1000, dim=256, n_heads=8, max_loop_iters=4, prelude_layers=1, coda_layers=1。如果 attn_type 是 gqa,需要额外指定 n_kv_heads=2;如果是 mla,则要设置 kv_lora_rank 和 q_lora_rank。预配置的模型变体从 mythos_1b 到 mythos_1t,直接调用函数返回配置。训练脚本在 training/3b_fine_web_edu.py,单 GPU 直接运行,多 GPU 用 torchrun 自动检测卡数。优化器是 AdamW,数据集是 FineWeb-Edu 的 sample-10BT,分词器用 openai/gpt-oss-20b。精度上,H100/A100 用 bfloat16,老 GPU 用 float16 加 GradScaler。这些细节说明项目考虑了实际训练环境。

训练目标与并行策略的边界

训练脚本针对 3B 模型,目标 30B tokens,文档称这是对循环架构做了 Chinchilla 调整后的估计。这个数字没有出处,只能当参考。并行策略是 PyTorch DDP,数据集用分片流式加载。文档说多 GPU 会自动检测数量,但 DDP 在单机多卡之外的能力有限,比如跨节点训练没有提及。如果你有 8 卡以上的集群,可能要考虑更复杂的并行方案,但项目没有提供。另外,模型变体表里 mythos_1t 的上下文是 1M,max output 是 128k,这暗示循环深度可以支持长序列,但训练这样的模型需要多少显存,README 没有说。这些空白意味着用户需要自己估算资源。

循环深度的代价:训练不稳定与推理延迟

循环层数越多,等效深度越深,但训练难度也越大。梯度要穿过多次循环,容易爆炸或消失。文档没有提到梯度裁剪或归一化技巧,这可能是隐患。推理时,循环次数是固定的 max_loop_iters,意味着每次前向都要跑那么多遍,延迟是静态的。这不像自适应计算那样可以根据输入难度调整循环次数。文档说这是 compute-adaptive,但实际上循环次数是配置死的,不是动态决定的。如果你想要真正的自适应,需要自己改代码。另外,循环块内部的隐状态 h 每一步都更新,但内存占用会随循环次数线性增长,因为需要保存中间状态用于反向传播。这个成本在长序列下会很可观。

替代方案:DeepSeek-V2 与标准 Transformer 堆叠

如果你需要的是经过验证的 MLA 实现,直接看 DeepSeek-V2 的开源代码更可靠。OpenMythos 的 MLAttention 是重写,不是官方实现。如果你只是想要更深的模型,堆叠更多标准 Transformer 层是更稳妥的选择,训练生态成熟,调参经验丰富。循环深度架构的优点是参数效率,但缺点是缺乏大规模验证。OpenMythos 自己也是理论重构,没有发布训练好的权重。所以,如果你追求稳定可复现的结果,标准堆叠或 DeepSeek-V2 的官方代码更合适。如果你愿意承担实验风险,OpenMythos 提供了一个干净的起点。

编辑结论

OpenMythos 适合两类人:一是研究循环深度或可变计算量推理的研究者,想在一个干净、可跑的 PyTorch 基线上做实验;二是对 Claude Mythos 架构好奇、愿意阅读论文并自行验证假设的工程师。不适合生产环境部署,也不适合没有强化学习或模型训练经验的人直接上手。采用前必须验证三件事:第一,循环块的注入参数 A 和 B 是否真的能防止隐状态漂移,这需要在小模型上做消融实验;第二,MLA 与 GQA 在同等参数下的性能差距是否如文档暗示的那样显著;第三,训练脚本默认的 30B token 预算是否足够,文档自己都称这是对循环架构的 Chinchilla 调整,但没有任何实验数据支撑。最后,记住这是理论重构,不是 Anthropic 的官方实现,任何关于 Claude 内部机制的结论都只能算推测。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
社区笔记

社区笔记