OpenMythos-100M-Mixed
模型简介
这是首个基于 OpenMythos 开源架构的公开预训练 checkpoint 系列。 OpenMythos 实现了循环深度变换器(Recurrent-Depth Transformer, RDT), 通过在核心计算模块中引入循环机制来扩展模型深度。
该模型具有约 112.9M 参数,在 六个领域的混合数据上完成了两阶段预训练(30K + 50K 步,共 80K 步)。 全部训练在消费级硬件 NVIDIA GeForce GTX 1050 Ti (4GB) 上完成。
模型架构
| 组件 | 配置 |
|---|---|
| 架构 | OpenMythos (RDT + MoE) |
| 注意力机制 | GQA (Grouped Query Attention) |
| 总参数量 | 112,898,594 (≈112.9M) |
| 词表大小 | 199,998 (openai/gpt-oss-20b tokenizer) |
| 模型维度 | 512 |
| 注意力头数 | 8 (KV 头: 4) |
| 专家数量 | 4 路由专家 + 1 共享专家 |
| 每 token 激活专家数 | 2 |
| 专家维度 | 256 |
| LoRA 秩 | 8 |
| 循环深度 | prelude=2, max_loop_iters=4, coda=2 (运行时深度 8) |
| 最大序列长度(训练) | 256 |
| 最大序列长度(推理) | 256 |
训练数据
模型在以下六个领域的混合数据上训练(使用 interleave_datasets 流式交错采样):
| 数据集 | 领域 | 阶段1权重 | 阶段2权重 |
|---|---|---|---|
| DISC-Law-SFT | 中文法律 | 20% | 25% |
| pubmed_qa (context) | 英文医学 | 20% | 25% |
| pubmed_qa (QA) | 家庭医生问答 | 10% | 15% |
| wikipedia 20231101.zh | 中文百科 | 10% | 15% |
| python-codes-25k | Python 代码 | 20% | 15% |
| TinyStories | 小说创作 | 20% | 5% |
阶段2 调整了数据配比:降低了小说权重,提高了法律、医学和百科的占比,使模型更好地学习专业知识。
训练历程
模型分两阶段训练,总计 80,000 步:
| 阶段 | 起始 | 训练步数 | 数据配比 | 说明 |
|---|---|---|---|---|
| 阶段1 | 随机初始化 | 30,000 | 均衡配比 | 基础预训练,loss 从 12.3 降至 5.17 |
| 阶段2 | 30K checkpoint | 50,000 | 强化专业领域 | 继续训练,loss 进一步降至 4.87 |
训练超参数
| 参数 | 阶段1 (0-30K) | 阶段2 (30K-80K) |
|---|---|---|
| 训练步数 | 30,000 | 50,000 |
| 最大序列长度 | 256 | 256 |
| 批次大小 | 1 | 1 |
| 学习率 | 固定 3e-4 | 3e-4 → 1e-5 (warmup 1K + cosine decay) |
| 优化器 | AdamW (β1=0.9, β2=0.95, weight_decay=0.1) | 同 |
| 梯度裁剪 | 1.0 | 1.0 |
| 混合精度 | FP16 (autocast + GradScaler) | 同 |
| 训练硬件 | NVIDIA GTX 1050 Ti (4GB) | 同 |
| 阶段训练 token 数 | ≈ 7,680,000 | ≈ 12,800,000 |
| 总训练 token 数 | ≈ 20,480,000 | |
| 阶段耗时 | ≈ 3.5 小时 | ≈ 6.7 小时 |
| 总耗时 | ≈ 10.2 小时 |
评估结果
所有评估使用相同的数据配比和随机种子。验证 loss 越低越好。
| Checkpoint | 训练步数 | 验证 Loss (n_loops=4) | 相比上一版本提升 |
|---|---|---|---|
| 30K | 30,000 | 5.17 | — |
| 80K | 80,000 | 4.87 | ↓ 0.30 (-5.8%) |
关键发现:
- 第二阶段新增 50K 步训练带来了 5.8% 的验证 loss 降低,说明模型仍在有效学习。
- 调整数据配比(强化专业领域)的同时,验证 loss 持续下降,证明配方改进有效。
- 在仅使用 4GB 显存的消费级 GPU 上,将 100M 模型训练到可用水平是完全可行的。
深度外推能力
OpenMythos 架构的核心优势是推理时可使用与训练时不同的循环深度。
以下是 80K checkpoint 在不同 n_loops 下的表现:
| n_loops | 验证 Loss | Δ vs n_loops=4 |
|---|---|---|
| 1 | 7.16 | +2.29 |
| 2 | 7.03 | +2.16 |
| 4(训练深度) | 4.87 | 0(基线) |
| 8 | 4.96 | +0.09 |
| 16 | 4.96 | +0.09 |
深度外推分析:
- n_loops=4 相比 n_loops=1 有 2.29 的巨大优势,证明循环深度机制在有效工作。
- 从 30K 到 80K,n_loops=1 vs 4 的差距从 1.0 扩大到 2.29,说明模型越来越依赖多次循环。
- n_loops=8/16 目前略差于训练深度(4),这是正常的——模型需要在推理时见过的循环次数上表现最好。
- 未来若在不同 n_loops 下进行多深度训练,有望实现更强的深度外推。
使用方法
环境要求
pip install torch datasets loguru
git clone https://github.com/kyegomez/OpenMythos.git
cd OpenMythos
pip install -e .
### 加载模型
import torch
from open_mythos import OpenMythos
from open_mythos.main import MythosConfig
from open_mythos.tokenizer import MythosTokenizer
# 配置模型(必须与训练时一致)
cfg = MythosConfig(
vocab_size=199998,
dim=512,
n_heads=8,
n_kv_heads=4,
max_seq_len=256,
max_loop_iters=4,
prelude_layers=2,
coda_layers=2,
attn_type="gqa",
n_experts=4,
n_shared_experts=1,
n_experts_per_tok=2,
expert_dim=256,
lora_rank=8,
rope_theta=500000.0,
dropout=0.0,
kv_lora_rank=256,
q_lora_rank=512,
qk_rope_head_dim=32,
qk_nope_head_dim=64,
v_head_dim=64,
)
# 加载模型(推荐使用 80K checkpoint)
model = OpenMythos(cfg)
model.load_state_dict(torch.load("mythos_100m_mixed_80k.pt", map_location="cpu"))
model.eval()
# 推理
tokenizer = MythosTokenizer()
prompt = "Question: What are the symptoms of diabetes?\nAnswer:"
ids = tokenizer.encode(prompt)
x = torch.tensor([ids])
with torch.no_grad():
output = model.generate(x, max_new_tokens=100, n_loops=4, temperature=0.8)
print(tokenizer.decode(output[0].tolist()))
## 预期用途与限制
预期用途:
作为基础模型,用于微调特定领域的任务(如法律文书、医学问答等)
为研究者提供探索 RDT 架构学习动态的平台
作为教学工具,展示如何在小规模 GPU 上训练自定义架构的模型
作为 OpenMythos 架构的首个公开社区 checkpoint 系列
局限性:
由于模型规模和数据量的限制,生成的事实性知识可能不准确
不建议直接用于生产环境
模型在处理长程依赖和高度复杂的推理任务时仍有局限
当前版本仅支持 256 token 上下文,长文本能力有限
后续计划
30K 基础预训练
80K 强化专业领域训练(数据配比优化)
超算上继续训练(seq_len=1024, batch_size=2)
64GB 卡长上下文训练(seq_len=2048)
领域微调版本(法律专版、医学专版等)
模型量化(int8/int4)以支持更广泛的部署
致谢
感谢 Kye Gomez 开源 OpenMythos 架构
感谢 DeepSeek 及其他 AI 助手提供的技术支持
感谢开源社区提供的工具和数据集
特别感谢 Hugging Face 和所有数据集作者
引用
如果你使用了该模型或本训练配方,欢迎引用:
@misc{openmythos-100m-mixed,
author = {dgcrxs},
title = {OpenMythos-100M-Mixed: A 100M Recurrent-Depth Transformer Trained on Multi-Domain Data},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/dgcrxs/OpenMythos-100M-Mixed}},
}
许可证
本项目采用 Apache 2.0 许可证。
联系
如有问题或建议,欢迎在 GitHub Issues 或本仓库的讨论区留言。