中等AttentionAttentionFlashAttention面试高频腾讯
FlashAttention 的核心思想是什么?它优化了什么?
9 0 0
参考答案
FlashAttention 是一种 IO 感知的精确注意力算法,核心是减少 GPU 显存层级间的数据搬运,而非减少计算量。 **要解决的问题**:标准注意力先算出完整的 S=QKᵀ(n×n 矩阵)写回 HBM,再读回来做 softmax,再算 PV。中间的 n×n 矩阵在长序列时既占显存(O(n²))又产生大量 HBM 读写。GPU 上 HBM 带宽远低于片上 SRAM,注意力是 memory-bound。 **核心手段**: 1. **Tiling(分块)**:把 Q、K、V 切成小块,逐块加载到 SRAM 计算,避免物化完整 n×n 矩阵。 2. **Online Softmax**:利用 softmax 的平移不变性,在分块遍历时动态维护每行的最大值 m 和归一化和 l,增量更新输出,得到与标准注意力完全一致的结果。 3. **重计算(反向)**:反向传播时不存中间矩阵,用保存的 m、l 重算,省显存。 **收益**:显存从 O(n²) 降到 O(n),HBM 读写大幅减少,长序列训练/推理显著加速。FlashAttention-2 优化了并行与工作划分;FlashAttention-3 在 Hopper 上支持 FP8 并用 TMA 做异步调度。
讨论区(0)
还没有评论,来做第一个发言的人吧