实验设计
核心假设:记忆与逻辑是两个独立可调的维度
记忆能力 ← d_model(状态向量宽度), 越宽记住越多历史 逻辑能力 ← OpenASH 层数(L), 越深推理链越长 Fast 层 ← 替代 OpenASH 的轻量线性递推(快但逻辑弱)实验矩阵(5组 × 20项, 每组 3000 步 ~110M tokens)
| 实验组 | 固定 | 变量 | 验证问题 |
|---|---|---|---|
| A. 逻辑轴 | H=512, NS=1 | L=2,4,6,8 | 层数增加,loss 下降多少? |
| B. 记忆轴 | L=4, NS=1 | H=256,384,512,640 | d_model 增大,loss 下降多少? |
| C. 组件消融 | H=512 | 完整/去OpenASH/去Slow | 哪个组件贡献更大? |
| D. 快慢比 | d=512(HybridFRSM) | 3F+1S/2F+2S/1F+1S/0F+1S | 快慢最优比例? |
| E. 混合比 | H=512,L=4(FRSMASH) | 4F/3F+1A/2F+2A/1F+3A/0F+4A | Fast 替代 OpenASH 掉多少 loss? |
实验条件
- GPU: RTX 4090 D 24GB
- 数据: minimind_data pretrain_t2t_mini.jsonl, 30000 行缓存
- 序列: T=384, B=64
- 训练: 3000 steps × 64 × 384 ≈ 74M tokens/组
- 优化器: AdamW, lr=5e-4, cosine decay
- 总共: 20 组 × 74M tokens ≈ 1.5B tokens, 预估时间 3-4 小时
已有数据(400 步预测试)
E. 混合比(400 步, H=512, L=4)
| 配置 | 浅层 | 深层 | loss(400步) | tok/s |
|---|---|---|---|---|
| 0F+4A | — | 4×OpenASH | 4.50(最优) | 117K |
| 2F+2A | 2×Fast | 2×OpenASH | 4.82(+0.32) | 118K |
| 3F+1A | 3×Fast | 1×OpenASH | 4.80(+0.30) | 119K |
| 4F+0A | 4×Fast | — | 5.01(+0.51) | 121K |
结论:每多一层 OpenASH,loss 降 ~0.15;每多一层 Fast,速度微涨但 loss 涨 ~0.1。
FRSMASH-F vs FRSMASH-A 训练速度对比
| B | FRSMASH-F(Fast) | FRSMASH-A(OpenASH) | 加速比 |
|---|---|---|---|
| 32 | 21.8K tok/s | 51.4Ktok/s | 0.42x |
| 64 | 63.2Ktok/s | 61.9K tok/s | 1.02x |
| 88 | 52.7Ktok/s | 8.3K tok/s | 6.33x |
FRSMASH-F vs FRSMASH-A 推理速度
| 模型 | tok/s | ms/token |
|---|---|---|
| FRSMASH-F | 324 | 3.1ms |
| FRSMASH-A | 247 | 4.1ms |
预测结果
A. 逻辑轴(预测)
| L | 参数 | 预测 loss(3000步) | 趋势 |
|---|---|---|---|
| 2 | ~27M | ~5.2 | 弱逻辑 |
| 4 | ~33M | ~4.5 | 中等 |
| 6 | ~39M | ~4.0 | 强逻辑 |
| 8 | ~45M | ~3.7 | 推理深度最强 |
预测: OpenASH 层数每增加2层,loss 下降约0.4-0.5,呈对数递减趋势。
B. 记忆轴(预测)
| H | 参数 | 预测 loss(3000步) | 趋势 |
|---|---|---|---|
| 256 | ~14M | ~5.5 | 窄记忆 |
| 384 | ~22M | ~5.0 | 中等 |
| 512 | ~33M | ~4.5 | 宽记忆 |
| 640 | ~47M | ~4.1 | 最强记忆 |
预测: d_model 每增加 128,loss 下降约0.3-0.4,线性递减。
C. 组件消融(预测)
| 配置 | 预测 loss | 说明 |
|---|---|---|
| 完整 | ~4.5 | 基准 |
| 去Slow(纯OpenASH) | ~4.8 | 缺长程记忆 |
| 去OpenASH(纯Slow) | ~5.5 | 缺逻辑推理 |
预测: OpenASH 贡献约0.7 loss,Slow 贡献约0.3 loss。
D. 快慢比(预测)
| 配置 | 预测 loss(3000步) |
|---|---|
| 0F+1S(纯慢=V6) | ~5.5 |
| 1F+1S | ~5.2 |
| 2F+2S | ~5.0 |
| 3F+1S | ~4.9 |
预测: 3F+1S 最优——1 个 Slow 尺度足够选择性记忆,多 Fast 尺度增加即时预测能力。
E. 混合比(预测,3000 步)
| 配置 | 预测 loss |
|---|---|
| 4F+0A | ~5.2 |
| 3F+1A | ~4.8 |
| 2F+2A | ~4.7 |
| 1F+3A | ~4.6 |
| 0F+4A | ~4.5(最优) |
预测: 2F+2A 性价比最高——loss 比 0F+4A 仅高 0.2,但大 batch 稳定性好得多。
实验代码 (ablation.py)
文件:F:\OpenASH2605\frsm_v6_moe\ablation.py
运行
F:\OpenASH\.venv\Scripts\python.exe F:\OpenASH2605\frsm_v6_moe\ablation.py代码结构
# 数据: cached pretrain 30000 lines, T=384, B=64# 训练: 每组 3000 steps, AdamW lr=5e-4, cosine warmup# A. 逻辑轴: H=512, L=2,4,6,8forLin[2,4,6,8]:m=build_frsmash(vs,512,L,K=8)train_one(m,...)# B. 记忆轴: L=4, H=256,384,512,640forHin[256,384,512,640]:m=build_frsmash(vs,H,4,K=8)train_one(m,...)# C. 组件消融: 完整/去ASH/去Slowconfigs=[完整,OpenASH_only,Slow_only]forcfginconfigs:train_one(cfg,...)# D. 快慢比(HybridFRSM): d=512, 3F+1S,2F+2S,1F+1S,0F+1Sfornf,nsin[(3,1),(2,2),(1,1),(0,1)]:m=build_hybrid(vs,512,nf,ns,K=8)train_one(m,...)# E. 混合比(FRSMASH Hybrid): H=512, L=4fornf,nain[(4,0),(3,1),(2,2),(1,3),(0,4)]:m=build_hybrid_ash(vs,512,nf,na,K=8)train_one(m,...)结果输出
训练结果自动保存到ablation_results.json,包含每组的:
final_loss: 最后 log interval 的平均 losslosses: 所有 log interval 的 loss 列表(画图用)time: 训练耗时params: 参数量config: 配置描述
辅助构建函数
| 函数 | 用途 |
|---|---|
build_frsmash(vs,H,L) | 标准 FRSMASH(OpenASH backbone + Slow) |
build_ash_only(vs,H,L) | 纯 OpenASH, 无 Slow memory |
build_slow_only(vs,D) | 纯慢尺度, 无 OpenASH(≈V6) |
build_hybrid(vs,D,nf,ns) | HybridFRSM(Fast/Slow 尺度比) |
build_hybrid_ash(vs,H,nf,na) | FRSMASH Hybrid(Fast/OpenASH 混合) |
附录: 关键模型文件索引
| 文件 | 内容 |
|---|---|
frsm_v6a_fast.py | 原始 V6: 4尺度全内容门控,串行 |
frsmash.py | FRSMASH: OpenASH cummax + Slow 记忆 |
frsmash_f.py | FRSMASH-F: Fast 线性递推替换 cummax |
frsm_linear.py | HybridFRSM: 快慢尺度分离 |
frsm_vs_transformer_report.md | Dense MoE vs Transformer 全维度对比 |
frsm_evolution_report.md | 架构演进路线与速度对比 |
frsm_v6_moe/ablation.py | 消融实验脚本 |