稀疏增量记忆:通过稀疏性扩展线性RNN的状态 Sparse Delta Memory: Scaling the State of Linear RNNs through Sparsity
通过稀疏寻址将线性RNN状态容量提升千倍
前置知识
线性注意力
线性注意力机制将标准softmax注意力中的指数操作替换为更简单的线性相似度计算,通过维护一个固定大小的记忆矩阵来存储键值对的外积。这种设计使得每个token的计算和内存开销保持常数,而不随序列长度增长。读写操作通过查询与记忆矩阵的交互完成,相比传统attention,线性注意力牺牲了一定的表达能力以换取计算效率。
本文的SDM架构基于线性注意力,理解其递归状态更新机制是理解GDN和SDM区别的基础。SDM的核心改进正是将线性注意力的稠密状态更新替换为稀疏访问模式。
Gated DeltaNet (GDN)
Gated DeltaNet是线性注意力的改进版本,引入了delta规则来减少记忆中的干扰。在写入新关联之前,先检索并减去与该键关联的现有值,从而保持记忆范数有界。状态更新包含遗忘门和输入门,这种设计使GDN在保持线性注意力的常数计算复杂度的同时,提供了更好的记忆管理和更稳定的训练。
SDM直接基于GDN架构,使用相同的delta更新规则但将其稀疏化。理解GDN的更新机制对于理解SDM如何在其基础上扩展至关重要。
Product-Key Memory (PKM)
Product-Key Memory是一种高效的稀疏索引方案,允许从N个可能的内存槽中索引k个任意槽位,同时使计算复杂度相对于N呈亚线性增长。给定两个分数向量,通过外和得到N个分数,由于topk操作的性质,我们只需要计算k的平方个分数而不是全部N个,时间复杂度为O(根号N乘以d加上k的平方)。这使得PKM可以扩展到约100万的内存规模。
SDM的核心创新正是使用PKM的稀疏索引方案来选择要更新的内存槽,这是实现大规模状态同时保持常数FLOPs的关键技术。
isoFLOP设计
isoFLOP(相同浮点运算数)设计是一种实验控制方法,确保不同模型架构在相同的计算预算下进行比较。这意味着所有对比模型具有相同的参数数量和每个token的FLOPs开销,任何性能差异都可以归因于架构设计而非计算资源分配的差异。在本文中,作者精心设计SDM的维度配置,使其与GDN基线在FLOPs上完全匹配。
本文所有性能比较都基于isoFLOP设计,理解这一概念对于正确解读实验结果和SDM的实际优势非常重要。
滑动窗口注意力
滑动窗口注意力是一种局部注意力机制,限制每个token只能注意力一定窗口内的邻近token(通常为128或256个位置)。这显著降低了计算复杂度从O(n的平方)到O(n乘以w),其中w是窗口大小。在SDM的混合架构中,滑动窗口注意力作为局部层处理短期依赖,而稀疏delta内存层作为全局层处理长期依赖。
SDM采用混合架构设计,理解滑动窗口注意力如何与稀疏内存层协同工作,有助于理解SDM如何在保持效率的同时兼顾短期和长期依赖建模。
研究动机
现有方法在处理长上下文任务时面临根本性的权衡困境。传统的基于softmax注意力的Transformer架构虽然在长上下文召回任务上表现优异,但其Key-Value缓存的内存和计算开销都随序列长度线性增长,处理100万token的序列需要巨大的内存。这种无界增长限制了在代码库或扩展推理轨迹等超长序列上的上下文学习能力。相反,线性RNN(如Mamba2和GDN)通过将信息压缩到固定大小的隐藏状态中,实现了与序列长度无关的常数内存和计算,可以处理任意长度的上下文。然而,它们的极小状态尺寸严重限制了召回能力,研究表明长上下文性能从根本上受限于隐藏状态大小。简单地增加RNN内存大小会提高召回,但现代线性RNN如Mamba2和GDN被稠密状态更新所瓶颈,随着状态大小增长,计算开销变得极其昂贵。具体来说,当状态大小从64增加到128时,每个token的FLOPs会翻倍,这使得在保持合理效率的同时扩展状态变得不可行。
本文的目标是本文的目标是设计一种新架构,能够在保持线性RNN常数计算和内存优势的同时,将隐藏状态容量提升到传统线性RNN无法企及的规模。具体来说,作者希望解决GDN架构中稠密状态更新的瓶颈,通过稀疏化寻址方案,在相同FLOPs预算下实现三个数量级的内存状态大小增长。这不仅要在长上下文召回任务上超越现有线性RNN,还要在全注意力的基础上改善短上下文任务性能。此外,作者还探索了将大规模初始状态作为可学习参数的可能性,使其能够在预训练期间存储知识并在测试时重用,从而在广泛的常识和推理任务上进一步提升性能。
与已有工作不同的是,本文的独特切入角度在于观察到GDN的更新规则可以被稀疏化,这为突破状态大小限制提供了全新路径。与之前的工作如Fast-Weight Product Key Memory不同,SDM直接基于GDN的delta规则进行稀疏化,保留了其防止干扰和保持记忆范数有界的核心优势。更重要的是,本文坚持严格的isoFLOP比较,确保所有性能提升都源于更大的内存容量而非额外的计算资源。这种设计思路与现有方法形成鲜明对比:大多数相关工作要么牺牲计算效率,要么无法在同等FLOPs下公平比较。SDM的创新之处在于它巧妙地结合了线性注意力的递归计算、GDN的delta更新规则,以及PKM的高效稀疏索引,创造出一种既保持计算效率又能提供巨大记忆容量的新架构。
核心方法
Sparse Delta Memory (SDM) 的整体思路是通过稀疏寻址方案替代GDN中的稠密键值外积,实现向大规模显式内存的稀疏读写。直觉上,SDM维护一个包含N个槽位的显式内存表 $M_t \in \mathbb{R}^{N \times d_v}$,但在每个时间步只更新其中W个选定的槽位,读取时也只查询其中R个槽位。这种设计使得计算复杂度从 $O(N \times d_v)$ 降低到 $O((W+R) \times d_v)$,与总内存大小N无关,因此可以在不增加FLOPs的情况下将N扩展到非常大的规模。技术路线上,SDM在每个层中首先通过Product-Key Memory机制从输入生成稀疏的写键和读查询,然后应用带门控的delta更新规则仅到选定的W个写槽位,最后通过加权求和从R个读槽位检索信息。整个过程保持了GDN防止记忆干扰的核心优势,同时通过稀疏访问实现了内存容量的数量级扩展。
SDM的核心创新点是将GDN的delta更新规则与Product-Key Memory的稀疏索引机制相结合,创造出一种既能保持计算效率又能提供巨大记忆容量的新架构。与GDN对所有状态位置进行稠密更新不同,SDM在每个时间步仅选择性地更新W个槽位,这突破了传统线性RNN中状态大小与FLOPs之间的线性耦合关系。与PKM作为静态参数内存不同,SDM的内存是动态更新的,能够存储上下文信息,并且初始状态可以作为可学习参数来存储预训练知识。这种动态加预训练的混合内存模式是SDM与已有方法的本质区别,使其既能像线性RNN一样高效处理任意长度序列,又能像全注意力模型一样在长上下文任务上表现出色,甚至通过学习初始状态在短上下文任务上超越全注意力。
方法步骤详情
SDM的完整方法流程包含四个主要步骤,每步都有明确的输入输出和具体操作。第一步是稀疏键选择,从输入 $x_t \in \mathbb{R}^d$ 通过学习的线性投影 $W_k, W_q \in \mathbb{R}^{d \times 2\sqrt{N}}$ 生成写键和读查询。每个投影向量被分成两半用于键和查询,它们的外和产生N个分数,每个对应一个内存槽位。对写分数应用top-W,对读分数应用top-R,从N个可能槽位中选择W个写索引和R个读索引,计算复杂度为 $O(\sqrt{N} \times d + W^2 + R^2)$。第二步是带门控的delta写入,对于每个选定的写槽位,首先应用遗忘门 $\tilde{M}_t[i] \leftarrow \alpha_t \cdot M_{t-1}[i]$,其中 $\alpha_t = \exp(-A \cdot \text{softplus}(W_a x_t + b_d^t))$ 是每头的遗忘门。然后应用delta更新 $M_t[i] \leftarrow \tilde{M}_t[i] + \beta_t \cdot k_t^{(i)} \cdot (v_t - \tilde{M}_t[i])$,其中 $\beta_t = \sigma(W_b x_t)$ 是输入门。第三步是稀疏读取,通过R个选定读槽位的加权和从内存检索 $y_t = M_t^\top q_t = \sum_{i \in I_r^t} q_t^{(i)} \cdot M_t[i]$。第四步是标准化、门控和头部混合,检索的内存通过RMS-Norm标准化,用门控向量进行元素级门控,最后通过投影混合所有SDM头的输出产生最终层输出。
技术新颖性
SDM的技术新颖性体现在多个方面。首先,它是首个将GDN的delta规则成功稀疏化的工作,证明了防止记忆干扰的机制可以与稀疏访问模式兼容。其次,SDM采用了动态加静态的混合内存设计:内存既可以通过delta规则动态更新存储上下文信息,又可以通过学习初始状态存储预训练知识。第三,SDM在严格的isoFLOP约束下实现了内存容量数千倍的增长,这在稀疏神经网络领域是罕见的。第四,SDM的自适应内存访问模式显示了智能的行为:写分布比读分布更集中,读分布更均匀,并且读写分布会相互适应。最后,SDM的训练效率优化也很新颖,使用chunk-wise并行(通过GDN/FLA的WY表示)和内存高效的反向传播,使得大规模训练成为可能。当 $H=1$ 时,SDM的内存大小按照公式 $M_{\text{size}} = \frac{(d_{\text{total}}^{qk}/2H)^2 \cdot d_{\text{total}}^v}{4H^2}$ 缩放,这表明通过调整头数H可以在不增加FLOPs的情况下控制状态大小。
实验结果
实验结果表明SDM在多个维度上都显著超越了基线模型。在缩放定律分析中,SDM在所有计算水平上都优于GDN,缩放规律的相关系数0.999表现出高度可预测性。当在8B规模训练时,SDM达到了显著更低的损失(2.253 vs GDN的2.298),甚至超过了8B全注意力模型。在短上下文任务上,SDM在1.4B和8B两个规模上都达到了更高的平均准确率。在长上下文检索的RULER基准测试中,SDM在1.4B和8B规模上分别达到31.2和50.2的总分,远超GDN的20.0和34.2。在代码数据的困惑度分析中,SDM一致地实现了比Mamba2和GDN更低的困惑度,在长上下文上降低到接近2.0。消融研究验证了SDM的各个设计选择:没有学习初始状态的SDM仍然显著优于GDN,确认状态大小是性能的主要驱动因素。内存状态大小的消融显示了单调的性能改善,确认更大的内存状态改善建模。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| RULER long-context recall (1.4B scale) | Average accuracy across 4k-131k lengths | 31.2 | GDN: 20.0 | +11.2 points (56% relative improvement) |
| RULER long-context recall (8B scale) | Average accuracy across 4k-131k lengths | 50.2 | GDN: 34.2 | +16.0 points (47% relative improvement) |
| Code perplexity (1.4B, 512k tokens) | Perplexity (lower is better) | ~2.0 | Mamba2/GDN: ~2.2-2.3 | ~10-20% relative reduction |
| Validation text NLL (8B scale) | Negative log-likelihood (lower is better) | 2.253 | GDN: 2.298, FullAttn: 2.285 | 0.045 better than GDN, 0.032 better than FullAttn |
| Average accuracy (8B scale, 15 benchmarks) | Mean accuracy across diverse tasks | 56.84% | GDN: 55.70%, FullAttn: 56.65% | +1.14% vs GDN, +0.19% vs FullAttn |
| RULER multikey_2 (1.4B scale) | Average accuracy | 0.8 | GDN: 0.7 | +0.1 points (14% relative improvement) |
| Learned M0 ablation (code NLL, 1.4B) | NLL (lower is better) | 0.822 (learned M0) | 0.845 (null M0) | 0.023 reduction |
| Memory size ablation (0.8B, 432MB state) | Code NLL / RULER accuracy | 0.914 / 21.5% | GDN: 0.963 / 16.0% | 0.049 NLL reduction / 5.5% accuracy gain |
| Training efficiency (8B scale) | Throughput relative to GDN | 1.49x slower | GDN: baseline | Only 1.49x overhead despite 4000x larger state |
| Inference decode speed (1.4B scale) | Speed relative to baselines | ~1.1x slower than GDN, 6x faster than FullAttn | GDN: baseline, FullAttn: 6x slower | Maintains constant compute advantage over FullAttn |
局限与改进
作者承认SDM的主要限制是训练速度需要进一步优化。虽然当前的SDM实现允许扩展到8B模型,但需要更多研究来设计更高效的内核以进一步扩展SDM模型。SDM内核的模型FLOPs利用率大约比FLA库中高度优化的GDN内核低一个数量级。SDM的另一个限制同时也是其优势:SDM内存需求不可忽略,内存占用可能高达模型参数的大小,不适合某些资源受限的环境。具体来说,8B模型的SDM状态占用的内存相当于8B全注意力模型中203400个token的KV缓存内存。此外,从观察到的情况来看,虽然SDM在大多数RULER任务上匹配或超过FullAttn,但在multikey_2任务上FullAttn仍保持显著优势(8B规模上58.0% vs SDM的4.7%),这表明某些复杂的多键检索任务可能仍然需要无界的KV缓存。训练效率方面,尽管SDM的端到端训练开销适中,但其大型状态必须在HBM中而不是快速的GPU SRAM中,这可能在实际部署中成为瓶颈。
独立分析的弱点
SDM存在几个可以改进的弱点。首先,内核效率问题严重限制了训练和推理速度,当前MFU比GDN低一个数量级,这意味着即使理论FLOPs相同,实际运行时间也显著更长。改进方向包括开发专门的GPU内核优化,利用稀疏访问模式的特性,探索异步内存传输策略,以及优化内存访问模式以提高缓存命中率。其次,在multikey_2等复杂多键检索任务上性能仍然远低于FullAttn,这可能是因为稀疏访问模式无法捕获某些复杂的多键关联。改进方向包括增加读写槽位的数量,探索更智能的键选择策略,或者设计混合架构在关键层使用全注意力。第三,内存开销对于资源受限环境可能过大,8B模型的7.963B状态与参数相当。改进方向包括研究状态压缩技术,开发分层或分区的内存架构,或者设计动态内存分配策略只激活任务需要的部分状态。第四,当前的自适应内存访问虽然表现出一定智能,但仍是基于softmax的静态分布,可能无法充分适应不同任务的内存需求模式。改进方向包括探索强化学习驱动的动态读写策略,设计任务感知的内存访问机制,或者引入可学习的读写预算分配。
未来方向
作者提出的未来工作方向包括设计更高效的内核以进一步扩展SDM模型。基于成果可延伸的研究方向包括:探索SDM在视频处理和多模态任务中的应用,特别是长视频理解需要处理数百万帧的场景;研究分层或分区的内存架构,以更好地平衡内存容量和访问效率;开发任务感知的动态内存分配策略,使模型能够根据任务需求自适应调整读写模式;探索SDM与检索增强生成的结合,将外部知识检索与内部稀疏内存相结合;研究SDM在持续学习和增量学习场景中的应用,利用其delta更新规则的自然适应性;探索更复杂的键选择机制,如基于注意力权重的自适应选择或基于学习的索引策略;研究SDM在不同模态之间的知识共享机制;开发更高效的训练算法;探索SDM在边缘设备上的部署;研究SDM的可解释性,分析内存槽位中学到的知识表示和访问模式。
复现评估
SDM的可复现性评估表明该项目具有较好的开放性和可复现性。作者已在GitHub上开源了代码,这为复现提供了基础。论文详细描述了所有架构配置和超参数设置,包括缩放阶梯的具体配置,每个规模的参数数量、token数量、学习率、状态大小等关键信息。实验使用了多样化的文本数据进行训练,最高规模的训练达到8B模型和超过1万亿token,这对计算资源提出了很高的要求。论文报告了详细的缩放定律分析和各个规模的性能指标,包括1.4B和8B模型的完整结果。消融研究设计合理,覆盖了学习初始状态、内存大小、读写配置等关键超参数。然而,复现8B规模可能需要大量的GPU资源,这对大多数研究团队来说是不可及的。较小的模型应该更容易复现。总体而言,虽然大规模复现具有挑战性,但开源代码和详细配置使得较小规模的验证和概念验证成为可能。
论文图表
这张图对比了不同架构的状态大小与每个token的FLOPs之间的关系。绿色线显示传统Transformer的KV缓存随序列长度线性增长,这意味着处理100万token序列需要巨大的内存。蓝色线代表SDM,显示了不同状态大小但保持恒定的FLOPs。橙色线显示GDN的大状态对应高FLOPs,而其默认状态虽然FLOPs低但状态很小。这张图清楚地表明KV cache与序列长度的线性关系是瓶颈,而SDM提供了大状态加恒定FLOPs的解决方案。
这张图对于理解论文的核心动机至关重要,它直观地展示了为什么传统线性RNN受限于状态大小,以及SDM如何通过稀疏访问突破这一限制。