
【免费下载链接】GatedDeltaNet[ICLR 2025] Official PyTorch Implementation of Gated Delta Networks: Improving Mamba2 with Delta Rule项目地址https://gitcode.com/gh_mirrors/ga/GatedDeltaNet点击查看免费下载GatedDeltaNetGated Delta Networks是 NVIDIA 针对 ICLR 2025 论文Gated Delta Networks: Improving Mamba2 with Delta Rule发布的官方 PyTorch 实现。它用「短卷积 门控机制 Delta Rule」三件套为 Mamba2 带来了更精准的线性注意力记忆更新。本文将从数据流的角度拆解 GatedDeltaNet 架构告诉你这三部分如何协同工作以及代码中如何实现高效并行。 GatedDeltaNet 要解决什么问题传统 Transformer 的注意力复杂度随序列长度平方增长而线性注意力 / 状态空间模型用一块固定大小的状态矩阵 S来记住历史计算量与长度无关。但普通线性注意力只是简单累加记忆容易糊成一团新信息与旧信息互相覆盖检索精度差。GatedDeltaNet 的答案是让记忆更新更聪明官方 README 将其概括为三个优点见 README.md智能记忆管理知道什么该保留、什么该遗忘门控⚡精准更新只修补记忆里的错误部分Delta Rule硬件友好Triton 分块内核训练吞吐优于 Mamba2 / Samba 数据流总览一个 Token 如何穿过 GatedDeltaNet核心模块定义在 lit_gpt/gated_delta_net.py前向流程forward可以概括为 5 步投影输入x分别投影出q / k / v和门控信号gk / beta短卷积q / k / v各自过一个 4 点因果卷积门控计算gk变成遗忘率beta变成写入强度分块门控 Delta RuleTriton 内核chunk_gated_delta_rule完成核心记忆更新输出结果经过融合 RMSNorm Swish 门控后投影回原维度组件作用关键代码位置短卷积q/k/v_conv1d局部 4 位置特征混合gated_delta_net.py#L89-L91门控gk/beta遗忘率 / 写入强度gated_delta_net.py#L157-L165分块 Delta Rule并行化的核心记忆更新chunk.py#L616-L636WY 表示内核把块内串行更新转为矩阵运算wy_fast.py#L29-L82 短卷积先润色再写入全局记忆q_conv1d ShortConvolution(key_dim, conv_size4, activationsilu)在 lit_gpt/gated_delta_net.py#L89-L91 中q / k / v在参与记忆更新前各过一个kernel_size4 的深度可分离因果卷积ShortConvolution带 SiLU 激活。它只看最近 4 个位置成本极低作用是让每个 token 的 q/k/v 先融入局部上下文相当于给记忆写入做了一次局部特征平滑。推理时卷积的 3 个历史值会被缓存见 init_state所以状态开销几乎可以忽略。 门控机制决定忘多少和写多强GatedDeltaNet 有两个门都来自输入x的轻量线性投影① 遗忘门gkMamba 风格门控参数A_log与dt_bias的初始化在 gated_delta_net.py#L106-L123实际计算在 L157-L159gk -exp(A_log) * softplus(gk dt_bias)注意负号——gk恒为负值exp(gk)就是一个 (0, 1) 之间的指数遗忘率每个时间步状态矩阵 S 整体按exp(gk)衰减。A初始化为Uniform(0, 16)让每个注意力头拥有独立的、可学习的遗忘速度这就是知道何时忘记的来源。② 写入门betaL164-L165 中beta sigmoid(b_proj(x))取值 (0, 1)控制本步记忆的写入强度——类似 DeltaNet 里的该记多少。此外默认qk_norml2L173-L175会对q / k做 L2 归一化稳定点积数值这是 Mamba2 同款技巧。 Delta Rule先预测、再纠错的记忆更新Delta Rule 是 GatedDeltaNet 的灵魂。每个时间步的状态更新为S_t S_{t-1} · exp(g_t) · (I − β_t k_t k_tᵀ) β_t k_t v_tᵀ用仓库中逐 token 循环的参考实现 recurrent_gated_delta_rule_ref 更容易读懂核心三行S S * g.exp() # 门控整体遗忘 _v _v - (S * _k[..., None]).sum(-2) # 预测误差v − 旧记忆对 k 的预测 _v _v * beta # 写入强度缩放 S S _k.unsqueeze(-1) * _v.unsqueeze(-2) # 只写入纠错量可以把它想象成一本词典写入新词条(k, v)前先查旧词条kᵀS的预测然后只写入差值v − 预测。重复的信息不会被反复叠加而是持续把旧值修正成新值——这就是 README 所说的 Precise Updates。门控g负责定期清空桌面Delta Rule 负责精准修订两者一删一补记忆既不会无限膨胀也不会互相污染。⚡ 分块并行Triton 内核如何让串行变并行逐 token 循环无法利用 GPU 并行chunk_gated_delta_rulechunk.py#L616-L636采用分块策略块内并行以BT64为块L622块内串行依赖借助WY 表示wy_fast.py转化为块上的下三角矩阵运算一次矩阵乘法搞定整个块块间串行块与块之间只需传递一个状态矩阵开销很小数值技巧L553-L559 把门控g做 cumsum 后乘以1.44269504即 log₂e这样内核里就能用更快的exp2指令替代exp完整反向传播fwd/bwd kernel配套实现了 q/k/v/beta/g 的全梯度ChunkGatedDeltaRuleFunction 官方还建议直接使用速度更快的 FLA 内核仓库里也附带了参考实现 lit_gpt/gated_delta_rule_ops/fla_version/。️ 模型配置纯线性与 H1 混合注意力预置模型定义在 lit_gpt/config.py#L101-L181通过gated_delta_per_layer控制线性层与注意力的交替方式模型层数配置含义GatedDeltaNet_0.4B11gated_delta_per_layer1全部层用 GatedDeltaNetGatedDeltaNet_H1_0.4B122每隔 1 层插入一层局部注意力GatedDeltaNet_1.3B/H1_1.3B16 / 18同上更大规模在 lit_gpt/model.py#L282-L290 的Block中layer_idx % gated_delta_per_layer 0的层使用GatedDeltaNet其余层退回带 RoPE 的因果注意力local_window2048。H1Hybrid变体正是这种线性为主 少量注意力补充的结构在长上下文检索上更稳健。 快速上手从零训练一个 GatedDeltaNet1️⃣ 克隆仓库git clone https://gitcode.com/gh_mirrors/ga/GatedDeltaNet2️⃣ 启动训练入口 pretrain.py参数说明见 README.md#L158-L180python pretrain.py \ --train_data_dir ${TRAIN_DATA} \ --val_data_dir ${VALIDATION_DATA} \ --output_root ${SAVE_DIR} \ --model_name GatedDeltaNet_H1_0.4B \ --train_config ${CONFIG}仓库还提供了一个可直接参考的 SLURM 脚本 scripts/tsz512x4k_15B_gated_deltanet_h1_0.4B.sh用 4 节点约 4 小时即可训出 0.4B 参数的 H1 模型15B tokens验证损失曲线在 README 中也有展示。如果只想在 GPU 上快速实验也可以用仓库自带的 Dockerfile 一键拉起环境。 总结三者为何缺一不可短卷积低成本地注入局部上下文让写入记忆的信息更干净门控机制可学习的指数遗忘 写入强度让模型自主决定何时忘、记多少Delta Rule以预测误差为写入量的精准更新避免记忆污染三者叠加再配合分块 WY 表示的 Triton 并行内核GatedDeltaNet 同时拿到了线性注意力的推理效率与接近 Transformer 的检索精度——这正是它能改进 Mamba2、并被后续多个混合架构采用的原因。想深入源码建议按 gated_delta_net.py → chunk.py → wy_fast.py 的顺序阅读从模块到内核逐层下钻。赞分享【免费下载链接】GatedDeltaNet[ICLR 2025] Official PyTorch Implementation of Gated Delta Networks: Improving Mamba2 with Delta Rule项目地址https://gitcode.com/gh_mirrors/ga/GatedDeltaNet点击查看免费下载相关推荐读懂多智能体 Gym 接口ma-gym 的 reset/step 循环与列表式四元组返回机制完整指南读懂多智能体 Gym 接口ma gym 的 reset/step 循环与列表式四元组返回机制完整指南 ma gym 是一套基于 OpenAI Gym 构建的TinyRecursiveModels架构深度解析H_cycles与L_cycles的协同工作机制TinyRecursiveModels架构深度解析H_cycles与L_cycles的协同工作机制 TinyRecursiveModelsTRM是一个革命人工智能深度学习终端里的 Gmail 搜索gogcli 的 5 个实战场景与 8 个命令参数终端里的 Gmail 搜索gogcli 的 5 个实战场景与 8 个命令参数 在浏览器里翻几十封邮件只为找到那封带发票附件的——这个消耗可以终结在终端里。g上一篇oh-my-bash 集成 asdf 版本管理器插件安装、补全配置与源码原理解析下一篇CPU Performance Engineering 实测手写 NEON 微内核逼近 FMA 峰值CPU 推理 44 倍加速之路创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考