论文

用于可扩展向量架构的 FlashAttention

FlashAttention for Scalable Vector Architectures

模型推理推理加速

摘要

在 CPU 上使用 Transformer 模型进行推理变得越来越重要,特别是对于小语言模型 (SLM),其中矢量架构正在成为一种有前途的执行基础。由于内存带宽要求较高,注意力模块是一个主要瓶颈; FlashAttention 通过融合操作来改善数据局部性并减少中间内存流量,从而缓解这种情况。在本文中,我们提出了 FlashAttention-V,这是一种用于可扩展向量架构的分块 FlashAttention,它通过利用注意力头之间的并行性、头间打包以实现超出头维度的向量长度的有效利用,以及提高向量寄存器利用率和内存访问局部性,有效地适应从短到超长的向量。我们将 FlashAttention-V 集成到 llama.cpp 中的 ggml 中,并使用 gem5 和 Banana Pi BPI-F3 在 TinyLlama、Llama 3.2、Qwen2.5 和 Pythia-410M 上对其进行评估。在 Banana Pi BPI-F3 上,我们确认跨注意力头的循环重新排序和循环展开是有效的优化原则,可以通过较大的模型扩展性能增益,并且在短上下文和解码过程中最为明显。基于仿真的分析表明,在预填充中,FlashAttention-V 在 512 位 VL 下比标量 FlashAttention 实现了 22 倍至 42 倍的加速,并额外获得 2 倍至 2.5 倍的增益缩放至 64 通道和 4096 位 VL。在解码过程中,与标量 FlashAttention 相比,FlashAttention-V 使用 512 位向量长度实现了 8 倍至 11 倍的加速,并且由于单词元、内存限制执行,性能显示对向量宽度和通道计数的敏感性降低。我们进一步确定了 Q8_0 量化线性层中的结构瓶颈,这些瓶颈限制了长向量执行下的算术摊销,这在 RVV 和 Arm SVE 中是一致的,这表明当前的量化格式对长向量可扩展性构成了根本挑战。