
【免费下载链接】GatedDeltaNet[ICLR 2025] Official PyTorch Implementation of Gated Delta Networks: Improving Mamba2 with Delta Rule项目地址https://gitcode.com/gh_mirrors/ga/GatedDeltaNet点击查看免费下载GatedDeltaNet 是 ICLR 2025 论文《Gated Delta Networks: Improving Mamba2 with Delta Rule》的官方 PyTorch 实现它用门控 Delta 规则 线性注意力来处理长文本整个上下文被压缩进一块大小恒定的递归状态里因此只需 4096 长度训练就能外推到 16384 而无需重新训练。下面用通俗的语言拆解这套机制背后的完整原理。 先认识一下 GatedDeltaNet一句话概括它是一个比 Transformer 更省内存的长文本语言模型架构。官方实现给出的三大卖点见 README.md智能记忆管理知道哪些信息该留、哪些该忘门控衰减⚡精确更新用 Delta Rule 对记忆做定点改写而不是简单累加硬件高效Triton 分块并行内核训练吞吐量显著优于 Mamba2 / Samba 等方案 核心原理一恒定状态空间是长文本能力的基石Transformer 处理长文本的痛点传统 Transformer 靠 KV Cache 记住历史每来一个新 token都要把 Key/Value追加进缓存。缓存大小与序列长度成正比上下文越长显存占用和注意力计算量越大。GatedDeltaNet 的做法固定大小的便签本GatedDeltaNet 则相反——它维护一个形状固定的递归状态矩阵 S。无论输入 4k 还是 16k 个 token这个矩阵的形状和大小都不变每个新 token 只是改写一次它的内容对比项TransformerGatedDeltaNet记忆载体KV Cache随长度增长递归状态 S大小恒定每层显存开销O(序列长度)O(1)与长度无关单步计算量随长度增长常数逐 token 推理时这种恒定大小在源码中体现得非常直白。lit_gpt/gated_delta_net.py 里的state_size()只返回key_dim × head_v_dim加上少量卷积状态——一个与序列长度无关的常数def state_size(self, **kwargs) - int: state_size self.key_dim * self.head_v_dim ...而推理时的状态初始化见 lit_gpt/gated_delta_net.py每个 batch 只分配一个固定形状的矩阵之后逐 token 滚动更新。 直白理解Transformer 是把整段对话逐字抄在越来越长的纸条上GatedDeltaNet 是把关键信息不断誊写、改写进一张固定大小的便签上。✍️ 核心原理二Delta Rule把记住升级为精确改写普通线性注意力的缺陷只会加法朴素线性注意力 / SSM 的记忆更新大致是S_t 衰减(S_{t-1}) k_t·v_tᵀ它只能加新信息、衰减旧信息。当同一个 key 反复出现比如长文里多次提到张三新旧 value 会互相污染模型无法修正旧记忆长程召回容易混淆。Delta Rule先擦除再写入Delta 规则引入了一个擦除-写入的定向更新S_t ≈ S_{t-1} − β_t·(k_t k_tᵀ S_{t-1} − k_t v_tᵀ)含门控衰减关键在 β_t 加权的那个秩一rank-1项它只针对当前 key 对应的那一小片记忆做替换——旧内容被精准擦掉新内容写进同一个位置。就像在白板上只擦掉某一行重写而不是整板重写。这正是Smart Memory Management Precise Updates两个卖点的数学落地也是 GatedDeltaNet 在长上下文基准上 perplexity 显著优于同类模型的根本原因冲突解决同一实体的新描述会覆盖旧描述而不是叠加成噪声长程稳定记忆不会被逐步冲淡细节如 S-NIAH 大海捞针任务保留得更完整具体实现在 Triton 分块内核 lit_gpt/gated_delta_rule_ops/chunk.py 中其中fwd_prepare_du_kernel等函数在块内完成了带衰减的记忆修正计算更快的 FLA 加速版本位于 lit_gpt/gated_delta_rule_ops/fla_version/。 核心原理三两个旋钮——门控衰减与更新门GatedDeltaNet 的每一次记忆更新由两个可学习的门控信号控制源码见 lit_gpt/gated_delta_net.py1️⃣ 衰减门 gk决定忘掉多少gk -self.A_log.float().exp() * F.softplus(gk self.dt_bias)这是源自 Mamba 的数据依赖门控衰减系数不是固定常数而是根据输入动态调整——重要上下文衰减得慢噪声信息衰减得快。2️⃣ 更新门 β决定写入多少beta self.b_proj(hidden_states).float().sigmoid()β ∈ (0,1) 控制这次擦除-写入的力度对当前 token 的信息量做软判断避免无关内容覆盖已有记忆。两者配合模型学会了知道该保留什么、该忘掉什么这是长文本场景下记忆质量的关键。 核心原理四为什么 4k 训练能外推到 16k这是本文标题里4k→16k 长度外推的答案由三个设计共同保证① 状态恒定 → 推理无长度上限焦虑训练配置中block_size4096见 lit_gpt/config.py但推理时递归状态只是持续滚动更新不存在随长度增长的注意力矩阵或 KV Cache 扩容问题因此把输入拉长到 2×8k、4×16k在机制上天然可行。官方训练说明中也给出了1x 2x length extrapolation的验证损失曲线预期README.md Getting Started 一节。② H1 混合架构长程靠状态短程靠局部注意力看 lit_gpt/config.py 中的GatedDeltaNet_H1_0.4B配置gated_delta_per_layer2每隔一层放一个 GatedDeltaNet 层local_window2048其余层用2048 窗口的局部注意力lit_gpt/model.py 中use_gated_deltanet交替构建两类 Block长距离信息交给恒定状态做全局摘要传递局部细节精确词序、邻近实体交给局部注意力兜底。局部注意力通过窗口化 FlashAttention 实现lit_gpt/model.py 中window_size控制配合 RoPE 位置编码兼顾了外推稳定性与近距精度。③ 分块并行长序列训练也能跑得快训练时不会逐 token 串行而是把序列切成块块内并行计算、块间传递状态chunk模式入口见 lit_gpt/gated_delta_net.py 调用chunk_gated_delta_rule。这让 4k 甚至更长的训练序列在 GPU 上保持高吞吐——外推能力练得出来的前提。 代码导读这份实现怎么组织模块说明lit_gpt/gated_delta_net.pyGatedDeltaNet 主模块投影、短卷积、门控、状态管理lit_gpt/gated_delta_rule_ops/chunk.pyTriton 分块前向/反向内核lit_gpt/gated_delta_rule_ops/wy_fast.pyWY 表示优化内核lit_gpt/gated_delta_rule_ops/fla_version/基于 FLA 的更快内核推荐lit_gpt/config.py0.4B / 1.3B / H1 混合等模型配置lit_gpt/model.py整体模型GatedDeltaNet 层与局部注意力层交替pretrain.py训练入口FSDP、bf16 获取并运行git clone https://gitcode.com/gh_mirrors/ga/GatedDeltaNet仓库提供 0.4B 模型在 15B tokens 上训练的参考脚本4 节点、约 4 小时scripts/tsz512x4k_15B_gated_deltanet_h1_0.4B.sh其中MODELGatedDeltaNet_H1_0.4B即上文混合架构。核心训练命令等价于python pretrain.py \ --model_name GatedDeltaNet_H1_0.4B \ --train_config tsz512x4k_15B \ ... 小结一张图看懂 GatedDeltaNet 的长文本优势恒定状态空间记忆大小与上下文长度解耦显存 O(1)长文本天然可行Delta Rule 精确改写秩一更新定点擦写长程记忆不串味双门控gk 衰减 β 更新数据驱动地决定忘什么、写什么4k→16k 外推恒定状态 分块并行训练 H1 局部注意力兜底无需为长序列重新训练对新手而言记住一句话即可GatedDeltaNet 用固定便签 精确擦写代替了无限抄写这就是它擅长长文本的全部秘密。⚠️ 注意本仓库按 NVIDIA Source Code License-NC 授权见 LICENSE仅开源代码、不提供预训练权重商用场景请留意许可条款。赞分享【免费下载链接】GatedDeltaNet[ICLR 2025] Official PyTorch Implementation of Gated Delta Networks: Improving Mamba2 with Delta Rule项目地址https://gitcode.com/gh_mirrors/ga/GatedDeltaNet点击查看免费下载相关推荐为什么16K上下文如此重要Mistral-7B-Instruct-v0.2_rai_1.8.0_npu_16K长文本处理原理解密为什么16K上下文如此重要Mistral 7B Instruct v0.2_rai_1.8.0_npu_16K长文本处理原理解密 Mistral 7B Ins为什么它能支持16KQwen2.5-7B-Instruct_rai_1.8.0_npu_16K长上下文原理与实战使用指南为什么它能支持16KQwen2.5 7B Instruct_rai_1.8.0_npu_16K长上下文原理与实战使用指南 Qwen2.5 7B Instruc为什么叫npu_4KQwen2.5_3B_Instruct_rai_1.8.0_npu_4K的Full Fusion 4K长上下文推理机制揭秘为什么叫npu_4KQwen2.5_3B_Instruct_rai_1.8.0_npu_4K的Full Fusion 4K长上下文推理机制揭秘 你是不是在 A上一篇TurboAPI TurboPG实战打造零Python参与的Postgres路由8万QPS端到端实测下一篇IW4L音频系统指南48kHz固定槽位、声音线索编译与WMA解码是如何工作的创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考