Flash Attention是将Q划分到所有SM block上。每个SM block上的Q,负责和所有K和所有V进行计算,得到对应的结果。期间,SM block彼此之间,不需要通信。

在prefill阶段,seqLength*batchSize*Heads足够多,所以每个SM block上有足够多的Query。

但是,在decoding阶段,因为Query的seqLength=1,且batchSize=1,因此SM block数目无法都利用上。

解决方法:

将K和V均分成几份,划分给SM block。缺点:最后需要将不同SM block上的中间结果,进行通信,进行归一化的softmax和结果Reduce。

动图:

大模型推理加速之Flash Decoding:更小子任务提升并行度 - 知乎

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