文章目录
- FlashAttention与PageAttention的区别
- 设计目标
- 实现机制
- 性能特点
复习一下
FlashAttention与PageAttention的区别
FlashAttention和PageAttention是两种针对Transformer模型注意力机制的优化方法,主要区别体现在设计目标、实现方式及适用场景上:
设计目标
FlashAttention
通过减少GPU内存访问(HBM读写)来加速注意力计算,利用平铺(tiling)技术将计算分块,在SRAM中完成部分计算,避免频繁访问显存。核心目标是提升计算效率,降低显存占用。
PageAttention
专为处理长序列设计,通过分页管理注意力计算的键值(KV)缓存,类似操作系统内存分页机制。核心目标是解决长上下文场景下显存不足的问题,支持上下文窗口扩展。
实现机制
FlashAttention
- 采用融合内核(fused kernel)技术,将softmax与矩阵乘法合并计算
- 通过重计算(recomputation)避免中间结果存储
- 数学等价于标准注意力,无精度损失
PageAttention
- 将KV缓存划分为可动态加载的"页"
- 支持不连续存储和按需加载
- 引入块稀疏注意力模式,可选跳过不重要页的计算
性能特点
FlashAttention
- 训练场景优势明显:比标准注意力快2-4倍
- 显存占用与序列长度呈线性关系
- 适合常规长度序列(如≤8k)
PageAttention
- 推理场景更高效:支持百万token级上下文
- 显存占用可通过分页动态管理
- 适合超长文本生成、代码补全等场景