FRSMASH v3.7:当门控机制成为长上下文的枷锁——一个极简修复背后的架构洞见

摘要

本文报告了 FRSMASH v3.6 至 v3.7 的一次关键架构演进。在 v3.6 中,用于融合 SSM 骨干与 SlowMemory 分支的 Gated Fusion 机制在训练中坍缩至 gate=1.0,导致 SlowMemory 分支贡献完全归零。根因分析揭示:SlowMemory 输出幅度高达 SSM 骨干的 355 倍,门控机制被迫饱和以保护骨干信号。v3.7 以极简修复回应这一发现------移除门控、添加 RMSNorm、改为 DirectAdd 残差直加。三组随机种子的预训练实验表明:短上下文(seq=512)二者持平;长上下文(seq=4096)v3.7 相对 v3.6 取得 1.4% 的困惑度降低 ,且三组种子全部胜出。这一改进的本质在于:多尺度时间互补 ------快衰减的 SSM 骨干捕获高频细节,慢衰减的 SlowMemory 保留长程趋势,二者在长上下文中形成互补,而门控机制在短序列训练中习得的"gate=1"策略无法泛化至长序列。FRSMASH v3.7 以删除 2 行、新增 1 行的改动量,验证了"少即是多"的架构设计哲学。

1. 引言:从 v3.6 的门控坍缩说起

FRSMASH v3.6 采用三路并行架构:SSM 骨干 (8 层,54.4M 参数)作为主特征提取器,SlowMemory (0.2M 参数)作为慢衰减记忆模块,GLA recall(1.3M 参数)作为快速召回通路。三路信号的融合依赖一个门控机制:

fused = norm ( gate ⋅ x ash + ( 1 − gate ) ⋅ x mem + x emb ) + x recall \text{fused} = \text{norm}\big(\text{gate} \cdot x_{\text{ash}} + (1-\text{gate}) \cdot x_{\text{mem}} + x_{\text{emb}}\big) + x_{\text{recall}} fused=norm(gate⋅xash+(1−gate)⋅xmem+xemb)+xrecall

其中 gate = sigmoid ( MLP ( x ash , x mem ) ) \text{gate} = \text{sigmoid}(\text{MLP}(x_{\\text{ash}}, x_{\\text{mem}})) gate=sigmoid(MLP(xash,xmem))。

然而,训练后 gate 在所有位置、所有序列长度(512--8192)上均坍缩至 1.0000------SlowMemory 的贡献为 0%。这引发了一个根本性问题:是 SlowMemory 本身无用,还是门控机制阻碍了它的表达?

2. 根因诊断:gate=1 是"正确"的短视决策

研究团队通过系统的排除法诊断了 gate 坍缩的根因:

假设 实验 结果
路由坍缩 负载熵 2.225/2.303 ❌ 路由均衡
状态冗余 范数 CV 1.127 ❌ 状态分化
幅度失配 x_mem 162k vs x_ash 457(355×) ✅ 核心发现
输入源问题 CrossFeed(x_ash→SlowMem) 仍 gate=1
功能冗余 8 层骨干 vs 1 层旁路 ✅ 骨干碾压

核心发现:SlowMemory 的输出幅度高达 SSM 骨干的 355 倍,无任何归一化处理。门控机制为了"保护"骨干信号不被淹没,被迫将 gate 推向饱和区(logit~1635,sigmoid 完全饱和)。

但更深层的洞见在于:gate=1 在短上下文中是"正确"的决策 ------当序列仅有 512 token 时,8 层 SSM 骨干的 4096 维状态足以完整编码全部信息,SlowMemory 确实是冗余的。然而,当序列长度扩展至 4096 时,骨干状态必须压缩信息,远处细节开始丢失------此时 SlowMemory 的慢衰减特性恰好补上了这一空缺。遗憾的是,gate 是 per-token 函数,在短序列上习得的"gate=1"策略被冻结到了所有长度,它没有"序列长度"的概念,无法自适应地重新打开 SlowMemory

3. v3.7:DirectAdd Fusion------删除 2 行,新增 1 行

v3.7 的修复极简到令人惊讶:

删除

python 复制代码
gate = sigmoid(MLP([x_ash, x_mem]))
fused = norm(gate * x_ash + (1 - gate) * x_mem + x_emb) + x_recall

新增/修改

python 复制代码
x_mem = mem_norm(mem_proj(slow_cell(x_emb)))  # 加 RMSNorm
fused = norm(x_ash + x_mem + x_emb) + x_recall  # 直接相加,无 gate

参数变化:-0.13M(删除 fusion_gate)+ 0.0005M(新增 RMSNorm)≈ 几乎不变 。改动量:删除 2 行,新增 1 行

这一设计的核心逻辑是:

  1. RMSNorm 修复幅度:将 SlowMemory 的输出归一化,消除 355× 的幅度失配;
  2. 删除门控:强制所有分支在任何长度下均有贡献------短上下文下额外的信号只是噪声(无害),长上下文下则形成关键互补。

4. 实验验证:优势随上下文长度增长

研究者在 minimind 预训练设置 (80M 参数,d=512,L=8)下,使用 3 组随机种子 对 v3.6 与 v3.7 进行了系统对比:

序列长度 v3.6(gate)均值±std v3.7(DirectAdd)均值±std 提升 3 种子胜场
512 37.18 ± 0.13 37.20 ± 0.12 -0.05%(噪声) 0/3
2048 103.01 ± 1.13 102.21 ± 1.23 -0.8% 2/3
4096 79.97 ± 1.53 78.89 ± 1.41 -1.4% 3/3

