跳转至

GSPN-2: Efficient Parallel Sequence Modeling

会议: NEURIPS2025
arXiv: 2512.07884
代码: 项目主页
领域: image_generation
关键词: efficient attention, spatial propagation, CUDA optimization, vision transformer, image generation

一句话总结

GSPN-2 通过算法-系统联合重设计(单 kernel 融合、紧凑通道传播、共享内存优化),将 GSPN-1 的 2D 空间传播加速最高 40×,在 ImageNet 分类和文本到图像生成中达到 Transformer 级精度且计算成本显著更低。

背景与动机

Vision Transformer 是几乎所有 SOTA 视觉基础模型的核心组件(Stable Diffusion、CLIP、SigLIP、检测/分割流水线),但其 self-attention 的二次复杂度严重限制了高分辨率/长视频场景的落地。SigLIP 不得不将输入限制在 512×512 以避免不可承受的延迟。

已有的高效注意力方案包括 FlashAttention(融合 tiled GEMM)、线性注意力、状态空间模型 Mamba 等。其中 GSPN(Generalized Spatial Propagation Network)独特地用 行/列扫描传播 替代 2D 自注意力,理论复杂度近线性于行数或列数(\(O(\sqrt{N})\)),在 16K 分辨率扩散推理上可达 84× 加速。

然而 GSPN-1 的参考 CUDA 实现存在三大瓶颈:

  1. kernel launch 开销巨大:每一列步骤都单独启动一个小 kernel,产生上千次 micro-launch,SM 无法保持满载
  2. 全局显存访问低效:每步都从 HBM 重新加载数据,无片上复用或合并访问,内存带宽利用率仅 3-8%
  3. per-channel 冗余计算:为每个通道维护独立的传播权重矩阵,通道数增加时运行时线性增长

核心问题

如何在保持 GSPN 准确率优势的前提下,从算法和 CUDA 系统两个层面消除实现瓶颈,使理论上的亚二次复杂度真正转化为实际加速?

方法详解

2D 空间传播回顾

对于输入 \(x \in \mathbb{R}^{H \times W \times C}\),GSPN 沿行方向逐行传播:

\[h_{i,:,c} = w_{i,c} \, h_{i-1,:,c} + \text{Diag}(\lambda_{i,:,c}) \, x_{i,:,c}\]

其中 \(w_{i,c} \in \mathbb{R}^{W \times W}\) 是三对角行随机矩阵(行和为 1,保证数值稳定),\(\lambda_{i,:,c}\) 是可学习缩放向量。四个方向(上→下、下→上、左→右、右→左)各做一遍扫描即覆盖全图的稠密成对连接。复杂度为 \(O(\max(H,W))\),即方阵上 \(O(\sqrt{N})\)

优化一:单 Kernel 融合

GSPN-1 对传播维度的每一步都单独启动 kernel。GSPN-2 将所有传播步骤合并为 一个统一 CUDA kernel,在 kernel 内部用循环处理所有列。仅此一步即获 1.2× 加速,消除了数千次 micro-launch 的调度代价。

Grid 配置从扁平 1D 改为 (chunk, n, c) 三维索引,每个 block 对应唯一的 (chunk, batch, channel) 组合并处理整列空间位置。每 block 最多 1024 线程;当 \(H > 1024\) 时线程以 stride 模式覆盖。

优化二:紧凑通道传播(Compact Channel Propagation)

GPU 并发饱和问题:当活跃 block 数 \(k_{\text{chunk}} \times N \times C\) 超过硬件并发上限(A100 约 3500 blocks)时,运行时从常数增长变为线性增长。

GSPN-2 提出两层缓解策略:

  1. 通道共享权重:用单一传播矩阵 \(w_i\) 替代 per-channel \(w_{i,c}\),所有通道共享空间传播,仅 \(\lambda_{i,:,c}\) 保留 per-channel 调制。此时 \(w_i\) 类似注意力的亲和矩阵:
