OpenMythos

6个月前发布 226 00

OpenMythos是一个开源的、基于第一性原理的 Claude Mythos 理论重构,使用 PyTorch 实现。该架构实例化了一个带有混合专家路由机制的循环变换器,通过权重共享和跨专家的条件计算实现迭代深度。

所在地:
美国
收录时间:
2026-04-21
OpenMythosOpenMythos

OpenMythos 是一个开源的、社区驱动的 PyTorch 实现,通过递归深度变换器 (Recurrent Deep Transformer, RDT) 架构来复现和探索 Anthropic Claude Mythos 模型的理论基础。

该项目的核心假设是:Mythos 并非传统的堆叠式 Transformer,而是一个通过权重共享和循环迭代在连续潜在空间中进行“静默思考”的模型。它结合了混合专家 (MoE) 机制,以极少的参数量实现了极高的推理深度和系统性泛化能力。

免责声明:OpenMythos 是基于公开研究和推测的独立理论重构,不与 Anthropic 官方关联。

核心架构:递归深度变换器 (RDT)

OpenMythos 摒弃了传统的“层数堆叠”,转而采用时间换深度的策略。其架构分为三个阶段:

  1. 前奏 (Prelude):标准 Transformer 层,运行一次,负责初始编码。
  2. 循环块 (Recurrent Block):计算核心。同一组权重被迭代应用 $T$ 次(例如 $T=16$)。
    • 更新规则:$h_{t+1} = A \cdot h_t + B \cdot e + \text{Transformer}(h_t, e)$
    • 输入注入:编码后的输入 $e$ 在每一步都被重新注入,防止信号漂移。
    • 静默推理:所有推理步骤均在连续潜在空间中进行,中间不输出 Token,区别于传统的思维链 (CoT)。
  3. 尾声 (Coda):标准 Transformer 层,运行一次,负责最终解码。

关键组件

  • 混合专家 (MoE) FFN:采用 DeepSeekMoE 设计,包含细粒度路由专家和始终激活的共享专家。路由器在每个循环步骤选择不同的专家子集,使得每次迭代在计算上都是独特的(MoE 提供广度,循环提供深度)。
  • 多潜在注意力 (MLA):缓存压缩的低秩 KV 潜在表示,相比传统 Attention 减少 10-20 倍的 KV 内存占用。
  • LTI 稳定性注入:通过将矩阵 $A$ 参数化为负对角矩阵并离散化,强制谱半径 $\rho(A) < 1$,从构造上保证训练稳定性,防止残差爆炸。
  • 深度 LoRA 适配器:为每个循环步骤添加小型 LoRA 模块,在保持权重共享的同时允许行为差异化。
  • 自适应计算时间 (ACT):允许模型根据难度动态决定停止循环的时机,避免“过度思考”。

性能与效率优势

特性传统 TransformerOpenMythos (RDT)
参数效率质量随层数线性增长k 层参数达到 kL 层质量
推理扩展固定深度推理时增加循环次数即可加深思考
内存占用随层数增加恒定(权重共享)
系统性泛化较弱强(通过相变涌现)
训练稳定性需精细调优LTI 约束保证鲁棒性

实证数据:在 7.7 亿参数下,RDT 在相同训练数据上匹配了 13 亿参数标准模型的性能。

快速开始

安装

pip install open-mythos
# 或使用 uv
uv pip install open-mythos

使用示例

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,           # MoE 专家数
    n_shared_experts=1,
    attn_type="mla",       # 多潜在注意力
    kv_lora_rank=32,
    q_lora_rank=64,
)

# 初始化模型
model = OpenMythos(cfg)

# 前向传播
ids = torch.randint(0, cfg.vocab_size, (2, 16))
logits = model(ids, n_loops=4)  # 指定循环次数

# 生成文本
out = model.generate(ids, max_new_tokens=8, n_loops=8)

# 检查稳定性 (谱半径应 < 1)
A = model.recurrent.injection.get_A()
print(f"谱半径 ρ(A): {A.max().item():.4f}")

预配置模型变体

OpenMythos 提供了从 1B 到 1T 参数的预配置规模:

from open_mythos import mythos_7b, OpenMythos

cfg = mythos_7b()
model = OpenMythos(cfg)
变体参数量级循环次数上下文窗口
mythos_1b1B164k
mythos_7b7B16-248k
mythos_100b100B321M
mythos_1t1T641M

训练与复现

项目提供了完整的训练脚本,支持单卡和多卡分布式训练。

# 单 GPU 训练 3B 模型
python training/3b_fine_web_edu.py

# 多 GPU 训练 (自动检测设备数)
torchrun --nproc_per_node=$(python -c "import torch; print(torch.cuda.device_count())") \
    training/3b_fine_web_edu.py

训练细节:

  • 数据集:FineWeb-Edu
  • 优化器:AdamW
  • 精度:BFloat16 (H100/A100) 或 Float16 + GradScaler
  • 调度:线性预热 + 余弦衰减

理论洞察:为什么是 Mythos?

  1. 隐式思维链:循环迭代在功能上等同于 CoT 步骤,但在连续空间中并行探索多条路径,而非离散 Token 的线性生成。
  2. 深度外推:在 5 跳推理上训练的模型,可以通过增加测试时的循环次数,成功解决 10 跳甚至更复杂的问题。
  3. 连续深度批处理:不同难度的输入可以在同一批次中动态退出循环,显著提升推理吞吐量。
  4. 记忆与推理的权衡:架构天然偏向组合推理,事实记忆需通过特定正则化平衡。

相关导航