关键观察

  • 短上下文(512):v3.7 ≈ v3.6,SlowMemory 冗余,加不加都一样;
  • 中上下文(2048):v3.7 开始显现优势,困惑度降低 0.8%;
  • 长上下文(4096) :v3.7 全面胜出,三组种子全部优于 v3.6,困惑度降低 1.4%。

优势随上下文长度单调增长------这正是多尺度时间互补假说的最强证据。

5. 原理:多尺度时间互补

5.1 两种递归的遗忘曲线

机制 遗忘门 衰减率 时间频率
SSM 骨干(多槽) sigmoid 门控,多槽多速率 整体偏快 高频(近期细节)
SlowMemory(线性) A=sigmoid,bias=2(A≈0.88) 低频(长程趋势)

SSM 骨干的多槽门控机制使其能够以多速率遗忘信息,整体偏好快速衰减,擅长捕获中近程的高频细节。而 SlowMemory 采用线性递归, A ≈ 0.88 A \approx 0.88 A≈0.88,呈 EMA-like 慢衰减,天然适合保留长程低频趋势。

5.2 短上下文 vs 长上下文

  • 短序列(seq=512):骨干状态 4096 维远大于序列长度,可以完整编码全部信息,SlowMemory 的高层趋势信息与骨干的低层细节信息高度冗余------此时 gate=1 是最优策略;
  • 长序列(seq=4096) :骨干状态被序列长度所限,必须进行信息压缩,远处细节不可避免地丢失。SlowMemory 的慢衰减( A ≈ 0.88 A \approx 0.88 A≈0.88,半衰期约 5 token,且因 A A A 为 input-dependent 可更慢)恰好保留了骨干丢弃的长程趋势------二者形成真正的互补。

DirectAdd 的本质:去掉 gate,强制 SlowMemory 在所有长度上均有贡献。短上下文下,多出来的信号只是不影响性能的噪声;长上下文下,它成为骨干丢失信息的关键补充。

6. 消融实验:验证设计的必要性

6.1 砍掉 SlowMemory(NoSlow)

序列 v3.6(gate=1,SlowMem=0%) NoSlow(无 SlowMem)
512 36.71 37.25(噪声)
4096 123.77 124.33(噪声)

确认:v3.6 的 SlowMemory 确实贡献为 0%,砍掉后困惑度几乎不变。

6.2 放大 GLA recall(d_h 64→128,4× 状态)

d_h seq512 ppl seq4096 ppl
64(原版) 37.28 78.82
128(4×) 36.92(-1.0%) 79.91(+1.4%)

放大 recall 通路未带来可靠的长上下文提升,说明问题不在 recall 容量。

6.3 其他尝试均未超越 DirectAdd

  • State-MoE(10× SlowMemory 状态):dense 版全强度下 seq512 无效(-1.8%);
  • GRU 逻辑状态 (替代线性 SlowMemory):ppl 37.20 ± 0.48,略差于 vanilla,且 3.5× 更慢
  • TriCross 串联 (SSM→SlowMem→GLA 串联):ppl 39.97 ± 0.53,显著更差 -7.5%(信息逐级衰减)。

消融实验一致指向:DirectAdd 是长上下文场景下的最优融合方式

7. 结论与启示

FRSMASH v3.7 的故事揭示了一个反直觉的架构洞见:门控机制在短上下文训练中习得的"最优策略",在长上下文中恰恰成为性能瓶颈。模型在短序列上正确地绕过了冗余的 SlowMemory,却也因此丧失了在长序列上利用其互补信息的能力------而模型本身并不具备"序列长度"的概念来调整这一策略。

v3.7 的修复以 删除 2 行、新增 1 行 的极简改动,实现了:

  • 短上下文性能持平(证明改动无害);
  • 长上下文困惑度持续降低(seq4096 达 -1.4%,三组种子全胜);
  • 零参数增长(-0.13M + 0.0005M ≈ 不变)。

更广泛地看,这一工作提醒我们:在评估架构设计时,必须警惕训练分布与推理分布之间的"长度鸿沟" 。在短序列上表现良好的归纳偏置,可能在长序列上成为桎梏。FRSMASH v3.7 给出的答案是:当你不确定门控该开该关时,也许直接相加就是最好的门控


项目地址github.com/dfytensor/frsmash3.7

核心文件

  • PAPER.md --- 完整论文
  • src/frsmash_directadd.py --- v3.7 DirectAdd 架构实现
  • experiments/ --- 训练/评测/消融脚本

环境依赖 :PyTorch 2.x + CUDA,fla(flash-linear-attention),jieba

相关推荐
Niuguangshuo1 小时前
TTS 架构的六代演进(一):三段式链路与评测框架
架构
志凌海纳SmartX1 小时前
构建 Agent Ready 的企业云基础设施(白皮书下载)
人工智能·ai·agent·smartx·企业云·榫卯企业云
AI科技星1 小时前
乖乖数学全域超复数统一场论:未来可能形成的历史地位
人工智能·机器学习·金融·乖乖数学·全域数学
惢雨1 小时前
AI 开发技巧(实战技巧)
人工智能·ai编程
霸道流氓气质2 小时前
Java 工程师 AI 智能体学习路线 · 阶段 1:AI / LLM 基础认知 详解
java·人工智能·学习
武子康2 小时前
调查研究-224 Prefill 与 Decode 分离:高并发 LLM Serving 的下一层架构
人工智能·ai·架构·llm·gpu·vllm·sglang
ting94520002 小时前
技术解析:Owl Alpha 底层架构与 OpenRouter 模型网关全链路实现(无营销、纯技术向)
人工智能·架构
水如烟2 小时前
孤能子视角:三十六计之抛砖引玉——涌现捕获
人工智能
格子生意经2 小时前
GEO系统如何提升AI引荐率实战解析
人工智能