社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

22岁小哥复现Mythos核心架构,GitHub已破3k星

算法狗 • 2 月前 • 152 次点击  

几天前,一个22岁的小哥把开源了OpenMythos。

这速度,3k 星标

这里提一嘴,Mythos大家肯定知道,这个OpenMythos就是他尝试复现的一个版本。

1. 介绍

OpenMythos 是一个完全开源的理论实现项目。

在这个项目中,作者猜Anthropic最新的这个神级模型Claude Mythos不是靠堆参数堆出来的,是用了一种叫循环深度Transformer的架构(Recurrent-Depth Transformer,RDT)。

模的结构如下图所示

整体上我们看分成三段:

  • Prelude:第一段,标准Transformer块,只跑一次
  • Recurrent 第二段,Block:循环块,可重复执行多次
  • Coda:第三段,最终输出块,也只跑一次

其中,注意力机制可以在MLA和GQA之间切换。前馈网络采用稀疏MoE,带路由专家和共享专家。

2. 核心:层数不变,思考变深

传统模型要堆几百层不同的网络层。但这个OpenMythos不同,提出的做法很特别,那就是一个子集的层被重复使用,每次前向传播跑多次。

权重相同。循环次数更多。思考更深。说白了,就是中间某个模块不停的在跑,也就是不停地在思考。

但是需要注意,这不是思维链(Chain-of-Thought)。它的中间没有任何token输出哦,看下面的对比图

所有推理都在单次前向传播内部完成,在连续的隐空间中“无声”进行。就这么简单。

3. 循环更新规则:输入信号永不消失

架构流程很清晰:

输入 → Prelude(跑一次)→ Recurrent Block(循环T次)→ Coda(跑一次)→ 输出

循环块里,每一步都会更新隐状态。

更新规则如下面的公式:

参数这里解释下:

  • h_t:第t次循环后的隐状态
  • e:来自Prelude的编码输入,每一步都会注入
  • AB:学习到的注入参数
  • Transformer块照常应用注意力和MLP

关键点在这里:每一步都注入原始输入 e

这个设计防止模型“漂移”——整个循环深度中,原始输入信号始终保持活跃。相当于每次循环都在提醒模型:“别忘了原始问题是什么。”

4. 为什么Mythos好的原因

文章从四个角度给出了一些原因和看法

4.1 系统泛化:能力的“相变”

标准 Transformer 的每一层都有独立参数,前向传播是固定深度(例如 32 层),信息只能沿着这条预设路径流动。

对于训练中从未见过的知识组合(例如:把“教小孩微积分”和“用莎士比亚风格”组合成一个新问题),模型倾向于插值而非真正的组合推理。本质上是 缺乏迭代 re-processing 能力:输入经过一次深度后就被输出,无法在连续潜空间中反复“琢磨”。

而循环 Transformer 则具备这一能力。该泛化特性是经由三阶段顿悟式学习逐步形成的:

  1. 记忆阶段:模型对训练数据分布进行拟合学习

  2. 分布内泛化:模型能够处理熟悉的知识组合场景

  3. 系统性泛化:模型可突然且直接地处理分布外的全新知识组合

正因如此,Mythos 模型在处理全新问题时表现出与其他模型明显的差异:它的相关能力是以相变式涌现的方式形成,而非缓慢渐进地提升。

4.2 深度外推:5跳到10跳

模型采用5跳推理链进行训练,却要在10跳的难度下完成测试。常规Transformer难以应对这种挑战,而循环Transformer通过在推理环节执行更多次循环,顺利完成了任务。

这也直观解释了为何Mythos能够在不依赖显式思维链的前提下,解决强组合型复杂问题,比如多步数学运算、长时序规划、多层逻辑推演等。

推理时循环次数越多,推理链条就越深,能攻克的难题也就越复杂。

4.3 隐式思维链:连续空间的并行搜索

模型的每一次循环迭代,在功能上都等同于一步思维链推理,但它是在连续隐空间中进行运算,而非在离散的词元空间中展开。一个执行 T 次循环的循环模型,相当于隐式模拟了 T 步的思维链推理过程,这一结论已有严格的理论证明(Saunshi 等人,2025)。

此外,与离散的词元输出不同,连续隐式思考可以同时编码多条不同的后续推理路径。这让模型更接近在推理空间中进行广度优先搜索,而非只沿着一条固定路径单向推演。在每次前向计算中,模型实际上会先探索多种可能的推理方向,再逐步收敛到最终结果。

4.4 参数不爆炸:深度“免费”

一个包含 k 层的循环模型,若循环运行 L 次,其推理效果可媲美拥有 kL 层的传统非循环模型,但参数量却仅相当于 k 层网络。在 Mythos 这类大规模模型的实际部署中,这一优势极具价值:  作者借鉴了这个图,(Parcae, Prairie et al., 2026))

  1. 模型占用的显存不会随推理深度增加而膨胀

  2. 推理阶段的计算开销随循环次数增长,而非模型规模

  3. 这意味着在不增加参数成本的前提下,就能实现更深层次的推理

5. 安装使用

安装如下:

pip install open-mythos

使用如下:


import torch
from open_mythos.main import OpenMythos, MythosConfig


attn_type = "mla"# or "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()}] Parameters: {total:,}")

ids = torch.randint(0, cfg.vocab_size, (216))
logits = model(ids, n_loops=4)
print(f"[{attn_type.upper()}] Logits shape: {logits.shape}")

out = model.generate(ids, max_new_tokens=8, n_loops=8)
print(f"[{attn_type.upper()}] Generated shape: {out.shape}")

A = model.recurrent.injection.get_A()
print(
    f"[{attn_type.upper()}] Spectral radius ρ(A) max: {A.max().item():.4f} (must be < 1)"
)

我们看下不同参数的模型大小




    
from open_mythos import (
    mythos_1b,
    mythos_3b,
    mythos_10b,
    mythos_50b,
    mythos_100b,
    mythos_500b,
    mythos_1t,
    OpenMythos,
)

cfg = mythos_7b()  # returns a MythosConfig
model = OpenMythos(cfg)

total = sum(p.numel() for p in model.parameters())
print(f"Parameters: {total:,}")
模型版本
维度
专家数量
专家维度
循环迭代次数
上下文长度
最大输出长度
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

有兴趣的话可以去试试~

5. 总结

最后,当观测到某一模型具备出色的深度推理能力时,其背后的核心机制或许并非依赖网络结构的横向拓宽,而是通过同一网络结构的多次迭代运算实现深度思考。

循环深度Transformer提出了一种区别于参数暴力堆叠的技术路线,实现了推理深度与参数规模的解耦,这一技术方向或将成为下一代高效推理模型的核心发展方向。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/195322