Skip to content

GDN(Gated DeltaNet)——Qwen3.8 Flash Next 的递归线性注意力层:不存 KV cache,历史压缩进每层固定大小的状态矩阵,用 delta 规则做"先探测、再写残差"的可改写记忆,配逐头衰减门与 sigmoid 输出门。每 4 层里 3 层是 GDN,第 4 层留给门控 GQA + QSA 稀疏注意力负责精确检索。

它解决什么 ​

与 KDA(GLM 5.3)完全同一类问题:标准注意力的 kv-cache 随 token 数线性增长。GDN 把"对历史的加权检索"改写为递归状态更新——每层 48 个 v 头各持一个 128×128 的 f32 状态矩阵(48 v 头共享 16 个 k 头,v 头 j 配 k 头 j % 16),每 token O(1) 刷新,内存与上下文长度无关。Qwen3.8 48 个 trunk 层里 36 层是 GDN——3/4 的层零 KV,这是它敢把原生上下文做到 262144 token 的底气。混合架构兜底也同款:每第 4 层保留完整(但块稀疏)注意力,把精确回忆补回来。

递归更新五步(qwen4_ref_linear,ds4.c:67353) ​

  1. 深度 4 短卷积:q/k/v 过 3 步滚动卷积历史 + silu——极短程局部记忆
  2. 归一化:q、k 逐头 L2 归一化,q 乘 1/√128
  3. 逐头衰减:g = exp(A · softplus(a + dt_bias))——可学习遗忘门
  4. Delta 规则:H *= g; δ = (v − H·k) · sigmoid(β); H += k ⊗ δ; o = H·q——先用 k 探测状态里已记住的,只把残差写回去;对比朴素线性注意力 H += k ⊗ v(只稀释、永不修正),delta 规则能改写已存关联
  5. 输出门:RMSNorm 后乘 sigmoid(z)(lin_gate 投影)

数学骨架与 KDA 一致;工程差异在头组织(v 头多于 k 头、权重平铺)、状态布局([Hv][128][128] f32)与卷积/门控的投影来源(布局遵循 llama.cpp qwen4exp GGUF:norm gamma 折叠成 1+w,ssm_a 存 -exp(A_log))。

执行侧 ​

  • prefill 是逐 token 扫描(scan):一个 token 的输出依赖前一个 token 之后的状态,无法在 token 维度并行——Qwen prefill 的层内并行度远低于纯注意力模型,靠 T 行宽批(Part 6 §4s)摊
  • decode / 批处理:GDN 状态天然"每 session 一份",批处理时 dense 权重工作(投影、MoE)按行共享,递归步通过行表(ds4_gpu_qwen4_gdn_row,metal/qwen4.metal)逐 session 读写各自状态
  • 会话快照:状态进 checkpoint payload;推测解码拒绝草稿时恢复 pre-verify 状态快照而不是重放图(Part 4 §5)
  • 磁盘 KV 检查点包含递归状态:回退到更早位置时,保留下来的前缀在下一次求值时重放

相关概念 ​

  • kda — GLM 5.3 的同族层:同样的 delta 规则 + 门控思想,不同的头组织与精度策略
  • moe — Qwen3.8 的 512 专家取 10 + 1 共享,与 GDN 同为省算力/省内存手段
  • engram — Qwen PLE 与 V4.1 Engram 同构的盘上 n-gram 记忆;GDN 解决"上下文 KV",PLE 解决"知识外置"
  • Part 3 §9 — Qwen3.8 完整架构(GDN + 门控 GQA/QSA + PLE)