这次主要分享的是Mamba: Linear-Time Sequence Modeling with Selective State Spaces文献的3.3节Efficient Implementation of Selective SSMs(选择性SSMs模型的有效实施)
这里作者提出了重要的一点就是——“ maximize hidden state dimension without paying speed and memory costs ” ,在无需速度和内存开销下最大化隐状态维度。
在论文中提到LTI模型的限制可以由三个方法来解决:
- kernel fusion(内核融合):避免data在GPU多个层级间移动;
- parallel scan(并行扫描)
- recomputation(重计算):在需要时重新计算中间结果,而不需要存储中间结果
同时论文中提到了简单的循环计算和卷积计算的复杂度:
Type | Time |
Recurrent Computation | |
Convolutional Computation |
其中L代表的是序列长度,B表示批样数量,D表示输入的通道数,当序列长度越长,且隐状态维度较小时(N),循环计算要比卷积计算更有优势。
在这里,论文提出了两个应用挑战:循环的顺序性和巨大的内存占用。
同时呢,核心思想就是利用GPU的特性,在更高层计算隐状态,同时进行先前提到的内核融合,这样就避免了带宽限制以及并行扫描的限制。
此外,论文中提到了反向传播算法,并在反向传播的过程中运用到了重计算,最终融合选择性扫描层具有与使用 FlashAttention 优化的 Transformer 实现相同的内存需求。