\[h_{i,:,c} = w_i \, h_{i-1,:,c} + \lambda_{i,:,c} \odot x_{i,:,c}\]
  1. 压缩代理维度:将输入 \(x \in \mathbb{R}^{N \times C \times H \times W}\) 投影到低维代理空间 \(x_{\text{proxy}} \in \mathbb{R}^{N \times C_{\text{proxy}} \times H \times W}\)\(C_{\text{proxy}} \ll C\),如 \(C_{\text{proxy}}=8\)),在代理空间做传播后用 1×1 卷积恢复。Block 数从 \(k \times N \times C\) 降至 \(k \times N \times C_{\text{proxy}}\),可控制在硬件并发阈值以内。

论文还从线性注意力视角给出解读:展开递推后可写成块下三角矩阵形式 \(H_v = G \, X_v\),每个子块 \(G_{ij}\) 就是一个 \(N \times N\) 的注意力亲和矩阵。

优化三:高效 CUDA 扩展

  • 共享内存缓存:将前一步的隐状态 \(h_{i-1}\) 缓存到 SRAM,减少对 HBM 的冗余读取。在多通道时效果显著;单通道时 L1 cache 已足够,此优化反而有微小开销。
  • 2D Block 设计:blockDim = (H, cSlice),threadIdx.x 对应空间位置,threadIdx.y 跨通道切片,同一 block 并行处理多通道同一列。
  • 合并内存访问(Coalesced Access):将 \(x_i, h_i, w_i\) 在内存中连续排布,使同一 warp 内的线程访问相邻地址。这是单项贡献最大的优化(23.9× 加速)。
  • Stream 并发:四个方向的传播分别在独立 CUDA stream 上执行,最大化 SM 利用率。

累积优化效果(1024×1024, B=16, C=8)

优化阶段 时间 (ms) 累积加速
GSPN-1 基线 71.4
+ 单 Kernel 57.4 1.2×
+ Coalesced Access 2.4 29.8×
+ 共享内存 2.2 32.5×
+ 2D Block 2.1 34.0×
+ 通道压缩 1.9 37.6×
GSPN-2 最终 1.8 40.0×

实验关键数据

ImageNet-1K 分类(224²)

模型 参数 (M) MACs (G) Top-1 Acc
GSPN-T 30 5.3 83.0%
GSPN-2-T 24 4.2 83.0%
GSPN-S 50 9.0 83.8%
GSPN-2-S 50 9.2 84.4%
GSPN-B 89 15.9 84.3%
GSPN-2-B 89 14.2 84.9%
Swin-T 29 4.5 81.3%
VMamba-T 22 5.6 82.2%
MambaVision-B 98 15.0 84.2%
  • GSPN-2-T 以最少的参数(24M)和 MACs(4.2G)达到 83.0%,超越同级所有 SSM 和多数 Transformer
  • GSPN-2-S 以 50M 参数达到 84.4%,比 GSPN-S +0.6%,超越 MambaOut-Small(84.1%)和 UniFormer-B(83.9%)
  • GSPN-2-B 以 89M 参数达到 84.9%,同时 MACs 比 GSPN-B 减少 1.7G

内存带宽利用率

配置 GSPN-1 GSPN-2
128×128, C=32 98 GB/s (4.9%) 1865 GB/s (93.3%)
256×256, C=64 76 GB/s (3.8%) 1842 GB/s (92.1%)
512×512, C=128 64 GB/s (3.2%) 1840 GB/s (92.0%)

GSPN-2 在所有配置上稳定达到 A100 理论带宽峰值的 91-93%,而 GSPN-1 仅 3-8%。

文本到图像生成(SDXL 框架)

  • 4K 图像生成:比 SDXL 基线加速 32×
  • 16K 图像生成:比 GSPN-1 的 84× 进一步提升至 93×(单张 A100)
  • COCO 基准:FID 33.21 / CLIP-T 0.286,接近 SD-v1.5 基线水平

代理维度消融(GSPN-2-Tiny)

\(C_{\text{proxy}}\) Acc 吞吐量 (img/s)
2 83.0% 1544
8 83.0% 1387
32 82.8% 1106

即使 48:1 的激进压缩(Cproxy=2),精度仅下降 0.0%,吞吐提升 1.4×,说明空间依赖主导而通道依赖很弱。

训练细节与设计选择

