文章预览
我的课程笔记,欢迎关注:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode 第12课,Flash Attention 课程笔记 这节课的演讲者也是之前 CUDA-MODE 课程笔记 第四课: PMPP 书的第4-5章笔记 这节课的演讲者,第四课的最后介绍了一下矩阵乘法的Tiling技术,最后还提到Tiling的经典应用就是Flash Attention。所以这一节课他来讲解下Flash Attention。 这张Slides讨论了为什么在某些计算操作中使用分块(Tiling)技术,并展示了内存层次结构。 Tiling(分块)的原因: 在矩阵乘法(Matmul)中,每个输出使用2n个输入(一共n^2个输出)。 每个输入被使用n次,如果每次都从主内存中naive地读取n次,会非常低效。 解决方案:尝试重用参数(try to reuse param)。 应用场景: 类似的情况也出现在卷积(Convolution)和FlashAttention等操作中。 内存层次结构(Memory Hierarchy)和特点:
………………………………