1. 实验背景与目的

从一篇 CSDN 博客提出的波动力学语言模型(WDLM)出发,经过架构修复、互相借鉴、多轮优化,最终在 6M 和 20M 两个参数规模上与 Transformer baseline 和 OpenASH 系列进行全面对比。

测试模型

模型 序列交互 FFN 特色
Transformer (causal) O(S²) Multi-Head Attention GELU 全维度 token 交互
OpenASH (ReLU) cummax + gen_model + head_linear ReLU gate 原始 ASH 设计
OpenASH_V2 同上 sin+cos gate WDLM 启发的 PhaseGateFFN
WDLM-Real cummax + gen_model sin+cos Linear 全 Linear 模拟复数
WDLM-Neural (+gen) NeuralWaveStep + gen_model Cartesian update 无三角函数的轻量设计

2. 6M 参数对比 (H=128, L=2, S=256)

2.1 训练配置

  • 数据: science.jsonl (159K 条), 3000 子集
  • 优化器: AdamW, lr=5e-5, cosine schedule
  • AMP: bf16
  • 步数: 300 steps

2.2 结果

Model Params Loss Tok/s Tok/s/M
Transformer 6,350,336 6.77 90,288 14,218
WDLM-Neural (all-Linear) 6,053,634 6.82 181,594 29,998
WDLM-Real 6,250,250 7.56 96,152 15,384
OpenASH_V2 6,119,336 7.68 92,092 15,049

2.3 2000 步收敛

Model 2000步 Loss
Transformer 3.854
WDLM-Neural 3.879 (仅差 0.025)

结论: 6M 小模型下,WDLM-Neural (all-Linear) 与 Transformer 差不到 1%,速度却快 2x+。


3. 20M 参数对比 (H=256~288, L=9~12, S=384)

3.1 训练配置

  • 数据: MiniMind pretrain (1.16GB, 127万条) + SFT (1.62GB, 90万条)
  • 子集: 50000 条 pt + 50000 条 sft
  • Pretrain: 300 steps, seq=384
  • SFT: 200 steps, seq=512
  • lr=5e-4, cosine schedule

3.2 结果

Model Params PT Loss SFT Loss PT tok/s
OpenASH (ReLU) 20,240,364 5.64 3.60 9,260
WDLM-Neural+gen 20,040,740 5.52 3.75 45,484
WDLM-Real 20,435,516 5.83 3.81 10,948
Transformer 19,665,920 5.66 3.84 14,133
OpenASH_V2 20,229,996 18.29 16.89 ×

3.3 SFT Loss 排名

1. OpenASH (ReLU)     3.60  ← 最优
2. WDLM-Neural+gen    3.75
3. WDLM-Real          3.81
4. Transformer        3.84  ← 垫底

4. 长序列自回归生成 (Prefix=256, New=128)

Model Wall Time 处理 Token 数
Transformer (naive) 0.345s 40,896 (106x)
WDLM-Real (state) 0.193s 384
OpenASH_V2 (state) 0.289s 384

结论: cummax State 模式只处理新 token (O(1) 每步),而 Transformer 每次重算整个生长序列 (O(N·S))。序列越长差距越大。


5. 消融实验

5.1 gen_model 的作用

WDLM-Neural 版本 SFT Loss
朴素 cummax (v5) 6.47
+ gen_model (v6) 3.75
提升 -2.72

gen_model 的 5 分支乘加交互(t1=ab, t2=α₁b+α₂d, t3=a(α₃e+d), t4=b(c+e), t5=c*e)是 cummax 系架构的核心品质来源。去掉后 loss 暴涨 2.72。

5.2 三角函数开销

组件 有三角函数 无三角函数
编码 sin/cos + stack 1×Embedding
演化 cos(dp)*r - sin(dp)*i Linear(H,3H) → 线性旋转
干涉 sin/cos rotation + Linear 2×Linear → a*b
训练速度 65,000 tok/s 182,000 tok/s (+2.8x)

5.3 PhaseGateFFN vs ReLU FFN

OpenASH 版本 H=128, L=2 H=288, L=12
OpenASH (ReLU FFN) 正常收敛 SFT=3.60 (最优)
OpenASH_V2 (sin+cos) 正常收敛 SFT=16.89 (崩坏)

PhaseGateFFN 在小模型表现正常,但在 12 层深层大模型中梯度失稳。sin+cos 门控在深层堆叠时缺乏梯度缩放机制。

5.4 多头 cummax

WDLM-Real 尝试多头 (4 头) 版本后 loss 从 7.56 恶化到 8.24。H=128 拆 4 头后 head_dim=32 太小,cummax + gen_model 梯度不足。

5.5 evo_steps 迭代

WDLM-Real 同参数重复演化 (Neural ODE 风格):

evo_steps Loss 速度
1 4.80 33K tok/s
3 4.72 25K tok/s
5 4.65 18K tok/s

同参数多步迭代可在零参数成本下降低 0.15 loss。代价是速度线性下降。


6. 跨架构互鉴汇总

借鉴方向 来源 → 目标 机制 效果
sin+cos gate WDLM → OpenASH PhaseGateFFN 小模型 25%加速
gen_model OpenASH → WDLM 5分支乘加 loss -2.72
cummax state OpenASH → WDLM 增量推理 O(1) 每步
纯 Linear OpenASH → WDLM 去三角函数 2.8x 加速
evo_steps WDLM → — 同参数迭代 loss -0.15

7. 最终推荐

场景 推荐模型 理由
质量优先 OpenASH (ReLU) SFT loss 最优, head_linear 表达力强
速度优先 WDLM-Neural+gen 速度 ×2-4x, loss 接近最优
均衡之选 WDLM-Neural+gen 速度 + 质量同时领先
长序列推理 WDLM-Real / OpenASH State O(1) vs Transformer O(S²)
不推荐 OpenASH_V2 (PhaseGate) 深层大模型梯度失稳

8. 架构最佳实践

# 最优 block 结构 (融合所有验证过的改进):
class OptimalBlock(nn.Module):
    def forward(self, x, state=None):
        residual = x
        # 1. Per-token 特征更新 (无三角函数)
        x = Linear(H, 3H)(x)         # NeuralWaveStep
        x = x[:,:,:H] * x[:,:,H:2H]  # element interaction
        # 2. 序列交互 (gen_model 5分支 + cummax state)
        a,b,c,d = split(Linear(H,4H)(x))
        e = cummax(c, state)         # causal context
        x = out_proj(cat(a*b, α₁*b+α₂*d, a*(α₃*e+d), b*(c+e), c*e))
        # 3. 残差
        return norm(α*x + (1-α)*residual), state

9. 文件清单

F:\OpenASH2605\
├── open_ash.py              # 原始 OpenASH (ReLU FFN)
├── open_ash_v2.py           # OpenASH + PhaseGateFFN
├── wdlm_verification\
│   ├── wdlm.py              # 博客原版修复
│   ├── wdlm_fast.py         # 对角分解优化
│   ├── wdlm_real.py         # 全 Linear WDLM + state
│   ├── wdlm_lean.py         # OpenASH 借鉴版
│   ├── wdlm_neural.py       # 最终推荐 (Neural+gen_model)
│   ├── wdlm_turbo.py        # 研究原型 (complex ops)
│   └── compare_*.py         # 各种对比脚本
└── train_20m\
    ├── train.py              # 5 模型统一训练
    └── benchmark.py          # PPL/生成/State 基准

实验日期: 2026-05-31 | GPU: NVIDIA single GPU | PyTorch + CUDA bf16 AMP

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