ImageNet 实验中的关键设计: - 传播权重 \(w_i\) 在所有 GSPN 模块中 跨通道共享 - 压缩代理维度 \(C_{\text{proxy}} = 2\)(48:1 压缩比),节省的参数重新分配给更深/更宽的网络 - 每个 block 开头和 FFN 中集成 Local Perception Unit (LPU) 以增强局部特征 - 使用 MESA 技术缓解过拟合,贡献约 0.2% 精度提升

COCO 文本到图像生成基准(1024×1024)

模型 FID (↓) CLIP-T (↑)
SD-v1.5 (baseline) 32.71 0.290
Mamba (w/ norm) 50.30 0.263
Mamba2 (w/ norm) 37.02 0.273
Linfusion (w/ norm) 36.33 0.285
GSPN-1 30.86 0.307
GSPN-2 33.21 0.286

GSPN-2 在 COCO 上接近 SD-v1.5 基线水平且大幅优于 Mamba/Linfusion,但略逊于 GSPN-1。文中解释为 GSPN-2 采用了通道共享 + 代理压缩,轻微牺牲生成质量换取巨大推理加速(16K 图像上 93× vs 84×)。

不同负载下优化效果差异

论文附录对比了多种工作负载下各优化项的贡献变化:

大 batch 小 channel(B=256, C=1, 1024²): - 总加速 36.8×(143.7ms → 3.9ms) - Coalesced Access 贡献最大:34.0× - 共享内存反而 拖慢 0.9×(L1 cache 已足够) - 2D Block 无显著增益(仅 1 channel 无法利用 y 维并行)

大 channel 小 batch(B=1, C=1152, 1024²): - 总加速高达 151.4×(863.2ms → 5.7ms) - 通道压缩贡献最大:单项 7.8×(8× 压缩比将 1152→144 channels) - 验证了高通道数是 GSPN-1 的致命瓶颈

结论:Coalesced Access 在所有配置下均为基础性优化;通道压缩在大 channel 场景下效果最显著;共享内存在多通道时有效但单通道时可能有负面效果。

L1 Cache 的意外发现

Profiling 揭示了一个有趣现象:在某些配置下,不使用显式共享内存而依赖 L1 cache 的性能与使用共享内存相当。标准实现的 L1 cache 命中率约 35%;启用共享内存后 L1 命中率降至 ~0%,但总延迟基本不变。这说明现代 GPU 的 L1 cache 对于结构化访问模式已经非常高效。但为了跨 GPU 架构的可移植性和确定性性能表现,论文仍推荐保留共享内存实现。

亮点

  1. Coalesced Memory Access 是核心:单项优化贡献 23.9× 加速,远超其他所有优化之和。揭示了 GSPN-1 的根本瓶颈在于内存访问模式而非算法本身
  2. 通道共享 + 压缩代理的优雅设计:从注意力视角出发,将 per-channel 权重统一为共享亲和矩阵,既减参又降低 GPU 并发压力,理论解释清晰
  3. 93% 带宽利用率:几乎触及 A100 硬件天花板,证明 CUDA 实现已接近最优
  4. 分辨率自适应:基于 Stability-Context 性质,GSPN-2 天然适应任意分辨率,无需像 Mamba/Linfusion 那样在未见分辨率上加额外归一化
  5. 代理压缩的鲁棒性:48:1 的激进压缩(\(C_{\text{proxy}}=2\))精度零损失,说明空间传播中通道依赖极弱,空间依赖才是关键

局限与展望

  1. 低 BS×C 场景增益有限:当 batch 与通道乘积较小时,SM 利用率可降至 20-30%,优化效果不显著
  2. 缺少 CLS/register token 机制:无法作为 ViT 中依赖汇总 token 模型的 drop-in 替代
  3. 长视频验证不足:论文未在长上下文视频数据集上进行评估
  4. 高分辨率稠密预测验证有限:主要使用 480-512 像素图像,更高分辨率下的可扩展性优势有待验证
  5. COCO 生成指标略逊 GSPN-1:FID 33.21 vs 30.86,CLIP-T 0.286 vs 0.307,速度换质量的权衡需关注
  6. SM 利用率自适应缺失:论文提出可根据 BS×C 大小动态切换 GSPN-1/GSPN-2 配置,但未实现

与相关工作的对比

