【ICLR2026】视觉状态空间模型的效率重构:SF-Mamba解析
近年来基于状态空间模型State Space Model, SSM如 Mamba的视觉架构因其具备线性的计算复杂度成为了视觉 TransformerViT的重要补充 。然而在实际工程落地中视觉 Mamba 往往面临两个严峻的效率阻碍一是为获取二维空间信息而采用的多向扫描Multi-directional scan不仅逻辑复杂且伴随高昂的内存重排开销 二是 Mamba 底层算子在处理视觉任务常见的短序列时硬件并行利用率不足 。2026年3月17日的论文《SF-Mamba: Rethinking State Space Model for Vision》针对上述两个痛点从“数据流重组”和“硬件亲和性”两个维度提出了极具参考价值的重构方案这篇论文的工作相当扎实非常有借鉴意义 。本文将详细拆解该研究的核心底层逻辑、工程实现细节并对其局限性进行客观的评判性分析。本文目前暂未开源由于涉及底层算子重新设计待本文开源后我会再出文章详细解读代码。图1清晰地展示了在 ImageNet-1K 图像分类任务上各种主流视觉架构CNN、Transformer、以及现有的 Mamba 变体在吞吐量横轴和 Top-1 准确率纵轴上的分布 可以看出本文提出的SF-Mamba的优势。一、数据流视角的重构辅助Token交换 (Auxiliary Token Swapping)由于图像没有严格的单向因果顺序传统的单向 Mamba 扫描无法让前面的像素读取到后面像素的信息 。为解决此问题现有的 Vim 或 VMamba 引入了双向或交叉扫描但这带来了隐藏的性能代价。1. 为什么不建议使用多向扫描许多读者可能有疑问多向扫描的理论计算量FLOPs并不大为什么实际运行很慢论文在附录的初步评估中给出了解答 多向扫描要求网络以不同的顺序如从右到左读取图像块这要求在显存中进行O(n)O(n)O(n)级别的全局张量翻转与重排 。这种物理层面的内存搬运操作几乎不增加 FLOPs但却占用了总推理时间的 5% 到 8%。同时维护平行的多路扫描分支又额外消耗了 28% 到 42% 的系统调度时间 。2. SF-Mamba 的解法双时空信使为了避免上述开销SF-Mamba 仅保留了最基础的单向扫描并通过引入**“辅助 Token 交换”**机制实现信息回流 。上面的左图展示了传统双向扫描需要翻转整个序列并使用两条并行路径代价高昂。右图展示了 SF-Mamba 的做法序列长度仅增加 2首尾各添加一个辅助 Token通过极低代价的O(1)O(1)O(1)位置交换让包含全局信息的尾部 Token 在下一层变成了头部 Token实现了“未来到过去”的信息传递 。其运作机制如下在进入当前层 Mamba 之前序列首尾各拼接一个辅助 TokenX′(xheadaux,x1,...,xT,xtailaux)X (x_{head}^{aux}, x_1, ..., x_T, x_{tail}^{aux})X′(xheadaux,x1,...,xT,xtailaux)。经过单向扫描后处于最末尾的ytailauxy_{tail}^{aux}ytailaux自然聚合了整张图像的全局特征 。在进入下一层前执行简单的交换操作将尾部的ytailauxy_{tail}^{aux}ytailaux移至头部头部的移至尾部 。这样下一层在进行单向扫描时排在最前面的图像块立刻就能从新的头部 Token 中读取到上一层的全局上下文 。3. 深入探讨关于辅助 Token 的两个关键疑问疑问一辅助 Token 是如何初始化的它和 Transformer 的[CLS]有何异同不同于 ViT 中[CLS]作为一个固定的、可学习的静态参数Learnable token且主要用于最终的降维分类SF-Mamba 的辅助 Token 核心作用是**“信息路由”。根据论文实验它的最佳初始化方式是数据依赖型 (Data-dependent)**——即直接计算当前输入图像块序列XXX在序列维度上的平均值 (avg(X)avg(X)avg(X)) 作为初始值 。这种动态初始化能赋予模型更好的初始全局感受野 。疑问二辅助 Token 会一直保留到网络结束吗不会。SF-Mamba 采用了前半段是 Mamba、后半段是 Attention 的混合架构 。辅助 Token 伴随特征穿过 Mamba 层在帮助特征完成向 Attention 的过渡后——具体来说是在当前阶段的“第一个 Attention 模块计算结束之后”会被彻底从张量中切除丢弃 。因为 Attention 机制本身自带全局交互能力继续保留辅助 Token 会产生冗余计算 。论文采用MambaVision作为基座模型这里我把该模型贴个图论文中是用文字描述了结构论文Table3对此进行了消融分析在这个表格中可以看到1、深度学习中增加额外的 Token参数往往能微弱提升模型容量。但实验的第二行数据给出了明确答案如果仅仅在序列首尾添加两个“可学习 Token”但不执行跨层的 Swap 交换操作分类准确率不仅没有提升反而从基线的 82.2% 降到了 82.1% 。 这证明了精度收益并非来自增加了额外的模型参数而是严格来源于“交换操作”所打通的全局信息双向流动通道。2、由于 SF-Mamba 采用了前半段为 Mamba 块、后半段为 Attention 块的混合宏观架构辅助 Token 在进入 Attention 阶段后其使命就发生了变化。表格测试了三个丢弃时机清晰地展示了特征过渡的最佳策略过早丢弃Attention 之前图像块还没来得及利用注意力机制与辅助 Token 进行全局交互导致情报未被充分吸收。过晚保留所有 Attention 之后Attention 本身具备全局路由能力继续保留辅助 Token 不仅产生冗余的计算开销拖慢速度还会轻微干扰特征表达精度下降至 82.4%。最优解第 1 个 Attention 之后这是最为精准的工程切割点。特征序列进入第一个 Attention 模块后自注意力机制会迅速让所有图像块读取并融合辅助 Token 里的全局信息。一旦该层计算结束网络立刻将这两个辅助 Token 从张量中裁剪切除。这既保证了情报的完美广播又及时卸下了计算包袱在分类82.5%和分割47.2%上均取得最高指标同时维持了高达 7600 img/s 的高吞吐量 。结合上述消融实验我们也不难发现该设计存在的一个潜在局限性。SF-Mamba 辅助 Token 的优雅退出高度依赖于网络后半段存在 Attention 模块来接管并“广播”全局特征 。如果未来的研究希望构建一个**纯 Mamba的架构并复用该交换机制那么就必须重新设计一种低成本的特征广播机制来替代第一个Attention 层的作用否则辅助Token中的全局信息可能无法有效地反哺给每一个局部的图像像素。二、 计算视角的重构带重置的批次折叠 (Batch Folding with Periodic State Reset)除了数据流Mamba 在处理视觉任务时还存在硬件亲和性问题。Mamba 底层依赖的高效 CUDA 并行扫描算法Warp-scan要求为每个序列至少分配 32 个 GPU 线程 。但在视觉任务深层特征图尺寸很小如序列长度仅为 49 或 196。 这就像是一辆标配 32 个座位的公交车每次只上来 5 个乘客就发车导致严重的运力浪费。为了榨干 GPU 算力作者提出了批次折叠 (Batch Folding)。左图展示了批次折叠操作将原本形状为[B, D, T]的多个短序列在批次维度上拼接重塑为[B1, D, B2 * T]的虚拟长序列。右图展示了周期重置机制的伪代码在每个序列边界强制重置隐藏状态 。具体步骤物理折叠把B2B_2B2个独立图像的短序列首尾相连拼接成一个超长的虚拟序列。这使得底层的连续线程得以满载运行 。周期状态重置 (Periodic State Reset)为了防止上一张图像末尾的特征污染下一张图像的开头当长序列计算步进到每一个原始长度TTT的边界时即tmod T0t \mod T 0tmodT0模型强制将状态转移矩阵AtA_tAt设为 0 。根据htAtht−1Btxth_t A_t h_{t-1} B_t x_thtAtht−1Btxt当At0A_t 0At0时直接切断了对历史隐藏状态ht−1h_{t-1}ht−1的依赖等价于为下一张图重新初始化了一个干净的状态 。论文的图4展示了不同折叠比例B1/BB_1/BB1/B下的加速效果。红色/紫色曲线短序列L49的加速比可达约 180%蓝色/绿色曲线较长序列L196加速比约 115%。这证明序列越短折叠带来的资源利用率提升越显著 。三、 架构设计的贡献度与有效感受野分析为了理清 Attention 和 SSM 在系统中的各自作用论文在附录进行了一项关键的剥离分析数据表明“纯 Mamba 架构”虽然参数少但精度低且速度慢序列短导致“纯 Attention 架构”精度高但参数量大而在混合架构中引入本文的折叠Bfold和交换Swap机制后实现了参数、精度与速度的最优平衡 。通过有效感受野 (ERF)分析也能佐证这一点图 7 表明未经修改的单向 Mamba左侧其感受野偏向图像上半部分而 SF-Mamba右侧仅通过轻量的辅助 Token 交换就实现了上下均匀的感受野分布 。图 8 表明在全模型对比中SF-Mamba 达成了媲美 Transformer 的全局建模能力 。四、 隐藏在代码底层的工程优化在提出核心算法外论文还分享了几个重要的工程实现细节以进一步提升推理速度 屏蔽冗余输出强制 Mamba 内核在推理阶段Inference不输出反向传播才需要的隐藏状态减少显存写入开销 。消除维度重排使用逐点一维卷积Pointwise 1D Conv替换生成Δt\Delta tΔt的线性层减少底层的数据重排 。Triton 内核优化针对辅助 Token 跨越非连续内存的交换操作专门编写了 Triton CUDA 内核进行加速 。五、 评判性分析SF-Mamba 是一项非常扎实的系统级优化研究但在更广泛的实际应用中仍存在值得探讨的局限性超大分辨率下的“折叠”显存风险批次折叠Batch Folding的核心是将多个序列拼接。但如果应用于遥感或医疗等超高分辨率图像例如1024×10241024 \times 10241024×1024原本的序列TTT已经极大。如果再强行进行B2⋅TB_2 \cdot TB2⋅T的拼接极易超出单张 GPU 的连续显存分配上限OOM 。未来的工作是否可以引入动态感知折叠 (Dynamic Folding)即在网络浅层高分辨率关闭或减小折叠比例在深层低分辨率拉满折叠比例对 Attention 模块的强依赖性如前文所述辅助 Token 的丢弃策略依赖于后半段的 Attention 模块接管全局信息的融合 。如果架构完全抛弃 Attention该交换机制的参数负担和长程信息保持能力还需要进一步验证。六、 核心模块 PyTorch 代码示例本文工作相当扎实我很期待读者后续的开源。由于涉及底层算子修改较为复杂这里我先提供“辅助 Token 交换”和“带重置的批次折叠”这两个核心概念 PyTorch模拟import torch import torch.nn as nn class SF_Mamba_Block(nn.Module): def __init__(self, dim): super().__init__() self.dim dim # 实际使用中需替换为原 Mamba的 CUDA 算子 # 且要求该算子支持接收reset_mask信号来控制A_t self.mamba_1d_scan nn.Linear(dim, dim) def auxiliary_token_swapping(self, x): 实现Token位置交换促成双向信息流动 x shape: (B, T2, D) # 包含了首尾两个辅助 Token # 取出头部、尾部以及中间的图像 Patch head_token x[:, 0:1, :] tail_token x[:, -1:, :] patches x[:, 1:-1, :] # 交换首尾将原先聚合了全局信息的 tail 移到头部 x_swapped torch.cat([tail_token, patches, head_token], dim1) return x_swapped def batch_folding_with_reset(self, x, B1, B2): 带周期重置的批次折叠 x shape: (B, T2, D), 其中 B B1 * B2 B, seq_len, D x.shape # 1. 物理折叠重塑为虚拟长序列 x_folded x.view(B1, B2 * seq_len, D) # 2. 生成周期重置信号 (Periodic State Reset Mask) # 在每个原始序列边界处标记为 1用于通知底层 CUDA 内核将 A_t 置 0 reset_mask torch.zeros(B1, B2 * seq_len, 1, devicex.device) reset_mask[:, ::seq_len, :] 1.0 # 3. 执行单向长序列并行扫描 (伪代码表示传入重置信号) out_folded self.mamba_1d_scan(x_folded) # 实际应用需结合 reset_mask 处理 # 4. 展开恢复原始批次形状 out out_folded.view(B, seq_len, D) return out def forward(self, x, B1, B2): # 1. 执行轻量级的交换操作 x_swapped self.auxiliary_token_swapping(x) # 2. 执行批次折叠以加速底层计算 out self.batch_folding_with_reset(x_swapped, B1, B2) return out小结SF-Mamba 没有盲目地通过增加参数或平行路径来获取精度而是回到了数据结构与底层硬件交互的最基本层面。它证明了在深度学习架构设计中除了算法本身的数学优雅深刻理解并迎合底层 GPU 计算逻辑同样是提升模型实际运行效率的关键路径。