54 lines
1.8 KiB
Markdown
54 lines
1.8 KiB
Markdown
---
|
||
title: "SSD 算法 (Structured State Space Duality Algorithm)"
|
||
created: 2026-06-18
|
||
updated: 2026-06-18
|
||
type: concept
|
||
tags: [algorithm, ssm, matrix-multiplication, gpu]
|
||
sources:
|
||
- dao-transformers-are-ssms-2024
|
||
---
|
||
|
||
# SSD 算法 (SSD Algorithm)
|
||
|
||
SSD 算法是 Dao & Gu (2024) 提出的**混合矩阵乘法算法**,利用 [[semiseparable-matrices|半可分矩阵]] 的块分解,在现代 GPU 上实现最优效率权衡。
|
||
|
||
## 核心思路
|
||
|
||
[[structured-state-space-duality|SSD 框架]] 揭示了 SSM 的两种等价计算方式:
|
||
1. **循环形式**:O(T) 时间,但依赖串行扫描,无法利用 GPU Tensor Core
|
||
2. **对偶(矩阵)形式**:O(T²) 时间,但可用高效矩阵乘法
|
||
|
||
SSD 算法不走极端——**在块级别做分解**:
|
||
|
||
```
|
||
将矩阵 M 分解为 B × B 的块
|
||
块内:使用矩阵乘法(GPU 高效)
|
||
块间:使用循环传播(保持线性复杂度)
|
||
```
|
||
|
||
## 效率对比
|
||
|
||
| 算法 | 训练 | 推理 | GPU 利用 |
|
||
|------|:--:|:--:|:--:|
|
||
| Mamba Selective Scan | 串行 | O(1) 状态 | 低(不用 Tensor Core) |
|
||
| Flashattention | O(T²) | O(T) KV cache | 高 |
|
||
| **SSD Algorithm** | **混合** | **O(1) 状态** | **高** |
|
||
|
||
## 与 FlashAttention 的交叉点
|
||
|
||
- 序列长度 2K:SSD 与 FlashAttention-2 **持平**
|
||
- 序列长度 16K:SSD 比 FlashAttention-2 快 **6x**
|
||
- 支持 **8x Mamba 的状态大小**,几乎无额外代价
|
||
|
||
## 变长序列支持
|
||
|
||
通过**传递循环状态**实现变长序列训练——无需 padding tokens——这对 SSM 是独特优势(Transformer 需要复杂的 padding 移除技术)。
|
||
|
||
## 参考
|
||
|
||
- [[structured-state-space-duality|SSD]]
|
||
- [[semiseparable-matrices|半可分矩阵]]
|
||
- [[mamba-2|Mamba-2]]
|
||
- [[flash-attention|FlashAttention]]
|
||
- [[dao-transformers-are-ssms-2024|论文]]
|