OpenMythos 是一个基于公开研究文献、从第一性原理重构的 Claude Mythos 架构理论实现。它实现了一种循环深度Transformer(Recurrent-Depth Transformer, RDT),通过反复执行共享的网络层来实现深度推理,而非堆叠数百个独立层。本文将指导你完成从环境准备到模型推理的完整部署流程。


1. 核心概念速览

在开始部署前,了解 OpenMythos 的核心架构有助于理解后续的操作:

  • 三段式结构:模型由 Prelude(前奏,标准层,运行一次)→ Recurrent Block(循环块,核心,循环多次)→ Coda(尾声,标准层,运行一次)组成。
  • 循环更新:循环块的核心更新规则为 h_{t+1} = A·h_t + B·e + Transformer(h_t, e),其中 e 是编码后的输入,在每一步都会被注入,防止模型在循环中漂移。
  • 稳定性保障:通过参数化确保循环更新的谱半径小于1,从而保障训练的稳定性,这也是该项目能够成功运行的关键。

2. 环境准备

2.1 基础依赖

  • 操作系统:Linux / macOS / Windows(推荐Linux)
  • Python 版本:3.10 或更高版本
  • CUDA:如使用GPU加速,需安装CUDA 12.0+ 和对应版本的PyTorch

2.2 安装 OpenMythos

最直接的安装方式是通过 pip 从 PyPI 获取:

1
2
3
4
5
# 基础安装
pip install open-mythos

# 如需启用 Flash Attention 2 加速(需要CUDA和编译工具)
pip install open-mythos[flash]

2.3 验证安装

创建一个测试脚本 test_install.py 来验证安装是否成功:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import torch
from open_mythos import OpenMythos, MythosConfig

# 使用最小的配置进行测试
cfg = MythosConfig(
vocab_size=1000,
dim=128,
n_heads=4,
max_seq_len=64,
max_loop_iters=2,
prelude_layers=1,
coda_layers=1,
n_experts=4,
n_shared_experts=1,
n_experts_per_tok=1,
expert_dim=64,
lora_rank=4,
attn_type="gqa",
n_kv_heads=2,
)

model = OpenMythos(cfg)
total_params = sum(p.numel() for p in model.parameters())
print(f"模型参数量: {total_params:,}")

# 测试前向传播
ids = torch.randint(0, cfg.vocab_size, (1, 16))
logits = model(ids, n_loops=2)
print(f"输出logits形状: {logits.shape}")

print("✅ 安装验证成功!")

运行该脚本:

1
python test_install.py

3. 加载预训练模型(推荐方式)

直接从头训练一个循环深度Transformer成本较高。社区已经提供了多种格式的预训练权重,推荐直接加载使用。

3.1 从 Hugging Face 加载

Hugging Face 上有经过清理和适配的 OpenMythos 实现,可直接使用 transformers 库加载。

安装依赖

1
pip install transformers accelerate torch

加载模型并推理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from transformers import AutoTokenizer, AutoModelForCausalLM

# 选择一个可用的模型仓库,例如:
repo_id = "GLASSEYE/opus-4.8-recreation-1b-light" # 1B规模版本,需注意MoE替换[citation:10]

# 加载tokenizer和模型
tokenizer = AutoTokenizer.from_pretrained(repo_id)
model = AutoModelForCausalLM.from_pretrained(
repo_id,
device_map="auto",
torch_dtype="auto"
)

# 进行推理
messages = [{"role": "user", "content": "Explain the concept of a looped transformer."}]
inputs = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)

outputs = model.generate(inputs, max_new_tokens=100)
response = tokenizer.decode(outputs[0][inputs.shape[-1]:], skip_special_tokens=True)
print(response)

3.2 使用 vLLM 部署高性能推理服务

对于生产环境,vLLM 能够提供高效的推理服务,并兼容 OpenAI API。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 安装 vLLM
pip install vllm

# 启动服务
vllm serve "KevinRyan570058/OpenMythos" # 或使用其他权重仓库

# 在另一个终端,使用curl调用API
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
-d '{
"model": "KevinRyan570058/OpenMythos",
"messages": [{"role": "user", "content": "What is the capital of France?"}]
}'

3.3 使用 Ollama 或 llama.cpp(量化模型)

社区提供了量化版本(如GGUF格式),可以在资源受限的设备上运行。

使用 Ollama

1
ollama run hf.co/jabbatheduck/OpenMythos-GGUF:Q6_K

使用 llama.cpp

1
2
3
4
5
# 安装 llama.cpp
curl -LsSf https://llama.app/install.sh | sh

# 启动服务
llama serve -hf jabbatheduck/OpenMythos-GGUF:Q6_K

4. 从零开始训练(可选,面向研究者)

如果你希望从零开始训练 OpenMythos 以验证其架构,项目提供了训练脚本。

4.1 准备训练脚本

项目仓库中有 3B 模型的训练脚本 training/3b_fine_web_edu.py。下载该脚本并安装额外依赖:

1
2
3
4
5
# 下载脚本
wget https://raw.githubusercontent.com/kyegomez/OpenMythos/main/training/3b_fine_web_edu.py

# 安装训练所需依赖
pip install datasets accelerate

4.2 数据准备

脚本默认使用 Hugging Face 上的 FineWeb-Edu 数据集,这是一个经教育质量筛选的网页语料库。

  • 默认使用sample-10BT(100亿token样本),用于快速验证流程。
  • 完整训练:可修改脚本中的数据集为 default 以使用完整1.3T token的语料库。

4.3 执行训练

单卡训练

1
python training/3b_fine_web_edu.py

多卡分布式训练(自动检测GPU数量)

1
torchrun --nproc_per_node=$(python -c "import torch; print(torch.cuda.device_count())") training/3b_fine_web_edu.py

训练关键配置

  • 优化器:AdamW
  • 精度:H100/A100 使用 bfloat16,较旧GPU使用 float16 + GradScaler
  • 调度:2000步线性预热 → 余弦衰减
  • 目标:约300亿token(针对循环架构的Chinchilla最优调整)

注意:从头训练 OpenMythos 需要大量计算资源(尤其是GPU显存)和时间,研究性质更强。普通用户强烈建议直接使用预训练模型。


5. 故障排查

问题 可能原因 解决方案
安装 open-mythos[flash] 失败 缺少CUDA或编译工具链 安装CUDA Toolkit和对应编译器;或只安装 open-mythos 基础版本
加载Hugging Face模型时键不匹配 模型结构定义与权重保存时的结构不一致(如MoE替换为Dense层) 检查模型仓库的说明,在加载模型前对模型结构进行相应修改(如替换MoEFFNExpert
OOM(显存不足) 模型规模过大或序列长度过长 使用更小的模型变体(如1B);在生成时降低 max_new_tokens;启用CPU Offloading
推理结果质量差 使用了未经训练或小型变体;循环次数 n_loops 设置不当 使用更大规模或经过微调的权重;适当增加 n_loops 参数,但注意“过度思考”问题

6. 总结

OpenMythos 是一个探索前沿AI架构的实验性项目。通过本教程,你可以:

  1. 快速体验:通过 pip install open-mythos 安装并运行测试脚本。
  2. 使用预训练模型:从 Hugging Face 加载社区权重,进行推理或使用 vLLM 部署服务。
  3. 研究性训练:利用提供的脚本在 FineWeb-Edu 数据集上从头训练,但需要充足的计算资源。