File size: 7,998 Bytes
b3e52f2 aef923d b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 aef923d b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 97a2e9e b3e52f2 | 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 | ---
license: apache-2.0
language:
- zh
- en
tags:
- open-mythos
- pytorch
- recurrent-depth-transformer
- mixture-of-experts
- small-model
- pretraining
- multi-domain
metrics:
- type: eval_loss
value: 4.87
pipeline_tag: text-generation
datasets:
- ShengbinYue/DISC-Law-SFT
- bigbio/pubmed_qa
- wikimedia/wikipedia
- flytech/python-codes-25k
- roneneldan/TinyStories
---
# 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](https://huggingface.co/datasets/ShengbinYue/DISC-Law-SFT) | 中文法律 | 20% | 25% |
| [pubmed_qa (context)](https://huggingface.co/datasets/pubmed_qa) | 英文医学 | 20% | 25% |
| [pubmed_qa (QA)](https://huggingface.co/datasets/pubmed_qa) | 家庭医生问答 | 10% | 15% |
| [wikipedia 20231101.zh](https://huggingface.co/datasets/wikimedia/wikipedia) | 中文百科 | 10% | 15% |
| [python-codes-25k](https://huggingface.co/datasets/flytech/python-codes-25k) | Python 代码 | 20% | 15% |
| [TinyStories](https://huggingface.co/datasets/roneneldan/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 下进行多深度训练,有望实现更强的深度外推。
## 使用方法
### 环境要求
```bash
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 或本仓库的讨论区留言。 |