方法 复杂度 核心原语 硬件利用率 分辨率泛化
Self-Attention \(O(N^2)\) GEMM + Softmax 高 (FlashAttn) 需位置编码适配
FlashAttention \(O(N^2)\) 融合 tiled GEMM ~90% 同上
Mamba/SSM \(O(N)\) prefix-sum scan 中等 需额外归一化
Linfusion \(O(N)\) 线性注意力 中等 需额外归一化
GSPN-1 \(O(\sqrt{N})\) 行扫描(多 kernel) 3-8% 天然支持
GSPN-2 \(O(\sqrt{N})\) 行扫描(单 kernel) 91-93% 天然支持

GSPN-2 独特之处在于其传播模式既非矩阵乘也非前缀扫描,需要专门的 CUDA 实现。论文的贡献正是将这一理论优势通过系统优化变为实际加速。

My Notes

  • 算法-系统联合设计的范本:本文是典型的"理论已有但实现拖后腿"的案例,GSPN-1 的算法复杂度已经最优(\(O(\sqrt{N})\)),但 CUDA 实现仅利用 3-8% 带宽。GSPN-2 的核心贡献不是算法创新而是工程极致优化,将理论优势转化为实际加速。这种 algorithm-system co-design 的范式值得在其他领域推广。
  • 内存访问模式决定性能:Coalesced Access 单项贡献 23.9×,占总 40× 加速的绝大部分。这再次证明在 GPU 编程中,计算不是瓶颈,内存访问模式才是。对做高效推理/训练的研究者而言,优先优化内存布局和访问模式。
  • 通道压缩的意外发现\(C_{\text{proxy}}=2\)(48:1 压缩)无精度损失,暗示空间传播任务中通道间的信息冗余极高。这为下游任务(如 diffusion model 的 UNet 降维)提供了新思路——或许可以在 attention/propagation 模块中更激进地压缩通道。
  • 替代 ViT attention 的潜力:GSPN-2 的 \(O(\sqrt{N})\) 复杂度 + 93% 带宽利用率 + 分辨率无关性使其成为高分辨率视觉模型中极有竞争力的选择。但缺少 CLS token 支持限制了其在分类和检索任务中作为 drop-in 替代的可能性。
  • 与 FlashAttention 的互补性:FlashAttention 优化的是 \(O(N^2)\) 的常数项,GSPN-2 直接将复杂度降至 \(O(\sqrt{N})\)。两者可能在不同分辨率区间各有优势:低分辨率下 FlashAttention 的常数更小,高分辨率下 GSPN-2 的渐近优势占主导。
  • 生成质量 vs 效率的权衡:COCO 上 GSPN-2 FID/CLIP-T 略逊 GSPN-1(33.21 vs 30.86 / 0.286 vs 0.307),代价是通道共享+代理压缩。能否通过更精细的压缩策略(如自适应 \(C_{\text{proxy}}\))缩小差距值得探索。

启发与关联

  • 算法-系统协同设计范式:本文是算法改进和 CUDA 工程深度结合的典范。启示:理论复杂度优势转化为实际加速,需要精细的 kernel 设计(coalesced access、shared memory、block 配置),而非简单套用现有原语
  • 通道压缩的普适性:代理维度 \(C_{\text{proxy}}\) 的消融表明,许多视觉任务中空间依赖远强于通道依赖,这对设计高效注意力机制有启发意义
  • 与扩散模型结合的潜力:在 SDXL 上 93× 加速表明 GSPN-2 特别适合高分辨率生成任务,未来可探索与 DiT 等纯 Transformer 架构的扩散模型结合
  • 自适应优化策略:论文指出可根据 BS×C 的大小动态选择 GSPN-1 或 GSPN-2 配置,这种自适应思路值得在其他高效模型中借鉴

评分

  • 新颖性: ⭐⭐⭐⭐ — 算法层面(通道共享 + 压缩代理)和系统层面(单 kernel + coalesced access)双重创新
  • 实验充分度: ⭐⭐⭐⭐ — 详细的逐步 profiling 分析,覆盖分类和生成任务,但缺少视频和密集预测
  • 写作质量: ⭐⭐⭐⭐⭐ — 从硬件特性到算法设计到实验分析,层层递进,逻辑清晰
  • 价值: ⭐⭐⭐⭐ — 为高分辨率视觉任务提供了实用的高效方案,40× 加速有真实工程价值

相关论文