概述
Qwen3.5 在线性注意力层中采用了 Gated DeltaNet 机制,替代传统的 Softmax Attention。该架构实现了推理时 O(1) 的复杂度,同时通过 Delta Rule 保持长期记忆的精确度。
架构全景
graph TD
classDef storage fill:#f9f,stroke:#333,stroke-width:2px,stroke-dasharray: 5 5;
classDef core fill:#ff9,stroke:#f66,stroke-width:3px,rx:10,ry:10;
classDef proj fill:#e1f5fe,stroke:#0277bd,stroke-width:2px;
classDef norm fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px;
Input(hidden_states B L D) --> InputPadding[apply_mask_to_padding_states]
InputPadding --> SplitNet
subgraph SplitNet [投影与分支]
direction TB
P_qkv(in_proj_qkv Linear):::proj --> QKV_raw(B 2K+V L)
P_z(in_proj_z Linear):::proj --> Z_raw(B L H Dv)
P_b(in_proj_b Linear):::proj --> B_raw(B L H)
P_a(in_proj_a Linear):::proj --> A_raw(B L H)
end
QKV_raw --> Transpose1[Transpose 1,2]
Transpose1 --> Conv1d(conv1d Depthwise Causal Conv):::proj
Conv1d --> Condition{use_precomputed_states?}
Condition -- Yes --> RecurrentPath[recurrent_gated_delta_rule]
C_Conv_In(conv_states):::storage -.-> RecurrentPath
C_Rec_In(recurrent_states):::storage -.-> RecurrentPath
Condition -- No --> ChunkPath[chunk_gated_delta_rule]
subgraph GatedDeltaNet [核心机制: Gated DeltaNet]
direction TB
RecurrentPath & ChunkPath --> QKV_post[Transpose & Split]
QKV_post --> Q(Query)
QKV_post --> K(Key)
QKV_post --> V(Value)
B_raw --> Sigmoid[Sigmoid] --> Beta
A_raw --> Softplus[Softplus + dt_bias]
LogA(A_log):::storage --> Exp[Exp & Neg]
Softplus & Exp --> Mul --> G(g - Gate)
Q & K & V & G & Beta --> CoreAlgo[[Delta Rule State Update & Retrieval]]:::core
end
CoreAlgo -.-> C_Conv_Out(Update Conv Cache):::storage
CoreAlgo -.-> C_Rec_Out(Update Rec Cache):::storage
CoreAlgo --> AttnOut(core_attn_out)
Z_raw --> Z(z - Gating)
subgraph OutputStage [输出与归一化]
direction LR
AttnOut --> Norm(RMSNormGated):::norm
Z --> Norm
Norm --> P_out(out_proj Linear):::proj
end
P_out --> Output(Output B L D)
逐层解析
1. 输入与投影
hidden_states 进入网络后,通过 4 个并行线性层 被映射到不同空间:
| 投影层 | 输出 | 用途 |
|---|---|---|
in_proj_qkv |
QKV 混合体 (B, 2K+V, L) | 注意力核心计算 |
in_proj_z |
z (B, L, H, Dv) | 输出门控信号 |
in_proj_b |
b → β (B, L, H) | 写入强度控制 |
in_proj_a |
a → g (B, L, H) | 遗忘门控 |
这种多分支投影设计让模型能独立控制信息的读写与遗忘。
2. 因果卷积 (Causal Conv1d)
QKV 混合体在进入注意力计算前,先经过 Depthwise Causal Conv1d。这一层帮助模型捕捉局部上下文信息,增强对相邻 token 的感知能力。
3. 缓存与推理/训练分支
这是关键的逻辑分支点。根据 use_precomputed_states 判断:
- 推理路径 (
recurrent_gated_delta_rule):使用前一时刻的缓存状态(conv_states+recurrent_states)进行增量更新,实现 O(1) 推理复杂度。 - 训练路径 (
chunk_gated_delta_rule):并行处理整个序列,适合训练和预填充阶段。
4. 核心机制:Gated DeltaNet
这是整个架构的核心。关键参数的生成路径:
- β (Beta):
b → Sigmoid → β,控制写入强度 - g (Gate):
a → Softplus + dt_bias与A_log → Exp & Neg相乘,控制遗忘门 - A_log:可学习的衰减矩阵,存储在模型参数中
Delta Rule 是这里的核心创新。与传统线性注意力简单累加 Key-Value 不同,Delta Rule 根据当前的 Key 对历史状态进行”修正”更新——类似于残差学习,但应用于状态矩阵。
5. 输出门控与 RMSNorm
核心注意力的输出不会直接传递,而是与 z 信号一起进入 RMSNormGated:
1 | output = out_proj(RMSNormGated(core_attn_out, z)) |
这个设计类似 SwiGLU 机制,通过 z 门控融合实现了更精细的信息流控制。
设计哲学
| 设计选择 | 解决的问题 |
|---|---|
| Delta Rule 替代简单累加 | 长期记忆精确度下降 |
| 因果卷积前置 | 局部上下文感知不足 |
| 推理/训练双路径 | 推理效率 O(1) vs 训练并行度 |
| 门控 RMSNorm | 信息流精细控制 |
| 可学习衰减矩阵 A_log | 自适应遗忘速率 |
整个架构的核心思想是:用卷积增强局部性,用 Delta Rule 增强长期记忆的精确度,通过门控机制控制信息流,同时实现推理时 O(1) 的复杂度。
这是线性注意力架构在工业级大模型中的又一次成功实践。