基于 Mixture of Experts (MoE) 的自进化 AI 训练系统。模型在小世界模拟环境中竞争生存,随后使用自定义数据集完成特定任务训练。
| 模块 |
说明 |
Expert |
两层 FFN + GELU 激活 |
MoE |
Top-k 路由 + Switch Transformer 辅助损失(负载均衡) |
HierarchicalMoE |
两级 MoE:第一级 num_groups 组 × experts_per 专家 → 跨组聚合。支持数值/文本双模式 |
SmallWorld |
物理世界容器,含食物系统、AI 感知与灾害系统 |
Disaster |
四级自然灾害(旱灾/洪水/地震/核战),间隔触发、范围伤害、概率生效 |
创建 HierarchicalMoE 模型
↓
阶段1:小世界竞争
├── 每个 AI 复制一份全局模型权重
├── AI 自主感知环境、移动、觅食、竞争
├── 移动/时间步扣分,吃食物 +10 分
├── 无 AI 死亡达 30 步触发自然灾害
└── 每 epoch 结束后从最佳存活者蒸馏到全局模型
↓ … 循环 N 个 epoch …
保存 moe_world.pt
↓
阶段2:用户数据训练
├── 数值任务(回归/分类)
└── 文本任务(对话/摘要/翻译/问答)
↓
保存 moe_final.pt
pip install torch pandas pygame pymunk
交互式输入所有参数,或直接回车使用默认值。
| 参数 |
说明 |
默认值 |
| 输入维度 |
模型输入特征维度 |
64 |
| 第一级 MoE 组数 |
两级 MoE 第一层的组数 |
4 |
| 每组专家数 |
每组中的专家数量 |
8 |
| Top-K |
每个 token 激活的专家数 |
2 |
| 专家隐藏维度 |
每个 Expert 中间层维度 |
128 |
| 参数 |
说明 |
默认值 |
| 世界宽度/高度 |
地图尺寸 |
1200×800 |
| 初始食物数 |
地图中食物数量 |
50 |
| 初始 AI 数 |
每 epoch 初始 AI 数量 |
20 |
| Epoch 数 |
小世界竞争轮数 |
5 |
| 每 epoch 最大步数 |
0=不限制 |
0 |
| 灾害 |
持续步数 |
伤害 |
触发概率 |
冷却 |
| 旱灾 |
40 步 |
5 |
30% |
20 步 |
| 洪水 |
50 步 |
8 |
40% |
20 步 |
| 地震 |
60 步 |
15 |
50% |
20 步 |
| 核战 |
80 步 |
50 |
60% |
20 步 |
触发条件:连续 30 步无 AI 死亡。
| 任务 |
CSV 格式 |
dialogue |
列1=问句,列2=答句 |
summarization |
列1=原文,列2=摘要 |
translation |
列1=源语言,列2=目标语言 |
qa |
列1=问题,列2=答案 |
tabular_regression |
前 n-1 列为特征,最后一列为数值目标 |
tabular_classification |
前 n-1 列为特征,最后一列为类别标签 |
self-intelligence/
├── moe.py # MoE 模型定义 + 小世界模拟
├── train.py # 交互式训练脚本
├── README.md # 本文件
├── moe_world.pt # 小世界阶段模型(输出)
└── moe_final.pt # 最终模型(输出)
- 精简无冗余:纯 PyTorch,无多余抽象层
- 可解释性:灾害系统、自然选择压力让 AI 行为可观测
- 双重训练:小世界竞争塑造基础能力,任务数据定向微调
- 支持扩展:文本模式内置 Embedding + Output 投影,可替换为预训练词向量