实验设计
核心假设:记忆与逻辑是两个独立可调的维度
记忆能力 ← 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.4K tok/s |
0.42x |
| 64 |
63.2K tok/s |
61.9K tok/s |
1.02x |
| 88 |
52.7K tok/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 稳定性好得多。
文件: 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,8
for L in [2, 4, 6, 8]:
m = build_frsmash(vs, 512, L, K=8)
train_one(m, ...)
# B. 记忆轴: L=4, H=256,384,512,640
for H in [256, 384, 512, 640]:
m = build_frsmash(vs, H, 4, K=8)
train_one(m, ...)
# C. 组件消融: 完整/去ASH/去Slow
configs = [完整, OpenASH_only, Slow_only]
for cfg in configs:
train_one(cfg, ...)
# D. 快慢比(HybridFRSM): d=512, 3F+1S,2F+2S,1F+1S,0F+1S
for nf, ns in [(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=4
for nf, na in [(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 的平均 loss
losses: 所有 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 |
消融实验脚本 |